Opis
Quantum ESPRESSO je računalno-kemijska aplikacija koja je optimizirana za simulacije u fizici čvrstog stanja. Temelji se na teoriji funkcionala gustoće, a koristi se ravninskim valovima (engl. plane wave) koji se koriste za opisivanje ponašanja elektrona u čvrstom stanju.
Quantum ESPRESSO je aplikacija otvorenog koda, a podržava hibridnu paralelizaciju, MPI + OpenMP, kao i upotrebu grafičkih procesora.
Verzije
CPU | |||||||
---|---|---|---|---|---|---|---|
Verzija | Uključuje thermo_pw | Modul | MPI implementacija (Supek) | Supek | Padobran | Prevodioc | Paralelizacija |
6.8 | 1.6.0 | scientific/qe/6.8-gnu | Cray MPICH | GNU | MPI + OpenMP | ||
scientific/qe/6.8/openmpi-5.0.1/gcc-11.2.1 | Open MPI 5 | GNU | |||||
scientific/qe/6.8-intel | Open MPI 4 | Intel + MKL | |||||
7.0 | 1.7.0 | scientific/qe/7.0-gnu | Cray MPICH | GNU | |||
scientific/qe/7.0/openmpi-5.0.1/gcc-11.2.1 | Open MPI 5 | GNU | |||||
scientific/qe/7.0-intel | Open MPI 4 | Intel + MKL | |||||
7.1 | 1.7.1 | scientific/qe/7.1-gnu | Cray MPICH | GNU | |||
scientific/qe/7.1/openmpi-5.0.1/gcc-11.2.1 | Open MPI 5 | GNU | |||||
scientific/qe/7.1-intel | Open MPI 4 | Intel + MKL | |||||
7.2 | 1.8.1 | scientific/qe/7.2-gnu | Cray MPICH | GNU | |||
scientific/qe/7.2/openmpi-5.0.1/gcc-11.2.1 | Open MPI 5 | GNU | |||||
scientific/qe/7.2-intel | Open MPI 4 | Intel + MKL | |||||
GPU | |||||||
Verzija | Uključuje thermo_pw | Modul | MPI implementacija (Supek) | Supek | Padobran | Prevodioc | Paralelizacija |
7.1 | 1.7.1 | scientific/qe/7.1-nvhpc | / | NVIDIA HPC | OpenMP | ||
7.2 | 1.8.1 | scientific/qe/7.2-nvhpc | / |
Službena dokumentacija
Primjeri
Napomene
Podrazumijevano PBS ponašanje je „slobodno" razmještanje chunkova po slobodnim čvorovima.
Zbog aktualnog cray-pals buga, trenutno je ograničen broj poslova koji se mogu širiti van čvora kad koriste Cray-ev mpiexec. 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 #PBS -l place=pack
.
Kad u zaglavlju PBS skripte definirate vrijednost varijable ncpus
, u okolinu se automatski doprema ista vrijednost OMP_NUM_THREADS
varijable.
Zbog nemogućnosti Open MPI 4 da iskoristi puni potencijal Slingshot mreže, preporučljivo je aplikaciju zadržati unutar granica jednog čvora, koristeći:
#PBS -l place=pack
MPI pokretač za Cray MPICH verzije:
mpiexec -d ${OMP_NUM_THREADS} --cpu-bind depth pw.x -i input.in
MPI pokretač za Open MPI verzije:
mpirun --map-by SLOT:PE=${OMP_NUM_THREADS} pw.x -i input.in
Ukoliko primijetite sporo izvođenje na Padobranu, preporučuje se korištenje privremenog direktorija TMPDIR. Naime, ponekad input/output (čitanje/pisanje) može biti usko grlo u izvođenju posla.
Prije pokretanja CASTEP-a iz privremenog direktorija, potrebno je tamo premjestiti sve potrebne input datoteke, npr.:
cp -r * ${TMPDIR} && cd ${TMPDIR}
Po završetku izvođenja, potrebno je vratiti nazad željene output datoteke, npr.:
cp -r * ${PBS_O_WORKDIR}
CPU
MPI
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=2gb #PBS -l place=pack cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-gnu mpiexec pw.x -i input.in
OpenMP
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=64gb cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-gnu pw.x -i input.in
MPI + OpenMP
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.
#PBS -q cpu #PBS -l select=8:ncpus=4:mem=8gb #PBS -l place=pack cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-gnu mpiexec -d ${OMP_NUM_THREADS} --cpu-bind depth pw.x -i input.in
GPU
Single GPU
Aplikacija može koristiti jedan grafički procesor koji se definira SGE opcijom ngpus
, a koja će u okolinu izvesti varijablu CUDA_VISIBLE_DEVICES
, čija će vrijednost biti UUID grafičkog procesora koji Vam je sustav dodijelio.
Broj CPU jezgri definira se putem OpenMP dretvi, odnosno u zaglavlju SGE skripte odabirom vrijednosti ncpus
.
U primjeru niže, aplikacija će se pokrenuti s jednim grafičkim procesorom i 4 CPU jezgre.
#PBS -q gpu #PBS -l select=1:ngpus=1:ncpus=1:mem=64gb cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-nvhpc pw.x -i input.in