Environment Variables¶
SeisSol can be tuned with several environment variables:
Output¶
The wave field and fault output use the XdmfWriter. Tuning variables for the XdmfWriter are listed in the corresponding wiki.
Asynchronous Output¶
In addition to the variables in SeisSol, the ASYNC library provides some tuning variables listed in the wiki.
Typical example¶
We want to run a 130 nodes job. We dedicate 2 nodes for writing the asynchronous outputs, the remaining 128 nodes for computing. We then use a mesh partitioned in 128 regions. In our batch file, we write the following environment variables:
export ASYNC_MODE=MPI
export ASYNC_MPI_COPY=1
export ASYNC_GROUP_SIZE=64
export XDMFWRITER_ALIGNMENT=8388608
export XDMFWRITER_BLOCK_SIZE=8388608
Note that in the current implementation, at least 2 output nodes have to be used.
Checkpointing¶
Some environment variables related to checkpointing are described in the Checkpointing section.
Optimal environment variables on SuperMuc¶
NG¶
On NG, we recommend using SeisSol with asyn output in thread mode. That is SeisSol should be compiled with commThread=’yes’, and then run with the environment variables proposed below. Also, we recommend using hyperthreading capabilities (that is using 96 CPUs instead of 48. 2 threads out of 96 are used as communication threads). Here are some proposed environment variables, to be added prior to invoking SeisSol in your batch file:
#SBATCH --nodes=
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=96
export MP_SINGLE_THREAD=no
unset KMP_AFFINITY
export OMP_NUM_THREADS=94
export OMP_PLACES="cores(47)"
export XDMFWRITER_ALIGNMENT=8388608
export XDMFWRITER_BLOCK_SIZE=8388608
export SC_CHECKPOINT_ALIGNMENT=8388608
export SEISSOL_CHECKPOINT_ALIGNMENT=8388608
export SEISSOL_CHECKPOINT_DIRECT=1
export ASYNC_MODE=THREAD
export ASYNC_BUFFER_ALIGNMENT=8388608
Phase 2¶
For order up to 5 (included)¶
export MP_SINGLE_THREAD=no
export OMP_NUM_THREADS=28
export MP_TASK_AFFINITY=core:$OMP_NUM_THREADS
SeisSol has to be compiled with commThread =’no’.
For higher orders¶
Add the following lines prior to invoking SeisSol in your batch file (similarly with NG):
export MP_SINGLE_THREAD=no
unset KMP_AFFINITY
export OMP_NUM_THREADS=54
export OMP_PLACES="cores(27)"
export XDMFWRITER_ALIGNMENT=8388608
export XDMFWRITER_BLOCK_SIZE=8388608
export SC_CHECKPOINT_ALIGNMENT=8388608
export SEISSOL_CHECKPOINT_ALIGNMENT=8388608
export SEISSOL_CHECKPOINT_DIRECT=1
export ASYNC_MODE=THREAD
export ASYNC_BUFFER_ALIGNMENT=8388608
SeisSol has to be compiled with commThread=’yes’.