-
CP2K
CP2K
Monipuolinen ab initio- ja klassinen molekyylidynamiikka. CP2K soveltuu suuriin rinnakkaisiin kvanttikemian laskuihin, erityisesti AIMD-laskentaan.
Saatavilla
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 9.1 | cp2k/9.1 |
|
| 2022.2 | cp2k/2022.2 |
|
| 2023.1 | cp2k/2023.1 |
|
| 2023.2 | cp2k/2023.2 |
|
| 2024.1 | cp2k/2024.1 |
|
| 2024.2 | cp2k/2024.2 |
|
| 2025.1 | cp2k/2025.1 |
| Versio | Saatavilla olevat moduulit | Huomautukset |
|---|---|---|
| 8.2 | cp2k/8.2 |
|
| 9.1 | cp2k/9.1 |
|
| 2022.2 | cp2k/2022.2 |
|
| 2023.1 | cp2k/2023.1 |
|
| 2023.2 | cp2k/2023.2 |
|
| 2024.1 | cp2k/2024.1 |
|
| 2024.2 | cp2k/2024.2 |
|
| 2025.1 | cp2k/2025.1 |
| 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:
Kaikki asennetut versiot löydät komennolla:
Näet versionumeron avulla, miten se ladataan:
Varmista jokaisen uuden projektin kohdalla, 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 nopeampaa.
Esimerkkieräajokomennostot
#!/bin/bash
#SBATCH --time=00:05:00
#SBATCH --ntasks-per-node=32 # 2 - 128
#SBATCH --cpus-per-task=4 # 128 / ntasks-per-node
#SBATCH --nodes=2
#SBATCH --partition=test
#SBATCH --account=<project>
module purge
module load gcc/14.2.0 openmpi/5.0.6
module load cp2k/2025.1
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export OMP_PLACES=cores
srun cp2k.psmp H2O-64.inp > H2O-64.out
#!/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
Huomautus
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" solmua kohden. Katso lisätietoja LUMI Docs.
Suorituskykyhuomioita
Mahti
Seuraava taulukko näyttää
H2O-256-benchmarkin
kokonaisajoajan (sekunteina) Mahdissa käyttäen versiota cp2k/2024.2.
Sarakeotsikot näyttävät, kuinka monta OpenMP-säiettä käytettiin MPI-tehtävää
kohden.
| CPU-solmut | 1 | 2 | 4 | 8 |
|---|---|---|---|---|
| 1 | 197.35 | 164.80 | 169.66 | 192.07 |
| 2 | 111.95 | 107.78 | 101.52 | 117.60 |
| 4 | 82.74 | 72.12 | 72.00 | 97.97 |
- 256 vesimolekyylin tapauksessa paras tehokkuus saavutetaan kahdella täydellä solmulla, 32 MPI-tehtävällä per solmu ja 4 OpenMP-säikeellä per tehtävä. Tälle järjestelmälle skaalaaminen yli 2 solmun (256 CPU-ytimen) ei ole tehokasta.
- Hybridinen rinnakkaisuus on usein tehokasta – valitse tehtävät ja säikeet niin, että niiden summa on 128 solmua kohden käytettävissä olevaa (fyysistä) ydintä (tai enintään 40 Puhdissa).
- Testaa mallijärjestelmällesi ja menetelmällesi optimaaliset ajoasetukset.
- ELPA-diagonalisointikirjaston käyttö ScaLAPACKin sijaan voi nopeuttaa merkittävästi laskentoja, jotka vaativat suurten matriisien diagonalisointia (jopa 50 % järjestelmästä riippuen). Hyvä esimerkki ovat metalliset järjestelmät, jotka voivat konvergoitua huonosti orbitaalien muunnosmenetelmällä (OT) ja vaativat siksi Kohn–Sham-matriisin tavallisen diagonalisoinnin.
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 tämän mukaisesti. Yllä oleva täyden GPU-solmun esimerkki huolehtii tästä ja sulkee lisäksi pois jokaisen tiettyyn GCD:hen liitetyn 8 ytimen ryhmän ensimmäisen ytimen. Nämä 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ä.
Huomautus
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
Seuraava kuvaaja näyttää lineaarisesti skaalautuvan SCF-benchmarkin kokonaisajoajan (2048 vesimolekyyliä) Mahdissa (CPU), LUMI-C:ssä ja LUMI-G:ssä. Kun CPU-GPU-sidonta on tehty oikein (katso yllä oleva esimerkki), LUMI-G on noin kaksi kertaa suorituskykyisempi kuin Mahti/LUMI-C verrattaessa GPU-solmuja CPU-solmuihin. 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 verkkosivustolla.

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ää eräjono-järjestelmän kuormitusta.
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ä. Esimerkkisyöte- ja eräajokomentosarjat on annettu alla. 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 Mahti-solmu ajamaan 8 NaCl-kiteen
single-point-laskentaa eri hilarakioilla. farming.inp-syötteen lisäksi
jokainen alityö tarvitsee oman tavallisen syötetiedostonsa, jotka on tässä
järjestetty erillisiin alihakemistoihin nimeltä run*. Komennon
sbatch farming.sh suorittaminen ylähakemistossa käynnistää kaikki laskennat
rinnakkain ja varaa 16 ydintä kullekin alityölle.
Huomaa, että alitöiden välisiä riippuvuuksia voidaan määrittää myös
DEPENDENCIES- ja JOB_ID-avainsanoilla osion &JOB alla. Tämä mahdollistaa
monimutkaisten työnkulkujen määrittelyn. Lisätietoja on
CP2K-käsikirjassa ja
regtest-tiedostoissa esimerkkisyötteitä varten.
Viitteet
CP2K tulostaa lokitiedoston loppupuolelle luettelon asiaankuuluvista julkaisuista. Valitse ja viittaa niihin, jotka ovat käyttämiisi menetelmiin olennaisia.
Lisätietoja
- CP2K:n online-käsikirja
- 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.