CP2K
Monipuolinen ab initio- ja klassinen molekyylidynamiikka. CP2K soveltuu suuriin rinnakkaisiin kvanttikemian laskuihin, erityisesti AIMD-laskentaan.
Saatavuus
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 2025.1 | cp2k/2025.1 |
CPU-versio |
| 2025.2 | cp2k/2025.2 |
CPU-versio |
| 2026.1 | cp2k/2026.1 |
CPU-versio |
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 2025.1 | cp2k/2025.1 |
GPU-versio |
| 2025.2 | cp2k/2025.2 |
GPU-versio |
| 2026.1 | cp2k/2026.1 |
GPU-versio |
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 2024.3 | cp2k/2024.3cp2k/2024.3-gpu |
GPU-versio saatavilla |
| 2025.1 | cp2k/2025.1cp2k/2025.1-gpu |
GPU-versio saatavilla |
| 2025.2 | cp2k/2025.2cp2k/2025.2-gpu |
GPU-versio saatavilla |
| 2026.1 | cp2k/2026.1cp2k/2026.1-gpu |
GPU-versio saatavilla |
Lisenssi
CP2K on vapaasti saatavilla GPL-lisenssillä.
Käyttö
LUMI
Jotta voit käyttää CSC:n moduuleja LUMIssa, muista ensin ottaa CSC:n moduulipuu käyttöön komennolla
Tarkista, mitkä versiot voidaan ladata suoraan:
Näet kaikki asennetut versiot komennolla:
Määritä versionumero nähdäksesi, miten se ladataan:
Varmista jokaisen uuden projektin yhteydessä, että työsi pystyy hyödyntämään eräajokomentosarjassa pyytämäsi ytimet tehokkaasti. Nyrkkisääntönä on, että kun ydinten määrä kaksinkertaistetaan, laskennan pitäisi olla vähintään 1,5 kertaa nopeampi.
Esimerkkieräajokomentosarjat
#!/bin/bash
#SBATCH --time=00:05:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=96 # maximum 384
#SBATCH --cpus-per-task=4 # 384 / ntasks-per-node
#SBATCH --partition=medium
#SBATCH --account=<project>
module purge
module load gcc/15.2.0 openmpi/5.0.10
module load cp2k/2026.1
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
srun cp2k.psmp H2O-512.inp > H2O-512.out
#!/bin/bash
#SBATCH --time=00:10:00
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=64
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:gh200:4
#SBATCH --partition=gpumedium
#SBATCH --account=<project>
module purge
module load gcc/13.4.0 openmpi/5.0.10
module load cp2k/2026.1
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
# Nvidia multi-process service (MPS) required to run multiple tasks per GPU
nvidia-cuda-mps-control -d
srun cp2k.psmp H2O-dft-ls.inp > H2O-dft-ls.out
echo quit | nvidia-cuda-mps-control
#!/bin/bash
#SBATCH --partition=standard-g
#SBATCH --account=<project>
#SBATCH --time=00:30:00
#SBATCH --nodes=1
#SBATCH --gpus-per-node=8
#SBATCH --ntasks-per-node=16 # Run two tasks per GCD, in this case more efficient
export OMP_NUM_THREADS=3
module use /appl/local/csc/modulefiles
module load cp2k/2026.1-gpu
export MPICH_GPU_SUPPORT_ENABLED=1
cat << EOF > select_gpu
#!/bin/bash
export ROCR_VISIBLE_DEVICES=\$((SLURM_LOCALID%SLURM_GPUS_PER_NODE))
exec \$*
EOF
chmod +x ./select_gpu
CPU_BIND="mask_cpu:fe000000000000,fe00000000000000"
CPU_BIND="${CPU_BIND},fe0000,fe000000"
CPU_BIND="${CPU_BIND},fe,fe00"
CPU_BIND="${CPU_BIND},fe00000000,fe0000000000"
srun --cpu-bind=$CPU_BIND ./select_gpu cp2k.psmp H2O-dft-ls.inp >> H2O-dft-ls.out
Huom.
Jokainen LUMIn GPU koostuu kahdesta AMD Graphics Compute Die (GCD) -yksiköstä. Koska solmussa on neljä GPU:ta ja Slurm tulkitsee jokaisen GCD:n erilliseksi GPU:ksi, voit varata enintään 8 "GPU:ta" per solmu. Katso lisätietoja LUMI Docs.
Suorituskykyhuomiot
Roihu
Tehokas MPI-tehtävien ja OpenMP-säikeiden yhdistelmä tehtävää kohden riippuu käytetystä järjestelmästä ja mallista, ja se tulisi määrittää testaamalla jokaisessa tapauksessa erikseen. Katso yleisiä vinkkejä suorituskyvyn tarkistuslistasta. On myös tärkeää tehdä skaalautuvuustesti, erityisesti suurille töille.
- Hybridinen rinnakkaisuus on usein tehokasta – valitse tehtävät ja säikeet niin, että niiden summa on 384 fyysistä ydintä, jotka ovat käytettävissä Roihu-CPU-solmua kohden.
- ELPA-diagonalisointikirjaston käyttäminen ScaLAPACKin sijaan voi nopeuttaa merkittävästi laskentoja, jotka vaativat suurten matriisien diagonalisaatiota (jopa 50 % järjestelmästä riippuen). Hyvä esimerkki ovat metalliset järjestelmät, jotka voivat konvergoitua huonosti orbitaalitransformaatio (OT) -menetelmällä ja vaativat siksi Kohn-Sham-matriisin tavallisen diagonalisaation.
LUMI
Vain tietyt CPU-ytimet on LUMIssa kytketty suoraan tiettyyn GPU:hun, joten monen GPU:n suorituskyvyn maksimoimiseksi on tärkeää varmistaa, että CPU-ytimet sidotaan GPU:ihin vastaavasti. Yllä oleva täyden GPU-solmun esimerkki huolehtii tästä ja sulkee myös pois jokaisen tiettyyn GCD:hen kytketyn 8 ytimen ryhmän ensimmäisen ytimen. Ne on varattu käyttöjärjestelmälle häiriöiden vähentämiseksi, mikä tarkoittaa, että solmua kohden on käytettävissä vain 56 ydintä.
Huom.
Huomaa, että CPU-GPU-sidonta toimii vain, kun varataan kokonaisia solmuja
ajamalla standard-g-osiolla tai käyttämällä --exclusive-valitsinta.
Katso lisätietoja LUMI Docsista:
LUMI-G hardware,
LUMI-G examples,
GPU binding
Koska kaikkia CP2K:n rutiineja ei ole siirretty GPU:ille, varmista aina järjestelmäsi ja menetelmäsi suorituskyky ja skaalautuvuus. Jotkin simulaatiot (esim. tavallinen SCF) toimivat paremmin CPU:illa, kun taas toiset ovat huomattavasti nopeampia GPU:illa (esim. lineaarisesti skaalautuva SCF, post-HF-menetelmät). Lisätietoja on CP2K:n verkkosivulla.
Suurivolyymilaskenta CP2K:lla
Suurivolyymilaskentaa voidaan ajaa kätevästi CP2K:lla sisäänrakennetun
FARMING-ohjelman avulla. Tämä on erinomainen vaihtoehto käyttötapauksiin,
joissa tavoitteena on ajaa suuri määrä toisistaan riippumattomia laskentoja,
kuten tuotettaessa dataa AI/ML-putkia varten. Kaikki alityöt ajetaan
rinnakkain yhden Slurm-varauksen sisällä, jolloin vältetään ylimääräiset
srun- tai sbatch-kutsut, mikä vähentää kuormitusta eräjono-järjestelmässä.
FARMING-töiden ajaminen vaatii ylimääräisen syötetiedoston, jossa määritetään
työvuon yksityiskohdat, kuten syötehakemistot ja rinnakkaisten tehtäväryhmien
määrä. Alla on esitetty esimerkkisyöte- ja eräajokomentosarjatiedostot.
Huomaa, että RUN_TYPE on asetettu arvoon NONE osiossa &GLOBAL.
&GLOBAL
PROJECT my-farming-job
PROGRAM FARMING
RUN_TYPE NONE
&END GLOBAL
&FARMING
NGROUPS 8
&JOB
DIRECTORY run1
INPUT_FILE_NAME nacl.inp
&END JOB
&JOB
DIRECTORY run2
INPUT_FILE_NAME nacl.inp
&END JOB
&JOB
DIRECTORY run3
INPUT_FILE_NAME nacl.inp
&END JOB
&JOB
DIRECTORY run4
INPUT_FILE_NAME nacl.inp
&END JOB
&JOB
DIRECTORY run5
INPUT_FILE_NAME nacl.inp
&END JOB
&JOB
DIRECTORY run6
INPUT_FILE_NAME nacl.inp
&END JOB
&JOB
DIRECTORY run7
INPUT_FILE_NAME nacl.inp
&END JOB
&JOB
DIRECTORY run8
INPUT_FILE_NAME nacl.inp
&END JOB
&END FARMING
Tässä esimerkissä pyydetään yksi täysi Roihu-solmu 8 NaCl-kiteen
single-point-laskennan ajamiseen eri hilarakioilla. farming.inp-syötteen
lisäksi jokainen alityö tarvitsee oman tavallisen syötetiedostonsa, jotka on
tässä järjestetty erillisiin run*-nimisiin alihakemistoihin. Komennon
sbatch farming.sh suorittaminen ylähakemistossa käynnistää kaikki laskennat
rinnakkain ja kohdistaa 48 ydintä kullekin alityölle.
Huomaa, että alitöiden välisiä riippuvuuksia voidaan määrittää myös
DEPENDENCIES- ja JOB_ID-avainsanoilla &JOB-osion alla. Tämä mahdollistaa
monimutkaisten työnkulkujen määrittelyn. Lisätietoja on
CP2K-manuaalissa ja
regtest-tiedostoissa esimerkkisyötteitä varten.
Viitteet
CP2K tulostaa lokitiedoston loppupuolelle luettelon asiaankuuluvista julkaisuista. Valitse ja viittaa niihin, jotka liittyvät käyttämiisi menetelmiin.
Lisätietoja
- CP2K:n verkkomanuaali
- CP2K:n kotisivu
- Sisältää oppaita ja linkkejä hyödyllisiin työkaluihin.
- Regtest-syötteitä voidaan käyttää esimerkkeinä siitä, miten CP2K:n eri ominaisuuksia käytetään. Huomaa, että konvergenssikriteerit voivat olla melko löysiä, ja ne tulisi testata erikseen tuotantosimulaatioita varten.