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:
Verzija | Implementacija | Modul | Napomena |
---|---|---|---|
5.1.4 | single precision multithread | gromacs/5.1.4 | Koristiti isključivo uz *mpisingle |
5.1.4 | double precision multithread | gromacs/5.1.4-double | Koristiti isključivo uz *mpisingle |
5.1.4 | single precision MPI | gromacs/5.1.4-mvapich22 | |
5.1.4 | double precision MPI | gromacs/5.1.4-mvapich22-double | |
2018.4 | single precision multithread | gromacs/2018.4 | Koristiti isključivo uz *mpisingle |
2018.4 | double precision multithread | gromacs/2018.4-double | Koristiti isključivo uz *mpisingle |
2018.4 | single precision MPI | gromacs/2018.4-mvapich22 | |
2018.4 | double precision MPI | gromacs/2018.4-mvapich22-double | |
2018.4 | single precision multithread + GPU | gromacs/2018.4-gpu | Koristiti isključivo uz gpusingle |
2018.4 | single precision MPI + GPU | gromacs/2018.4-mvapich2-gpu | |
2018.6 | single precision multithread + Plumed | gromacs/2018.6 | Koristiti isključivo uz *mpisingle |
2018.6 | double precision multithread + Plumed | gromacs/2018.6-double | Koristiti isključivo uz *mpisingle |
2018.6 | single precision MPI + Plumed | gromacs/2018.6-mvapich22 | |
2018.6 | double precision MPI + Plumed | gromacs/2018.6-mvapich22-double | |
2018.6 | single precision multithread + GPU + Plumed | gromacs/2018.6-gpu | Koristiti isključivo uz gpusingle |
2018.6 | single precision MPI + GPU + Plumed | gromacs/2018.6-mvapich2-gpu | |
2020.6 | single precision MPI + OpenMP+ Plumed | gromacs/2020.6 | |
2020.6 | double precision MPI +OpenMP + Plumed | gromacs/2020.6-double | |
2020.6 | single precision multithread + GPU + Plumed | gromacs/2020.6-gpu | Koristiti isključivo uz gpusingle |
2020.6 | single precision MPI + GPU + Plumed | gromacs/2020.6-mvapich22-gpu |
CPU verzije
Primjer korištenja višedretvene verzije:
#$ -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
Važno
Gromacs verzija 5.1.4 zahtijeva parametar "-nice 0", kod novijih verzija taj parametar nije potreban.
Primjer korištenja MPI verzije:
#$ -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:
#$ -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
Važno
Aplikacija u višedretvenoj izvedbi se mora pozivati s cuda-wrapper.sh!
Primjer korištenja MPI verzije:
#$ -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
Važ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
Važ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:
#$ -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
#$ -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:
#$ -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
Instalacija
CPU
Višedretvena verzija Gromacsa je prevedena s Intel 2019 i parametrima:
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
MPI verzija Gromacsa je preveden s Intel 2019 i MVAPICH 2.2 i parametrima:
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
GPU
Višedretvena verzija Gromacsa je prevedena s Intel 2018 i CUDA 10.0 i parametrima:
module load intel/2018 module load cuda/10-0 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" # 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/2018.4/intel-single-gpu/avx2 -DGMX_FFT_LIBRARY=mkl -DGMX_SIMD=AVX2_256 -DGMX_GPU=on" cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=OFF -D GMX_DOUBLE=OFF $DEFOPTS . # install make make install
MPI verzija Gromacsa je preveden s Intel 2018, MVAPICH 2.2 i CUDA 10.0 i parametrima:
module load mpi/mvapich2-intel2018-2.2-x86_64-cuda 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" # 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/2018.4/mvapich2-intel-2.2-gpu/avx2 -DGMX_FFT_LIBRARY=mkl -DGMX_SIMD=AVX2_256 -DGMX_GPU=on" cmake3 -D GMX_DEFAULT_SUFFIX=OFF -D GMX_MPI=ON -D GMX_DOUBLE=OFF $DEFOPTS . # install make make install