Developer: Tom Gade
Acknowlegements: Thanks to Alex Gullickson who contributed to the multi-GPU functionality.
MEPT is a particle tracing simulation whose objective is to reproduce electron distributions under the influence of a number of physical phenomena (mirror force, quasi-static potential structures, Alfven waves, etc) gathered by FAST. It is written with C++/CUDA, and OpenMP.
MEPT runs on Windows and Linux. As it is dependent on CUDA, it requires an NVIDIA graphics card with up-to-date(-ish, at least) drivers, as well as the CUDA libraries installed. No other external dependencies for C++ exist. NOTE: This does not compile properly on the gpulab machines due to gcc and nvcc version issues. This is due to the use of the C++ filesystem library. As a result of using this, the code must be compiled via a version of gcc (Linux) that supports C++17 and the filesystem library. GCC 9 and up should work fine, but 10 is likely best. Additionally, CUDA 11.1 was used, although 10 and up should work fine.
MEPT can be run on single or multiple GPU systems. Every CUDA capable GPU on the system will be utilized unless limited by the environment variable
```
CUDA_DEVICES_VISIBLE
```
On Windows, this can be set from powershell immediately prior to running the program. From the bin folder:
```
$Env:CUDA_VISIBLE_DEVICES="0,1"; ./MEPT
Note: the desired devices can be set through this flag. e.g. using only 0 or only 1, etc
Observe the "" if using a comma to separate devices
```
On Linux, this is implemented by typing
```
CUDA_VISIBLE_DEVICES=0,1 ./MEPT
Note: the same note above applies
```
CUDA (see above - Compatibility)
Unzip the zip file using your preferred zip file program.
Open the Visual Studio solution (MEPT/vs/MEPT.sln
), ensure Release
and x64
is selected, and in the toolbar click Build -> Build Solution
.
chmod 777 ./configure
./configure
make
Note: gcc compatible with the -std=c++17
flag is required.
From a terminal in %WHEREVER%/MEPT
cd bin
./MEPT
(from MEPT)
cd bin
./MEPT
The program will create appropriate directories and save the data after execution in the folder _dataout. The characteristics of the simulation (BField model, EField model, etc) will be printed to the logfile contained within the data folder.