genesis¶
Summary
Source: http://genesis.web.psi.ch/aboutgenesis.html
License: unknown
Path: /software/genesis/<version> (on Maxwell only)
Documentation: http://genesis.web.psi.ch/Manual/quickstart.html
GENESIS 1.3 is a time-dependent three-dimensional FEL code. It is focused to simulate single-pass free-electron lasers, both FEL amplifier and SASE FEL, although the flexible input can be used to easily extend the capacity of GENESIS 1.3 to cover FEL oscillators or multistage setups.
Using genesis¶
To initialize the environment use the module command:
[max]% xwhich genesis
Provides by module(s)
... module load maxwell genesis/4.0.0; which genesis: /software/genesis/4.0.0/genesis
... module load maxwell genesis/2.0; which genesis: /software/genesis/2.0/genesis
... module load maxwell genesis/3.2.2; which genesis: /software/genesis/3.2.2/genesis
... module load maxwell genesis/4.5.1 which genesis: /software/genesis/4.5.1/genesis
Documentation: https://confluence.desy.de/display/IS/genesis
URL: http://genesis.web.psi.ch/
Manual: http://genesis.web.psi.ch/Manual/parameter.html
License: unknown
Problems with old MPI versions
The combination of old mpi (v1.10), mpiio and beegfs is not working properly, at least not on "modern" hardware. Since you will be hardly able to avoid mpiio or beegfs you will need to get rid of the old mpi, means recompile with e.g. openmpi3 or openmpi4.
There is a genesis version available via module load maxwell genesis/4.5.1 which was compiled against openmpi4 (/software/openmpi/4.0.3).
#!/bin/bash
#SBATCH --partition=allcpu
#SBATCH --constraint='[9374F|9554|75F3|7542|Gold-6240|7402|Gold-6140}'
# for maxcpu: --constraint='[9554|9534|75F3|7402]'
#SBATCH --time=04:00:00
#SBATCH --nodes=8
#
unset LD_PRELOAD
source /etc/profile.d/modules.sh
module purge
module load maxwell genesis/4.5.1
# MCA paramaters
export OMPI_MCA_btl=^openib,uct,ofi
export OMPI_MCA_mtl=^ofi
export OMPI_MCA_pml=ucx
export OMPI_MCA_opal_warn_on_missing_libcuda=0
rm -f *out.h5 #just to make sure output files don't exist
mpirun -N $(( $(nproc) /2 )) gencore OK.in
Note: Make sure to set constraints so that all nodes have identical CPUs at least. The choice of constraints depends on the partitions you intend to use. For example
sinfo -p maxcpu,short,exfel,xfel-sim -o '%n %f'
Will list all nodes for the partitions specified together with the corresponding features.
Note: it's usually better to only use physical cores. Using -N $(( $(nproc) /2 )) will distribute processes evenly over all nodes involved.
Note: when getting error messages like "system limit exceeded on number of pipes use in the batch script
ulimit -n 4096 # 131072 is the hard limit
before the mpirun command.