...
Furthermore, we recommend keeping one CPU core free per process for the so-called communication thread. It will be used to advance MPI communication and I/O instead. To do so, you will need to set some environment variables, similar to the following snippet:
Code Block |
---|
SEISSOL_COMMTHREAD=1 THREADS_PER_TASK=16 # TODO: set CPU_HYPERTHREADING=2 #TODO: set NUM_CORES=$(expr $CPUS_PER_TASK / $CPU_HYPERTHREADING) NUM_COMPUTE_CORES=$(expr $NUM_CORES - 1$SEISSOL_COMMTHREAD) export OMP_NUM_THREADS="$(expr $NUM_COMPUTE_CORES \* $CPU_HYPERTHREADING)" export OMP_PLACES="cores($NUM_COMPUTE_CORES)" export PROC_BIND=spread export MP_SINGLE_THREAD=no unset KMP_AFFINITY |
Alternatively, you can disable the communication thread by setting SEISSOL_COMMTHREAD=0
in case you have issues, but it’s not recommended.
Tasks and Submissions
Run the application on 4 CPU nodes and submit the results
...