Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: + v2023 (CPU + GPU)

GROMACS je paket za izvođenje simulacija dinamike molekula, npr. simulacija Newtonovih jednadžbi gibanja sistema s velikim brojem čestica (od nekoliko tisuća, pa do više milijuna). Primarno je dizajniran za biokemijske molekule kao što su proteini, lipidi i nukleinske kiseline koje imaju velik broj kompliciranih vezanih interakcija, ali s obzirom da je GROMACS iznimno brz pri računanju nevezanih interakcija, mnogi ga koriste i za istraživanje ne bioloških sistema tipa polimera.

GROMACS podržava sve tipične algoritme očekivane kod implementacije dinamike molekula ( više detalja u priručniku), ali pruža iznimno visoke performanse u usporedbi s drugim paketima. Paralelizam se postiže koristeći kombinirajući OpenMPI i OpenMP.

Korištenje

Na klasteru su instalirane varijante programskog paketa Gromacs u višedretvenoj i MPI izvedbi za CPU (klasični procesori) i GPU (grafički procesori).

Dostupne verzije su:

VerzijaImplementacijaModulNapomena
5.1.4single precision multithreadgromacs/5.1.4Koristiti isključivo uz *mpisingle
5.1.4double precision multithreadgromacs/5.1.4-doubleKoristiti isključivo uz *mpisingle
5.1.4single precision MPIgromacs/5.1.4-mvapich22
5.1.4double precision MPIgromacs/5.1.4-mvapich22-double
2018.4single precision multithreadgromacs/2018.4Koristiti isključivo uz *mpisingle
2018.4double precision multithreadgromacs/2018.4-doubleKoristiti isključivo uz *mpisingle
2018.4single precision MPIgromacs/2018.4-mvapich22
2018.4double precision MPIgromacs/2018.4-mvapich22-double
2018.4single precision multithread + GPUgromacs/2018.4-gpuKoristiti isključivo uz gpusingle
2018.4single precision MPI + GPUgromacs/2018.4-mvapich2-gpu
2018.6single precision multithread + Plumedgromacs/2018.6Koristiti isključivo uz *mpisingle
2018.6double precision multithread + Plumedgromacs/2018.6-doubleKoristiti isključivo uz *mpisingle
2018.6single precision MPI + Plumedgromacs/2018.6-mvapich22
2018.6double precision MPI + Plumedgromacs/2018.6-mvapich22-double
2018.6single precision multithread + GPU + Plumedgromacs/2018.6-gpuKoristiti isključivo uz gpusingle
2018.6single precision MPI + GPU + Plumedgromacs/2018.6-mvapich2-gpu
2020.6single precision MPI + OpenMP+ Plumedgromacs/2020.6
2020.6double precision MPI +OpenMP + Plumedgromacs/2020.6-double
2020.6single precision multithread + GPU + Plumedgromacs/2020.6-gpuKoristiti isključivo uz gpusingle
2020.6single precision MPI + GPU + Plumedgromacs/2020.6-mvapich22-gpu
2021.4mixed precision MPI + OpenMP + Plumedgromacs/2021.4-mvapich22
2021.4double precision MPI + OpenMP + Plumedgromacs/2021.4-mvapich22-double
2021.4mixed precision multithread + GPU + Plumedgromacs/2021.4-gpuKoristiti isključivo uz gpusingle
2021.4mixed precision MPI + GPU + Plumedgromacs/2021.4-mvapich22-gpu
2021.4mixed precision MPI + Plumed (2.8.0, svi moduli)gromacs/2021.4-mvapich2-fullplumed
2021.4mixed precision MPI + GPU + Plumed (2.8.0, svi moduli)gromacs/2021.4-mvapich2-gpu-fullplumed
2022mixed precision MPI + OpenMPgromacs/2022
2022mixed precision multithread + GPUgromacs/2022-gpuKoristiti isključivo uz gpusingle
2022mixed precision MPI + GPUgromacs/2022-mvapich22
2023mixed precision MPI + OpenMPgromacs/2023
2023mixed precision MPI + GPUgromacs/2023-gpu

CPU verzije

Primjer korištenja višedretvene Primjer korištenja multithread verzije:

Code Block
#$ -pe *mpisingle 8

module load gromacs/5.1.4
gmx mdrun -nt $NSLOTS -nice 0 -v -c conf30.gro -s topol30.tpr -px pullx30.xvg -pf pullf30.xvg -g md30.log -e ener30.edr -x traj30.xtc -cpi state.cpt -append 


Warning
titleVažno

Gromacs verzija 5.1.4 zahtijeva parametar "-nice 0", kod novijih verzija taj parametar nije potreban.


Warning

OBAVEZNO koristiti uz mpisingle, te ne širiti proces na više od 16 jezgri

...

titleVažno

Ukoliko neki od novijih CPU Gromacs module-a:

  • gromacs/2020.6
  • gromacs/2021.4-mvapich22
  • gromacs/2022

koristite u *mpisingle paralelnom okruženju, broj jezgri zadajete korištenjem zastavice -ntomp:

Code Block
module
#$ 
load intel export CC=icc export CXX=icc export F77=ifort export F90=ifort export FC=ifort export CFLAGS="-O3 -I/opt/intel/mkl/include/intel64/ilp64 -I/opt/intel/mkl/include -I/opt/intel/mkl/include/fftw" export LIBS="-O3 /opt/intel/mkl/lib/intel64/libmkl_blas95_ilp64.a /opt/intel/mkl/lib/intel64/libmkl_lapack95_ilp64.a -L/opt/intel/mkl/lib/intel64 -lmkl_scalapack_ilp64 -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_ilp64 -lpthread -lm -ldl" # avx single precision export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/intel-single/avx -DGMX_FFT_LIBRARY=mkl -DGMX_SIMD=AVX_256 -DGMX_GPU=off" cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=OFF -D GMX_DOUBLE=OFF $DEFOPTS . # avx2 single precision export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/intel-single/avx2 -DGMX_FFT_LIBRARY=mkl -DGMX_GPU=off" cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=OFF -D GMX_DOUBLE=OFF $DEFOPTS . # avx double precision export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/intel-double/avx -DGMX_FFT_LIBRARY=mkl -DGMX_SIMD=AVX_256 -DGMX_GPU=off" cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=OFF -D GMX_DOUBLE=ON $DEFOPTS . # avx2 double precision export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/intel-double/avx2 -DGMX_FFT_LIBRARY=mkl -DGMX_GPU=off" cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=OFF -D GMX_DOUBLE=ON $DEFOPTS . # install make make install

Gromacs MPI je preveden s Intel 2019 i MVAPICH 2.2 i parametrima:

-pe *mpisingle 8

module load gromacs/2021.4-mvapich22
gmx mdrun -ntomp $NSLOTS -v -c conf30.gro -s topol30.tpr -px pullx30.xvg -pf pullf30.xvg -g md30.log -e ener30.edr -x traj30.xtc -cpi state.cpt -append


Primjer korištenja MPI verzije:

Code Block
#$ -pe *mpifull 56

module load gromacs/2018.4
mpirun_rsh -np $NSLOTS -hostfile $TMPDIR/machines -export-all gmx mdrun -ntomp 1 -v -c conf30.gro -s topol30.tpr -px pullx30.xvg -pf pullf30.xvg -g md30.log -e ener30.edr -x traj30.xtc -cpi state.cpt -append 

GPU verzije

Primjer korištenja višedretvene verzije:

Code Block
#$ -pe gpusingle 4

module load gromacs/2018.4-gpu
cuda-wrapper.sh gmx mdrun -nt $NSLOTS -v -c conf30.gro -s topol30.tpr -px pullx30.xvg -pf pullf30.xvg -g md30.log -e ener30.edr -x traj30.xtc -cpi state.cpt -append 


Warning
titleVažno

Aplikacija u višedretvenoj izvedbi se mora pozivati s cuda-wrapper.sh!

Primjer korištenja MPI verzije:

Code Block
#$ -pe *gpu 8

module load gromacs/2018.4-mvapich22-gpu
mvapich-wrapper.sh gmx mdrun -ntomp 1 -v -c conf30.gro -s topol30.tpr -px pullx30.xvg -pf pullf30.xvg -g md30.log -e ener30.edr -x traj30.xtc -cpi state.cpt -append 


Warning
titleVažno

Aplikacija u MPI izvedbi se mora pozivati s mvapich-wrapper.sh!

Korištenje više procesorskih jezgri

Ukoliko je potrebno, moguće je zatražiti više procesorskih jezgri, korištenjem atributa cores.

BITNO:

  • navedeni broj se odnosi na broj procesorskih jezgri po zahtijevanom grafičkom procesoru

Warning
titleVažno

Aplikacija koja koristi više procesorskih jezgri se mora pozivati s cuda-wrapper-nopin.sh, odnosno mvapich-wrapper-nopin.sh!

Primjeri korištenja višedretvene verzije:

Code Block
#$ -N gromacs-cpugpu
#$ -pe gpusingle 2
#$ -l cores=9
#$ -cwd

module load gromacs/2018.4-gpu

cuda-wrapper-nopin.sh gmx mdrun -ntmpi $NSLOTS -ntomp 9 -v -s topol32.tpr -x traj.xtc -cpi state.cpt -append -c conf32.gro


Code Block
#$ -N gromacs-cpugpu
#$ -pe gpusingle 3
#$ -l cores=6
#$ -cwd

module load gromacs/2018.4-gpu

cuda-wrapper-nopin.sh gmx mdrun -ntmpi $NSLOTS -ntomp 6 -v -s topol32.tpr -x traj.xtc -cpi state.cpt -append -c conf32.gro

Primjer korištenja MPI verzije:

Code Block
#$ -N gromacs-cpugpu
#$ -pe gpu 3
#$ -l cores=6
#$ -cwd

module load gromacs/2018.4-mvapich22-gpu

mvapich-wrapper-nopin.sh gmx mdrun -ntomp 6 -v -s topol32.tpr -x traj.xtc -cpi state.cpt -append -c conf32.gro
Code Block
module load mpi/mvapich2-intel-2.2-x86_64
export CC=mpicc
export CXX=mpicxx
export F77=mpif77
export F90=mpif90
export FC=mpif90
export CFLAGS="-O3 -I/opt/intel/mkl/include/intel64/ilp64 -I/opt/intel/mkl/include -I/opt/intel/mkl/include/fftw"
export LIBS="-O3 /opt/intel/mkl/lib/intel64/libmkl_blas95_ilp64.a /opt/intel/mkl/lib/intel64/libmkl_lapack95_ilp64.a -L/opt/intel/mkl/lib/intel64 -lmkl_scalapack_ilp64 -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_ilp64 -lpthread -lm -ldl"
# avx single precision
export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/mvapich2-intel-2.2/avx -DGMX_FFT_LIBRARY=mkl -DGMX_SIMD=AVX_256 -DGMX_GPU=off"
cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=ON -D GMX_DOUBLE=OFF $DEFOPTS .
# avx2 single precision
export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/mvapich2-intel-2.2/avx2 -DGMX_FFT_LIBRARY=mkl -DGMX_GPU=off"
cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=ON -D GMX_DOUBLE=OFF $DEFOPTS .
# avx double precision
export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/mvapich2-intel-2.2-double/avx -DGMX_FFT_LIBRARY=mkl -DGMX_SIMD=AVX_256 -DGMX_GPU=off"
cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=ON -D GMX_DOUBLE=ON $DEFOPTS .
# avx2 double precision
export DEFOPTS="-DCMAKE_SKIP_RPATH:BOOL=ON -DCMAKE_SKIP_BUILD_RPATH:BOOL=ON -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/apps/gromacs/5.1.4/mvapich2-intel-2.2-double/avx2 -DGMX_FFT_LIBRARY=mkl -DGMX_GPU=off"
cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=ON -D GMX_DOUBLE=ON $DEFOPTS .
# install
make
make install