Installation on Summit (OLCF)

Summit is a GPU cluster at the Oakridge Leadership Computing Facility (OLCF).

Each node has of 6 Nvidia V100 GPUs.

Installation of FBPIC

Preparing the Anaconda environment

First load the relevant modules:

module purge
module load gcc
module load fftw
module load python/3.7.0-anaconda3-5.3.0

Then create a new conda environment

conda create -n fbpic --clone base
source activate fbpic

Installation of FBPIC and its dependencies

  • Install the dependencies of fbpic

    conda install cython numba=0.49 cudatoolkit=9.0
    
  • Install pyfftw

    pip install pyfftw
    
  • Install fbpic

    pip install fbpic
    

Running simulations

In order to create a new simulation, create a new directory in $MEMBERWORK/ and copy your input script there:

mkdir $MEMBERWORK/<project_id>/<simulation name>
cp fbpic_script.py $MEMBERWORK/<project_id>/<simulation name>

Also, before launching any new job, please make sure that the conda environment fbpic is not loaded, for instance by using

source deactivate fbpic

Interactive jobs

In order to request one node for 20 minutes:

bsub -W 00:20 -nnodes 1 -P <account_number> -Is /bin/bash

Then cd to the directory where you prepared your input script and type

module purge
module load gcc
module load cuda/9.1.85
module load fftw
module load python/3.7.0-anaconda3-5.3.0
source activate fbpic

export CUPY_CACHE_DIR=$MEMBERWORK/<project_id>/.cupy/kernel_cache
export FBPIC_DISABLE_CACHING=1
export NUMBA_NUM_THREADS=1
export OMP_NUM_THREADS=1

jsrun -n 1 -a 1 -c 1 -g 1 python <fbpic_script.py>

where <project_id> should be replaced by your project account number.

Batch job

Create a new file named submission_script in the same directory as your input script. Within this new file, copy the following text (and replace the bracketed text by the proper values).

#!/bin/bash
#BSUB -J my_job
#BSUB -W <requestedTime>
#BSUB -nnodes <requestedNodes>
#BSUB -P <accountNumber>

module purge
module load gcc
module load cuda/9.1.85
module load fftw
module load python/3.7.0-anaconda3-5.3.0
source activate fbpic

export CUPY_CACHE_DIR=$MEMBERWORK/<project_id>/.cupy/kernel_cache
export FBPIC_ENABLE_GPUDIRECT=0
export FBPIC_DISABLE_CACHING=1
export NUMBA_NUM_THREADS=1
export OMP_NUM_THREADS=1

jsrun -n <requestedMPIRanks> -a 1 -c 1 -g 1 --smpiargs="-gpu" python fbpic_script.py > cpu.log

where <project_id> should be replaced by your project account number, and <requestedNodes and <requestedMPIRanks> should be replaced by the number of nodes and MPI ranks (use 6 MPI ranks per Summit node).

Then run:

bsub submission_script

Note

Note that, in the above script, --smpiargs="-gpu"` is in fact only needed when ``export FBPIC_ENABLE_GPUDIRECT=1, i.e. when attempting to use the cuda-aware MPI.

Use bjobs to monitor the job.