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
verzija | modul | paralelizacija | uključuje thermo_pw | |
---|---|---|---|---|
6.8 | scientific/qe/6.8-gnu | CPU | MPI + OpenMP | v1.6.0 |
7.0 | scientific/qe/7.0-gnu | CPU | MPI + OpenMP | v1.7.0 |
7.1 | scientific/qe/7.1-gnu | CPU | MPI + OpenMP | v1.7.1 |
7.1 | scientific/qe/7.1-nvhpc | GPU + CPU | OpenMP | v1.7.1 |
Službena dokumentacija
Primjeri
Kad u zaglavlju PBS skripte definirate vrijednost varijable ncpus
, u okolinu se automatski doprema ista vrijednost OMP_NUM_THREADS
varijable.
CPU
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 -N run-pw #PBS -q cpu #PBS -l select=8:ncpus=4 MPI_NUM_PROCESSES=$(cat ${PBS_NODEFILE} | wc -l) cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-gnu mpiexec -n ${MPI_NUM_PROCESSES} -d ${OMP_NUM_THREADS} --cpu-bind depth pw.x -i calcite.in
MPI
Ukoliko aplikaciju ne želite dijeliti aplikaciju u OpenMP threadove, možete koristiti paralelizaciju isključivo na razini MPI procesa.
U primjeru niže, aplikacija će pokrenuti 32 MPI procesa.
#PBS -N run-pw #PBS -q cpu #PBS -l select=32:ncpus=1 MPI_NUM_PROCESSES=$(cat ${PBS_NODEFILE} | wc -l) cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-gnu mpiexec -n ${MPI_NUM_PROCESSES} -d ${OMP_NUM_THREADS} --cpu-bind depth pw.x -i calcite.in
OpenMP
Ukoliko 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.
QE će vrijednost OMP_NUM_THREADS
dobiti po definiranju ncpus
varijable u zaglavlju skripte.
U primjeru niže, aplikacija će se pokrenuti s 32 OpenMP threada.
#PBS -N run-pw #PBS -q cpu #PBS -l select=1:ncpus=32 cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-gnu pw.x -i calcite.in
GPU
OpenMP
Aplikacija može koristiti jedan grafički procesor koji se definira SGE opcijom ngpus
, dok se broj CPU jezgri definira se putem OpenMP dretvi, odnosno u zaglavlju SGE skripte odabirom vrijednosti ncpus
.
Pritom je važno da zatražite jedan računalni čvor tj. select=1
, budući da u ovom slučaju aplikacija radi s dijeljenom memorijom.
U primjeru niže, aplikacija će se pokrenuti s jednim grafičkim procesorom i 4 CPU jezgre.
GPU poslovi izvršavaju se u redu poslova gpu
, odnosno definiranjem opcije -q gpu
.
#PBS -q gpu #PBS -l select=1:ngpus=1:ncpus=4 #PBS -N run-pw cd ${PBS_O_WORKDIR} module load scientific/qe/7.1-gnu pw.x -i calcite.in