Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

CP2K

Monipuolinen ab initio- ja klassinen molekyylidynamiikka. CP2K soveltuu suuriin rinnakkaisiin kvanttikemian laskuihin, erityisesti AIMD-laskentaan.

Saatavuus

Version Available modules Notes
2025.1 cp2k/2025.1 CPU-versio
2025.2 cp2k/2025.2 CPU-versio
2026.1 cp2k/2026.1 CPU-versio
Version Available modules Notes
2025.1 cp2k/2025.1 GPU-versio
2025.2 cp2k/2025.2 GPU-versio
2026.1 cp2k/2026.1 GPU-versio
Version Available modules Notes
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
Version Available modules Notes
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
Version Available modules Notes
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

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

Esimerkkieräajokomennostot

#!/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>
#SBATCH --hint=nomultithread

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

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>
#SBATCH --hint=nomultithread

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

#!/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

Suorituskykyhuomioita

Mahti

Seuraava taulukko näyttää H2O-256-vertailuajon kokonaisajoajan (sekunteina) Mahdissa käyttäen moduulia cp2k/2024.2. Sarakkeiden otsikot näyttävät, kuinka monta OpenMP-säiettä käytettiin per MPI-tehtävä.

CPU nodes 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 kohti 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 sijasta 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 orbital transformation (OT) -menetelmällä ja vaativat siksi Kohn–Sham-matriisin tavanomaisen 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 myös pois jokaisen tiettyyn GCD:hen kytketyn 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 kohti 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 Docs -dokumentaatiosta: LUMI-G hardware, LUMI-G examples, GPU binding

Seuraava kuvaaja näyttää linear-scaling SCF -vertailuajon (2048 vesimolekyyliä) kokonaisajoajan Mahdissa (CPU), LUMI-C:ssä ja LUMI-G:ssä. Kun CPU-GPU-sidonta tehdään 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. linear-scaling SCF, post-HF-menetelmät). Lisätietoja on CP2K:n verkkosivulla.

CP2K scaling on Mahti and LUMI

Suurivolyymilaskenta CP2K:lla

Suurivolyymilaskentoja 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ä nimenomaisessa esimerkissä pyydetään yksi täysi Mahti-solmu ajamaan 8 NaCl-kiteen single-point-laskua 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 antaminen ylähakemistossa käynnistää kaikki laskennat rinnakkain ja varaa 16 ydintä kullekin alityölle.

Huomaa, että alitöiden välille voidaan määrittää myös riippuvuuksia käyttämällä DEPENDENCIES- ja JOB_ID-avainsanoja 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 siteeraa niistä ne, jotka liittyvät käyttämiisi menetelmiin.

Lisätietoja

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta