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

VerzijaUključuje thermo_pwModulMPI implementacija (Supek)SupekPadobranPrevodiocParalelizacija
6.81.6.0scientific/qe/6.8-gnuCray MPICHcheck mark button(error)GNUMPI + OpenMP
scientific/qe/6.8/openmpi-5.0.1/gcc-11.2.1Open MPI 5check mark button(error)GNU
scientific/qe/6.8-intelOpen MPI 4check mark button(error)Intel + MKL
7.01.7.0scientific/qe/7.0-gnuCray MPICHcheck mark buttoncheck mark buttonGNU
scientific/qe/7.0/openmpi-5.0.1/gcc-11.2.1Open MPI 5check mark button(error)GNU
scientific/qe/7.0-intelOpen MPI 4check mark button(error)Intel + MKL
7.11.7.1scientific/qe/7.1-gnuCray MPICHcheck mark buttoncheck mark buttonGNU
scientific/qe/7.1/openmpi-5.0.1/gcc-11.2.1Open MPI 5check mark button(error)GNU
scientific/qe/7.1-intelOpen MPI 4check mark button(error)Intel + MKL
7.21.8.1scientific/qe/7.2-gnuCray MPICHcheck mark buttoncheck mark buttonGNU
scientific/qe/7.2/openmpi-5.0.1/gcc-11.2.1Open MPI 5check mark button(error)GNU
scientific/qe/7.2-intelOpen MPI 4check mark button(error)Intel + MKL

GPU

VerzijaUključuje thermo_pwModul

MPI implementacija (Supek)

SupekPadobranPrevodiocParalelizacija
7.11.7.1scientific/qe/7.1-nvhpc/check mark button(error)NVIDIA HPCOpenMP
7.21.8.1scientific/qe/7.2-nvhpc/check mark button(error)

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 skripta
#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.

Bash skripta
#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 skripta
#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 skripta
#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