Hyppää sisältöön

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

Näet kaikki asennetut versiot komennolla:

module spider cp2k

Määritä versionumero nähdäksesi, miten se ladataan:

module spider cp2k/<version>

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.

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=384
#SBATCH --nodes=1
#SBATCH --account=<project>

module purge
module load gcc/15.2.0 openmpi/5.0.10
module load cp2k/2026.1

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

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

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .