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='[Gold-6240|Gold-6140|75F3|7402]' unset LD_PRELOAD source /etc/profile.d/modules.sh module purge module load maxwell genesis/4.5.1 # some mpi settings export UCX_LOG_LEVEL=error 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: make sure to use only physical cores. Using -N $(( $(nproc) /2 )) will distribute processes evenly over all nodes involved.