GROMACS je računalno-kemijska aplikacija za molekulsku dinamiku (MD), a prvenstveno se koristi za simulacije makromolekula.
GROMACS se prvenstveno temelji na klasičnoj mehanici, što znači da koristi jednadžbe gibanja klasične mehanike za izračunavanje kretanja molekule i njihovih segmenata.
MD simulacije mogu pružiti informacije o ponašanju i svojstvima molekula, poput njihovih konformacija, energija i interakcija s drugim molekulama.
GROMACS je aplikacija otvorenog koda, a podržava hibridnu paralelizaciju, MPI + OpenMP, kao i upotrebu grafičkih procesora koji značajno ubrzavaju MD izračune.
CPU | ||||||
---|---|---|---|---|---|---|
Verzija | Uključuje PLUMED | Modul | Supek | MPI implementacija (Supek) | Padobran | Paralelizacija |
2022.5 | v2.8.2 | scientific/gromacs/2022.5-gnu | Cray MPICH | MPI + OpenMP | ||
2023.1 | v2.9.0 |
| Cray MPICH | |||
2023.4 | - |
| Open MPI | |||
GPU | ||||||
Verzija | Uključuje PLUMED | Modul | Supek | MPI implementacija (Supek) | Padobran | Paralelizacija |
2022.5 | - |
| Cray MPICH | MPI + OpenMP | ||
2023.1 | - |
| Cray MPICH |
Podrazumijevano PBS ponašanje je „slobodno" razmještanje chunkova po slobodnim čvorovima. Cray MPICH Zbog aktualnog cray-pals buga, trenutno je ograničen broj poslova koji se mogu širiti van čvora kad koriste Cray MPICH. Ako Vaš posao prijeđe taj limit te proširi svoje MPI procese na druge čvorove, prekinut će se. Kako bi sigurno izbjegli bug, potrebno je sve MPI procese smjestiti na isti čvor. Najjednostavniji način je korištenjem opcije MPI pokretač za Cray MPICH verzije:
Open MPI U slučaju korištenja Open MPI-ja, moguće je izostaviti gore spomenutu pack opciju. MPI pokretač za Open MPI verzije:
|
GPU iskorištenje se u slučaju korištenja više grafičkih procesora kreće se do maksimalno 50% (kod korištenja 2 GPU-a) u većem broju testiranih primjera. Iz tog razloga, razmotrite korištenje jednog grafičkog procesora i više procesorskih jezgri. GPU iskorištenje se u slučaju korištenja 1 GPU + 8 CPU kreće i do 85%. |
Kad u zaglavlju PBS skripte definirate vrijednost varijable |
Aplikaciju možete dijeliti na razini MPI procesa. U primjeru niže, aplikacija će pokrenuti 32 MPI procesa.
#PBS -q cpu #PBS -l select=32:mem=400mb #PBS -l place=pack cd ${PBS_O_WORKDIR} module load scientific/gromacs/2022.5-gnu mpiexec gmx mdrun -pin on -v -deffnm md |
Ako aplikaciju želite dijeliti isključivo u OpenMP threadove, morate zatražiti jedan računalni čvor, budući da u ovom slučaju aplikacija radi s dijeljenom memorijom. U primjeru niže, aplikacija će se pokrenuti s 32 OpenMP threada.
#PBS -q cpu #PBS -l select=1:ncpus=32:mem=12gb cd ${PBS_O_WORKDIR} module load scientific/gromacs/2022.5-gnu gmx mdrun -pin on -v -deffnm md |
Budući da aplikacija podržava hibridnu paralelizaciju, MPI procese možete podijeliti na OpenMP threadove. U primjeru niže, aplikacija će stvoriti 8 MPI procesa, podijeljenih u 4 OpenMP threada.
GROMACS preporučuje između 2 i 8 threadova po MPI procesu. |
#PBS -q cpu #PBS -l select=8:ncpus=4:mem=2gb #PBS -l place=pack cd ${PBS_O_WORKDIR} module load scientific/gromacs/2022.5-gnu mpiexec -d ${OMP_NUM_THREADS} --cpu-bind depth gmx mdrun -pin on -v -deffnm md |
Aplikacija podržava rad s grafičkim procesorom, odnosno rad s više grafičkih procesora.
U primjeru niže, aplikacija će koristiti jedan grafički procesor te osam procesorskih jezgara.
#PBS -q gpu #PBS -l select=1:ngpus=1:ncpus=8:mem=12gb cd ${PBS_O_WORKDIR} module load scientific/gromacs/2022.5-cuda gmx mdrun -pin on -v -deffnm md |
Prilikom pozivanja aplikacije s mpiexec
, svaki MPI proces dodijeli se jednom grafičkom procesoru (putem varijable CUDA_VISIBLE_DEVICES
), a svaka OpenMP nit (putem varijable OMP_NUM_THREADS
) jednoj procesorskoj jezgri. U primjeru niže, aplikacija će koristiti dva grafička procesora te po četiri procesorske jezgre za svaki grafički procesor.
#PBS -q gpu #PBS -l select=2:ngpus=1:ncpus=4:mem=6gb #PBS -l place=pack cd ${PBS_O_WORKDIR} module load scientific/gromacs/2022.5-cuda mpiexec -d ${OMP_NUM_THREADS} --cpu-bind depth gmx mdrun -pin on -v -deffnm md |