Benchmark / test report

Container name: Singularity.gromacs-2021.3-intel-2021a.localimage.sif

test script

#!/bin/bash
#SBATCH -N2
#SBATCH --ntasks-per-node=48
#SBATCH -J plcr-gromacs-cpu-test

PLCR=${PLCR:-/net/pr2/projects/plgrid/plggsoftware/containers}
CONT=${1:-Singularity.gromacs-2022-foss-2021b.localimage.sif}

echo "PLCR test: $SLURM_JOB_NAME"
echo "PLCR jobid: $SLURM_JOBID"
echo "PLCR path: $PLCR"

echo "Test performed on: "`date`
echo "Testing container: $CONT"
SHA=`dd bs=1M if=$PLCR/images/$CONT 2>/dev/null | sha256sum | cut -d' ' -f1`
echo "Container checksum: $SHA"

export I_MPI_PMI_LIBRARY=$PLCR/local/pmi2/libpmi2.so

cd $TMPDIR

wget -q https://ftp.gromacs.org/pub/benchmarks/water_GMX50_bare.tar.gz
tar xzf water_GMX50_bare.tar.gz
cp water-cut1.0_GMX50_bare/3072/* .

export GMX_MAXBACKUP=-1

time singularity -s run -B $I_MPI_PMI_LIBRARY -B $PWD:/host_pwd --pwd /host_pwd $PLCR/images/$CONT gmx grompp -f pme.mdp  -o bench.tpr                                                                   
time srun --mpi=pmix --cpu-bind=cores singularity -s run -B $I_MPI_PMI_LIBRARY -B $PWD:/host_pwd --pwd /host_pwd $PLCR/images/$CONT gmx_mpi mdrun -resethway -npme 0 -notunepme -noconfout -nsteps 1000 -v -s  bench.tpr                      
RC=$?
grep 'Performance:' $SLURM_SUBMIT_DIR/slurm-${SLURM_JOB_ID}.out | awk '{print $2}' > result

echo  "Test completed, rc=$RC, Performance:" $(cat result) "[ns/day]"
rm -rf $TMPDIR

test results

PLCR test: plcr-gromacs-cpu-test
PLCR jobid: 348042
PLCR path: /net/pr2/projects/plgrid/plggsoftware/containers
Test performed on: Mon Apr 4 14:09:10 CEST 2022
Testing container: Singularity.gromacs-2022-foss-2021b.localimage.sif
Container checksum: f42b5345ce2ca84abb728c378145ab0490f24a274980ba7299e4d3d4a4d42dfb
               :-) GROMACS - gmx grompp, 2022-EasyBuild_4.5.3 (-:

Executable:   /app/software/GROMACS/2022-foss-2021b/bin/gmx
Data prefix:  /app/software/GROMACS/2022-foss-2021b
Working dir:  /host_pwd
Command line:
  gmx grompp -f pme.mdp -o bench.tpr

Ignoring obsolete mdp entry 'title'
Ignoring obsolete mdp entry 'cpp'
Ignoring obsolete mdp entry 'ns_type'
Replacing old mdp entry 'nstxtcout' by 'nstxout-compressed'
Generating 1-4 interactions: fudge = 0.5

NOTE 1 [file unknown]:
  You are using constraints on all bonds, whereas the forcefield has been
  parametrized only with constraints involving hydrogen atoms. We suggest
  using constraints = h-bonds instead, this will also improve performance.

Number of degrees of freedom in T-Coupling group System is 6143997.00

There was 1 note

GROMACS reminds you: "All sorts of things can happen when you're open to new ideas and playing around with things." (Stephanie Kwolek, inventor of Kevlar)

Setting the LD random seed to -847385350

Generated 330891 of the 330891 non-bonded parameter combinations

Generated 330891 of the 330891 1-4 parameter combinations

Excluding 2 bonded neighbours molecule type 'SOL'

turning all bonds into constraints...

Excluding 2 bonded neighbours molecule type 'SOL'

Excluding 2 bonded neighbours molecule type 'SOL'

Excluding 2 bonded neighbours molecule type 'SOL'
Analysing residue names:
There are: 1024000      Water residues

The largest distance between excluded atoms is 0.165 nm

Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 300 K

Calculated rlist for 1x1 atom pair-list as 1.036 nm, buffer size 0.036 nm

Set rlist, assuming 4x4 atom pair-list, to 1.000 nm, buffer size 0.000 nm

Note that mdrun will redetermine rlist based on the actual pair-list setup
Calculating fourier grid dimensions for X Y Z
Using a fourier grid of 400x200x200, spacing 0.125 0.125 0.125

Estimate for the relative computational load of the PME mesh part: 0.34

This run will generate roughly 234 Mb of data

real    0m6.820s
user    0m5.637s
sys 0m0.943s
               :-) GROMACS - gmx mdrun, 2022-EasyBuild_4.5.3 (-:

Executable:   /app/software/GROMACS/2022-foss-2021b/bin/gmx_mpi
Data prefix:  /app/software/GROMACS/2022-foss-2021b
Working dir:  /host_pwd
Command line:
  gmx_mpi mdrun -resethway -npme 0 -notunepme -noconfout -nsteps 1000 -v -s bench.tpr

Reading file bench.tpr, VERSION 2022-EasyBuild_4.5.3 (single precision)
Overriding nsteps with value passed on the command line: 1000 steps, 2 ps
Changing nstlist from 10 to 40, rlist from 1 to 1.099


Using 96 MPI processes

Non-default thread affinity set, disabling internal thread affinity

Using 1 OpenMP thread per MPI process

starting mdrun 'Water'
1000 steps,      2.0 ps.
step 0
step 100, remaining wall clock time:    29 s          
imb F  3% step 200, remaining wall clock time:    25 s          
step 300, remaining wall clock time:    22 s          
imb F  2% step 400, remaining wall clock time:    19 s          

step 500: resetting all time and cycle counters
step 500, remaining wall clock time:    16 s          
imb F  2% step 600, remaining wall clock time:    12 s          
step 700, remaining wall clock time:     9 s          
imb F  3% step 800, remaining wall clock time:     6 s          
step 900, remaining wall clock time:     3 s          
imb F  2% step 1000, remaining wall clock time:     0 s          


Dynamic load balancing report:
 DLB was off during the run due to low measured imbalance.
 Average load imbalance: 2.5%.
 The balanceable part of the MD step is 52%, load imbalance is computed from this.
 Part of the total run time spent waiting due to load imbalance: 1.3%.


               Core t (s)   Wall t (s)        (%)
       Time:     1561.793       16.270     9599.5
                 (ns/day)    (hour/ns)
Performance:        5.321        4.510

GROMACS reminds you: "Philosophy of science is about as useful to scientists as ornithology is to birds." (Richard Feynman)


real    0m42.034s
user    0m0.022s
sys 0m0.023s
Test completed, rc=0, Performance: 5.321 [ns/day]