A CUDA-implementation of linear-scaling quantum transport methods
An efficient implementation of linear scaling quantum transport (LSQT) methods which supports both pure CPU and GPU+CPU computations. This code can be used to obtain charge and spin transport properties of large systems described by a real-space tight-binding Hamiltonian.
The major features of GPUQT have been integrated into the more general GPUMD package (https://github.com/brucefan1983/GPUMD). Within the molecular dynamics (MD) framework, one can combine the electron and ion motions to incorporate electron-ion scattering, which is absent from the current package. The current GPUQT package will not be further developed.
g++
compiler and the make
program.CUDA
toolkit. I have tested the GPU version on both Windows (requires the cl.exe
compiler from MSVC and a make.exe
program which can be downloaded here) and Linux systems. src
and make -f makefile.cpu
to build the CPU version. This will produce an executable called lsqt_cpu
in the src
folder.make -f makefile.gpu
to build the GPU version. This will produce an executable called lsqt_gpu
in the src
folder.Edit the file examples/input.txt
to include the paths (relative or absolute) of the working directories containing the examples you want to run.
Go to the main folder where you can see the src
folder and type one of the following commands:
src/lsqt_gpu examples/input.txt
src/lsqt_cpu examples/input.txt
The results will be written into the output files (with suffix .out
) in the working directories specified in examples/input.txt
. If you run a simulation multiple times, new data will be appended to the existing output files.
Go to the working directories and run the MATLAB
scripts we have prepared. After getting familiar with the output files, one can analyze the results using her/his favorite computer language(s).
Zheyong Fan (Aalto University; brucenju(at)gmail.com; active developer): Wrote the first working version of this code.
Ville Vierimaa (Aalto University; not an active developer any more): Changed the code from the original C style to the current C++
style and made many other improvements.
Ari Harju (Aalto University; not an active developer any more): The supervisor of this project.
The most original paper on this method is:
The major reference for the CUDA implementation is
This code was first published along with the following paper:
There is a comprehensive review article discussing the linear scaling quantum transport methods: