Summary
Source: https://github.com/UKFELs/Puffin
License: BSD 3-Clause License
Path: /software/puffin/<version>/
Documentation: https://github.com/UKFELs/Puffin/blob/master/doc/manual.pdf (2018)
Citations: LT Campbell and BWJ McNeil, Physics of Plasmas 19, 093119 (2012) IPAC 2018
Puffin (Parallel Unaveraged Fel INtegrator) simulates a Free Electron Laser (FEL). Puffin is a massively parallel numerical solver for an unaveraged, 3D FEL system of equations, and is written in Fortran 90, using MPI and OpenMP.
Using puffin:
Simply load the corresponding module:
module load maxwell puffin which puffin /software/puffin/1.9.0.2/bin/puffin # the module also defines some environment variables to simplify the commands. Simply unset if disturbing: OMPI_MCA_pml=ucx OMPI_MCA_opal_warn_on_missing_libcuda=0 UCX_LOG_LEVEL=error
Running puffin batch-jobs on Maxwell
puffin is a hybrid OPENMP/MPI application. As it turns out, performance is best when using a small number of MPI processes (4) in favor of OPENMP threads.
A sample batch script:
#!/bin/bash #SBATCH --partition=upex #SBATCH --time=4-00:00:00 #SBATCH --nodes=4 #SBATCH --constraint='[7542|Gold-6140|Gold-6240]' #SBATCH --output=puffin-%j.out #SBATCH --job-name=puffin unset LD_PRELOAD source /etc/profile.d/modules.sh module load maxwell puffin mpirun -N 4 puffin puffin.in
Simple benchmark
a non-representative test-run indicates, that a number of 4 MPI processes per node is most efficient - unless running an unrealistic small number of periods.
Time elapsed for # of MPI processes | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#nodes | nPeriiods | 1 | 2 | 4 | 8 | 16 | 32 | #nodes | 1 | 2 | 4 | 8 | 16 | 32 |
4 | 1 | 508 | 390 | 337 | 228 | 235 | 336 | 8 | 389 | 318 | 201 | 166 | 200 | 313 |
2 | 656 | 475 | 408 | 319 | 381 | 604 | 483 | 379 | 258 | 249 | 340 | 587 | ||
5 | 1079 | 728 | 624 | 590 | 809 | 1388 | 735 | 578 | 447 | 487 | 752 | 1355 | ||
10 | 1789 | 1146 | 976 | 1021 | 1497 | 2654 | 1166 | 820 | 719 | 858 | 1409 | 2587 | ||
20 | 3218 | 2013 | 1688 | 1907 | 2889 | 5179 | 2042 | 1403 | 1288 | 1631 | 2725 | 5031 |