How to run the code¶
Once installed (see Installation), FBPIC is available as a Python module on your system. Thus, a simulation is setup by creating a Python script that imports and uses FBPIC’s functionalities.
You can download examples of FBPIC scripts below (which you can then modify to suit your needs):
- Standard simulation of laser-wakefield acceleration:
- Laser-wakefield acceleration with ionization:
- Boosted-frame simulation of laser-wakefield acceleration:
The different FBPIC objects that are used in the above simulation scripts are defined in the section API reference.
Running the simulation¶
The simulation is then run by typing
fbpic_script.py should be replaced by the name of your
Python script: either
boosted_frame_script.py for the above examples.
When running on CPU, multi-threading is enabled by default, and the default number of threads is the number of cores on your system. You can modify this with environment variables:
- To modify the number of threads (e.g. set it to 8 threads):
export MKL_NUM_THREADS=8 export NUMBA_NUM_THREADS=8 python fbpic_script.py
- To disable multi-threading altogether (except for the FFT and DHT):
export FBPIC_DISABLE_THREADING=1 python fbpic_script.py
When running on GPU with MPI domain decomposition, it is possible to enable the CUDA GPUDirect technology. GPUDirect enables direct communication of CUDA device arrays between GPUs over MPI without explicitly copying the data to CPU first, resulting in reduced latencies and increased bandwidth. As this feature requires a CUDA-aware MPI implementation that supports GPUDirect, it is disabled by default and should be used with care.
To activate this feature, the user needs to set the following environment variable:
Visualizing the simulation results¶
conda install -c rlehe openpmd_viewer
And then type
and follow the instructions in the notebook that pops up. (NB: the notebook only shows some of the capabilities of the openPMD-viewer. To learn more, see the tutorial notebook on the Github repository of openPMD-viewer).