Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

  1. Run the application on 4 CPU nodes and submit the results

...