Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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.3
cp2k/2024.3-gpu
GPU-versio saatavilla
2025.1 cp2k/2025.1
cp2k/2025.1-gpu
GPU-versio saatavilla
2025.2 cp2k/2025.2
cp2k/2025.2-gpu
GPU-versio saatavilla
2026.1 cp2k/2026.1
cp2k/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

module use /appl/local/csc/modulefiles

Tarkista, mitkä versiot voidaan ladata suoraan:

module avail cp2k

Kaikki asennetut versiot löydät komennolla:

module spider cp2k

Näet versionumeron avulla, miten se ladataan:

module spider cp2k/<version>

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:10:00
#SBATCH --ntasks-per-node=40
#SBATCH --nodes=2
#SBATCH --mem-per-cpu=2GB
#SBATCH --partition=large
#SBATCH --account=<project>

module purge
module load gcc/14.2.0 openmpi/5.0.6
module load cp2k/2025.1

srun cp2k.psmp H2O-64.inp > H2O-64.out
#!/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.

CP2K scaling on Mahti and LUMI

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.

farming.inp
&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
farming.sh
#!/bin/bash -l
#SBATCH --time=00:30:00
#SBATCH --partition=medium
#SBATCH --ntasks-per-node=128
#SBATCH --nodes=1
#SBATCH --account=<project>

module purge
module load gcc/14.2.0 openmpi/5.0.6
module load cp2k/2025.1

srun cp2k.psmp farming.inp >> farming.out

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

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta