Opis
GAMESS (General Atomic and Molecular Electronic Structure System) je ab initio računalno-kemijska aplikacija opće namjene te posjeduje sve uobičajene QM/MM metode.
GAMESS je otvorenog koda, a koristi MPI paralelizaciju. Određeni izračuni dopuštaju i OpenMP (threaded) paralelizaciju.
GAMESS se na računalnom klasteru Supek pokreće prilagođenom rungms.mpi
skriptom.
Pravilno pokretanje GAMESS-a zahtjeva dobro razumijevanje PBS varijabli, odnosno načina kako se dodjeljuju resursi.
GAMESS zahtjeva da prilikom paralelizacije na svakom čvoru ima jednak i paran broj MPI procesa. Naravno, to znači da možete koristiti i samo jedan računalni čvor.
Verzije
Verzija | Modul | Podrška | Paralelizacija | Prevodioc | Knjižnice | Supek | Padobran |
---|---|---|---|---|---|---|---|
September 30, 2022 R2 Public Release | scientific/gamess/22.09 | CPU | MPI + OpenMP | Cray | Cray |
Službena dokumentacija
PBS varijable - resursi
#PBS -l select=4:mpiprocs=4:ncpus=4 #PBS -l place=scatter
mpiprocs
i ncpus
definirani su po select
-u, odnosno po tzv. chunku (komadu čvora).ncpus predstavlja broj zatraženih CPU jezgara po jednom selectu. To znači da je ukupan broj zatraženih CPU jezgara jednak select×ncpus
.
Ako nije eksplicitno definiran, podrazumijeva se ncpus=1
.
mpiprocs predstavlja broj MPI procesa po jednom selectu. To znači da je ukupan broj MPI procesa jednak select×mpiprocs
.
Za svaki definirani select
, u datoteku PBS_NODEFILE
zapisuje se po select×mpiprocs
hostname-ova, odnosno radnih čvorova (čiji je to komad). Koji će to biti čvorovi, ovisi o "raspodjeli" chunkova, odnosno selectova:
place=scatter
će svaki chunk smjestiti na drugi čvor.place=pack
će svaki chunk smjestiti na isti čvor.place=free
će chunkove smjestiti na one čvorove koji su slobodni, bez konkretne pravilnosti.
Za svaki zapisani hostname, MPI pokretač mpiexec
će pokrenuti će po jedan MPI proces.
Ako nije eksplicitno definiran, podrazmijeva se mpiprocs=1
.
Kako bi se za svaki MPI proces dodijelila po jedna CPU jezgra, nužno je da su vrijednosti ncpus i mpiprocs iste.
OpenMP za svoju varijablu OMP_NUM_THREADS
preuzima (podrazumijeva) vrijednost ncpus
.
Ako ne koristite OpenMP, nužno je u skripti dodatno definirati i export OMP_NUM_THREADS=1
, kako bi se pregazila podrazumijevana vrijednost.
PBS primjeri
U nadolazećim primjerima pokazat će se kako različito definirane select
i mpiprocs
varijable utječu na sadržaj PBS_NODEFILE
datoteke.
Kako je ranije objašnjeno, MPI pokretač mpiexec
čita sadržaj PBS_NODEFILE
datoteke i za svaku liniju (hostname) pokreće po jedan MPI proces.
1. primjer
#PBS -l select=4:mpiprocs=2 #PBS -l place=scatter
x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b1n0.hsn.hpc.srce.hr x8000c0s0b1n0.hsn.hpc.srce.hr x8000c0s1b0n0.hsn.hpc.srce.hr x8000c0s1b0n0.hsn.hpc.srce.hr x8000c0s1b0n1.hsn.hpc.srce.hr x8000c0s1b0n1.hsn.hpc.srce.hr
U gore prikazanoj PBS_NODEFILE
datoteci možemo uočiti 4 jedinstvena hostname-a (select=4, place=scatter
) od kojih se svaki ponavlja 2 puta (mpiprocs=2
).
2. primjer
#PBS -l select=4:mpiprocs=2 #PBS -l place=pack
x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr
U gore prikazanoj PBS_NODEFILE
datoteci možemo uočiti 8 istih hostname-ova, nastalih kao umnožak 4 chunka s istog čvora (select=4, place=scatter
) i 2 MPI procesa po chunk-u (mpiprocs=2
).
3. primjer
#PBS -l select=1:mpiprocs=8 #PBS -l place=pack
x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr
U gore prikazanoj PBS_NODEFILE
datoteci možemo uočiti isti rezultat kao u 2. primjeru.
4. primjer
#PBS -l select=8 #PBS -l place=pack
x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr x8000c0s0b0n1.hsn.hpc.srce.hr
U gore prikazanoj PBS_NODEFILE
možemo uočiti isti rezultat kao u prethodna dva primjera, budući da se podrazumijeva mpiprocs=1
.
GAMESS primjeri
U nadolazećim primjerima pokazat će se različiti načini pokretanja GAMESS-a.
Ulaznu datoteku input.inp
možete kopirati iz code block-a niže.
16 MPI procesa: 16 MPI procesa × 1 čvor
#PBS -q cpu #PBS -l select=1:mpiprocs=16:ncpus=16 export OMP_NUM_THREADS=1 cd ${PBS_O_WORKDIR} module load scientific/gamess/22.09 rungms.mpi input.inp
16 MPI procesa: 4 MPI procesa × 4 čvora
#PBS -q cpu #PBS -l select=4:mpiprocs=4:ncpus=4 #PBS -l place=scatter export OMP_NUM_THREADS=1 cd ${PBS_O_WORKDIR} module load scientific/gamess/22.09 rungms.mpi input.inp