NWChem¶
Popis¶
NWChem si kladie za cieľ poskytnúť používateľom škálovateľné nástroje výpočtovej chémie, ktoré dokážu efektívne riešiť veľké vedecké problémy výpočtovej chémie a zároveň využívať dostupné paralelné výpočtové zdroje od HPC klastrov ako aj bežne dostupných workstations. Softvér NWChem dokáže spracovať biomolekuly, nanoštruktúry a pevné látky, pričom podporuje výpočty od kvantovej po klasickú úroveň fyziky, ako aj ich kombinácie, Gaussove bázové funkcie aj rovinné vlny, škálovanie od jedného po tisíce procesorov a výpočty vlastností a relativistických efektov.
Oficiálna dokumentácia¶
Dokumentáciu softvéru a používateľskú príručku nájdete tu.
Dostupné verzie¶
V súčasnosti je dostupná nasledujúca verzia NWChem:
- Závislosti pri behu:
- Žiadne – potrebné knižnice a závislosti sa načítajú automaticky spolu s modulom \(NWChem/7.0.2-intel-2022a\).
Modul NWChem môžete načítať pomocou nasledujúceho príkazu:
module load NWChem/7.0.2-intel-2022a
NWCHem Benchmark¶
Aby sme lepšie pochopili, ako NWChem využíva dostupný hardvér na Devane a ako dosiahnuť dobrý výkon, môžeme preskúmať vplyv počtu MPI rankov na uzol a počtu OpenMP vlákien na výkon benchmarku. Ďalšie informácie o týchto benchmarkových systémoch nájdete na stránke NWChem benchmarks.
Na spustenie benchmarkov sa použil nasledujúci príkaz:
export OMP_NUM_THREADS=$nompt
mpiexec -np $ntmpi nwchem $input.inp > $output.out
kde ntmpi a nompt predstavujú počet MPI rankov a OpenMP vlákien.
Benchmarky boli vykonané na nasledujúcich systémoch:
Geometrická optimalizácia C12 diméru benzénu na úrovni teórie D3-PBE0/def2-TZVPP, ktorá ilustruje najčasovo náročnejšiu časť výpočtu, SCF výpočty.
c12-pbe0-d30-tzvpp.nw
title "c12"
echo
start c12-d4-pbe0-tzvpp_dat
#scratch_dir /scratch
memory stack 2000 mb heap 200 mb global 2000 mb noverify
geometry units angstrom noautoz
# symmetry c1
C -0.062619375461 0.000000000000 -2.001649629456
C -1.218688068356 -0.354690359108 -1.303485629456
C 1.093449317434 0.354690359108 -1.303485629456
H -2.118113174883 -0.630640582469 -1.846658629456
H 1.992874423961 0.630640582469 -1.846658629456
C -1.218688068356 -0.354690359108 0.092844370544
C 1.093449317434 0.354690359108 0.092844370544
H -2.118113174883 -0.630640582469 0.636017370544
H 1.992874423961 0.630640582469 0.636017370544
C -0.062619375461 0.000000000000 0.791008370544
H -0.062619375461 0.000000000000 1.877355370544
H -0.062619375461 0.000000000000 -3.087996629456
C -0.264430744069 -3.762741758810 -2.205619137167
C -1.420499436964 -4.117432117918 -1.507455137167
C 0.891637948826 -3.408051399702 -1.507455137167
H -2.319924543491 -4.393382341279 -2.050628137167
H 1.791063055353 -3.132101176340 -2.050628137167
C -1.420499436964 -4.117432117918 -0.111125137167
C 0.891637948826 -3.408051399702 -0.111125137167
H -2.319924543491 -4.393382341279 0.432047862833
H 1.791063055353 -3.132101176340 0.432047862833
C -0.264430744069 -3.762741758810 0.587038862833
H -0.264430744069 -3.762741758810 1.673385862833
H -0.264430744069 -3.762741758810 -3.291966137167
end
BASIS cartesian
* library def2-tzvpp
END
dft
direct
xc pbe0
disp vdw 3
# convergence energy 1e-3 density 1e-3 gradient 1e-3
iterations 500
#smear
#convergence damp 45 ncydp 0 dampon 1d99 dampoff 1d-4
noprint "final vectors analysis" multipole inertia
end
#set quickguess t
set dft:pstat t
set dft:staticguess t
task dft optimize
| Výkon na jednom uzle | Výkon na viacerých uzloch |
|---|---|
|  | |
|  |
Geometrická optimalizácia C36 fullerénu na úrovni teórie PBE0/6-31G*, ktorá ilustruje najčasovo náročnejšiu časť výpočtu, SCF výpočty.
c36-pbe0-631gs.nw
```bash title "c36"
echo
start c36-631gs_dat
#scratch_dir /scratch
memory stack 2000 mb heap 200 mb global 2000 mb noverify
geometry units angstrom noautoz
# symmetry c1
C -1.52700 1.76820 1.10880
C -2.36070 0.72480 1.26750
C -1.67820 -2.27640 0.13880
C -2.49780 -1.40820 0.80110
C -1.83200 -0.49960 1.65300
C -0.21160 1.77830 1.49380
C 1.81570 0.46710 1.62050
C 0.41900 0.58540 1.96880
C -0.43190 -0.62020 1.97940
C 0.19450 -1.81880 1.50120
C -0.43300 -2.60020 0.52680
C 1.65110 2.23630 0.12250
C 0.41060 2.54900 0.51060
C 2.48860 1.37490 0.76110
C 2.35930 -0.75560 1.27290
C 1.51570 -1.79100 1.12690
C -3.17430 -0.63550 -0.13640
C -1.52890 -1.78030 -1.13340
C -2.35450 -0.73210 -1.24830
C -3.18670 0.66160 0.15930
C -2.52400 1.42430 -0.78300
C -0.45510 2.61090 -0.56090
C -1.70130 2.31610 -0.15420
C 0.44340 -2.60890 -0.54250
C -0.20120 -1.80680 -1.49020
C 0.42820 -0.58870 -1.92240
C -0.42340 0.62590 -1.94160
C -1.82920 0.50110 -1.60990
C 0.22010 1.84690 -1.52860
C 1.69120 -2.30340 -0.14430
C 2.51320 -1.39870 -0.74120
C 1.83550 -0.46390 -1.58540
C 3.20040 -0.63110 0.17580
C 3.20210 0.65420 -0.17840
C 2.40480 0.77950 -1.29880
C 1.55490 1.81710 -1.18780
end
BASIS cartesian
C library 6-31g*
END
dft
xc b3lyp
# convergence energy 1e-3 density 1e-3 gradient 1e-3
iterations 500
#smear
#convergence damp 45 ncydp 0 dampon 1d99 dampoff 1d-4
noprint "final vectors analysis" multipole inertia
end
#set quickguess t
set dft:pstat t
set dft:staticguess t
task dft optimize
```
| Výkon na jednom uzle | Výkon na viacerých uzloch |
|---|---|
|  | |
|  |
Príklad spúšťacieho skriptu¶
Tento skript si môžete skopírovať, upraviť podľa svojich potrieb ako
nwchem_run.sh a úlohu odoslať na výpočtový uzol pomocou príkazu
sbatch nwchem_run.sh.
#!/bin/bash
#SBATCH -J "nwchem_job" # name of job in SLURM
#SBATCH --account=<project> # project number
#SBATCH --partition= # selected partition (short, medium, long)
#SBATCH --nodes= # number of nodes
#SBATCH --ntasks= # number of MPI ranks (parallel run)
#SBATCH --time=hh:mm:ss # time limit for a job
#SBATCH -o stdout.%J.out # standard output
#SBATCH -e stderr.%J.out # error output
module load NWChem/7.0.2-intel-2022a
mkdir -p /scratch/$SLURM_JOB_ACCOUNT/$SLURM_JOB_ID
export NWCHEM_SCRATCH_DIR=/scratch/$SLURM_JOB_ACCOUNT/$SLURM_JOB_ID
export NWCHEM_PERMANENT_DIR=/scratch/$SLURM_JOB_ACCOUNT
INPUT=nwchem_input.inp
OUTPUT=nwchem_output.out
mpiexec -np $SLURM_NTASKS nwchem $INPUT > $OUTPUT
# You can specify exact input and output name