GROMACS is a popular molecular dynamics package designed for biological macromolecules simulation. GROMACS offers high performances on x86, x86-64 and ia64 architectures thanks to its assembly-coded optimised routines that use the SSE, SSE2, 3DNow! and Altivec instruction sets.
Submit file examples
The following examples use GROMACS on Colosse, compiled in single precision (default option), with the Gnu and Intel compilers.
In addition to the parallel program mdrun_mpi, standard GROMACS tools (non parallel versions) are included in the modules on Colosse. You can, for instance, compile your directives with grompp when preparing your experiments.
GROMACS 4.5.4 performances on Colosse are shown in the following graphs. The GMXBench 3.0 GROMACS benchmark was used, and three systems were tested:
- PDDC, a phospholipids system,
- LZM, hen egg white lyzozyme,
- Poly-CH2, a carbon polymer.
For all systems tested here, the GCC executable offers better performances. The Intel executable, however, has an edge in serial tasks. For your experiments, we invite you to test both versions with a varied number of processes to optimise resource usage.
GROMACS performances are partially dependent on the Fast Fourier transform (FFT) routines used for calculating non-bonded interactions between atoms. The same is true of other molecular mechanics implementations. Many optimised FFT libraries are available on Calcul Québec supercomputers. For more details, refer to the.
Using GROMACS on Briarée
On the Briarée cluster at the Université de Montréal we've found that GROMACS 5.0 displays better performance when used in conjunction with HyperThreading, thus in taking advantage of all 24 logical cores of a compute node on Briarée. To use these additional logical cores you don't need to modify your script: you ask for 12 cores per node and then run GROMACS as usual with 12 MPI processes. These GROMACS MPI processes will create two OpenMP threads to use the two logical cores associated with each physical core whenever there is sufficient work. You are free to disable this hyperthreading by giving the environment variable OMP_NUM_THREADS the value 1 before running GROMACS in your script. We have also observed a clear performance improvement by ensuring that the MPI processes are pinned to a core, by using the option "-pin on" with GROMACS.