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 computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti login nodes and storage services are planned to remain available until 15 October 2026.

Sovellusten kääntäminen Puhdissa

Puhti computing services have been retired

Puhti computing services have been retired and no new jobs are accepted or executed on its compute nodes. Any jobs sent through Slurm will be stuck in a pending state.

Puhti login nodes and storage services are planned to remain available until 15 October 2026.

Yleiset ohjeet

  • Käytä aina kun mahdollista kirjautumissolmun paikallista levyä ohjelmistojen kääntämiseen.
    • Kääntäminen paikallisella levyllä on paljon nopeampaa ja siirtää kuormitusta jaetulta tiedostojärjestelmältä.
    • Paikallinen levy siivotaan usein, joten siirrä tiedostosi muualle kääntämisen jälkeen.

CPU-sovellusten kääntäminen

Info

Intel uudelleenjärjesti käännintyökalupakkauksensa, ja Intel-kääntäjien nimet ovat muuttuneet Puhtin Red Hat Enterprise Linux 8 (RHEL8) -päivityksen myötä. Lisäksi Intel muutti kääntäjiensä taustalla olevaa teknologiaa ja nimesi vanhat kääntäjät Intel Compilers Classic -nimellä.

C/C++- ja Fortran-sovelluksia voidaan kääntää Intelin tai GNU:n käännintyökalupaketeilla. Käännintyökalupaketti valitaan Modules -järjestelmän kautta, eli

# New Intel compilers 
module load intel-oneapi-compilers

tai

# Old Intel compilers
module load intel-oneapi-compilers-classic

tai

module load gcc

Eri sovellukset toimivat paremmin eri työkalupaketeilla, joten valinta on tehtävä tapauskohtaisesti.

Varsinaiset käänninkomennot sarjallisen sovelluksen kääntämiseen näillä työkalupaketeilla:

Compiler suite C C++ Fortran
Intel, new icx icpx ifx
Intel, classic icc icpc ifort
GNU gcc g++ gfortran

Intel- ja GNU-kääntäjät käyttävät erilaisia kääntäjävalitsimia. Suositellut perusoptimointiliput on lueteltu alla olevassa taulukossa. On suositeltavaa aloittaa turvalliselta tasolta ja siirtyä sitten keskitasolle tai jopa aggressiiviselle tasolle varmistaen samalla, että tulokset ovat oikeita ja ohjelman suorituskyky on parantunut.

Optimisation level Intel GNU
Safe -O2 -xHost -fp-model precise -O2 -march=native
Intermediate -O2 -xHost -O3 -march=native
Aggressive -O3 -xHost -fp-model fast=2 -no-prec-div -fimf-use-svml=true -qopt-zmm-usage=high -O3 -march=native -ffast-math -funroll-loops -mprefer-vector-width=512

Yksityiskohtainen luettelo Intel- ja GNU-kääntäjien valitsimista löytyy man- sivuilta (man icc/ifort, man gcc/gfortran, kun vastaava ohjelmointiympäristö on ladattu) tai kääntäjien käyttöoppaista (katso yllä olevat linkit).

Huomaa, että jotkin liput, esimerkiksi -no-prec-div ja -qopt-zmm-usage, ovat tällä hetkellä tuettuja vain Intel classic -kääntäjissä (icc/icpx/ifort). Lisätietoa Intel-kääntäjien nykyisestä ja suunnitellusta lippujen tuesta voi tarkistaa komennolla icx -qnextgen-diag tai käyttöoppaista.

Kaikki sovellukset eivät myöskään hyödy AVX-512-vektorikäskykannasta (-xHost tai -march=native). Voi olla hyvä idea testata myös AVX2:ta (-xCORE-AVX2 tai -mavx2) ja verrata suorituskykyä.

Listaa kaikki saatavilla olevat käännintyökalupakettien versiot:

module spider intel-oneapi-compilers
module spider gcc

MPI-sovellusten kääntäminen

Tällä hetkellä saatavilla on kaksi MPI-ympäristöä: openmpi ja intel-oneapi-mpi. Oletus on openmpi, jota suositellaan myös aluksi.

Jos openmpi ei ole yhteensopiva sovelluksesi kanssa tai sen suorituskyky ei ole riittävä, kokeile toista ympäristöä. MPI-ympäristöjä voidaan käyttää komennolla module load, eli

module load openmpi

MPI-sovelluksia käännettäessä käytä mpixxx-käänninkääreitä, jotka vaihtelevat käännintyökalupaketin ja MPI-ympäristön mukaan:

Compiler suite openmpi intel-oneapi-mpi
Intel mpifort, mpicc, mpicxx mpiifort, mpiicc, mpiicpc
GNU mpif90, mpicc, mpicxx incompatible

OpenMP- ja hybridisovellusten kääntäminen

OpenMP- tai MPI/OpenMP-hybridisovelluksia käännettäessä tarvitaan lisää kääntäjä- ja linkkerilippuja:

Compiler suite OpenMP flag
Intel -qopenmp
GNU -fopenmp

GPU-sovellusten kääntäminen

CUDA on suositeltu ohjelmointimalli Nvidia-GPU:ille, ja CSC tarjoaa sen ympäristömoduulina. Myös OpenACC- ja OpenMP offloading -ohjelmointimalleja voidaan käyttää, mutta ne eivät kuulu CSC:n tukemaan ohjelmistopinoon.

Tarkemmat ohjeet näiden kääntäjien lataamiseen ja käyttöön annetaan seuraavissa osioissa.

CUDA

CUDA-kääntäjä (nvcc) huolehtii CUDA-koodin kääntämisestä kohde-GPU-laitteelle ja välittää loput ei-CUDA-kääntäjälle (eli gcc:lle). Esimerkiksi CUDA 11.7 -ympäristön lataaminen yhdessä GNU-kääntäjän kanssa:

module load gcc/11.3.0 cuda/11.7.0

Jos haluat luoda koodia tietylle kohdelaitteelle, kerro CUDA- kääntäjälle, mitä compute capability -tasoa kohdelaitteen GPU tukee. Puhdissa GPU:t (Volta V100) tukevat compute capability 7.0:aa. Määritä tämä valitsimella -gencode arch=compute_70,code=sm_70.

Esimerkiksi CUDA-ytimen (example.cu) kääntäminen Puhdissa:

nvcc -gencode arch=compute_70,code=sm_70 example.cu

Periaatteessa on myös mahdollista kohdistaa useisiin GPU-arkkitehtuureihin toistamalla -gencode useita kertoja eri compute capability -tasoille. Tämä ei kuitenkaan ole tarpeen Puhdissa, koska siellä on vain yksi GPU-tyyppi.

OpenACC ja OpenMP offloading

Warning

OpenACC-tuki tarjotaan NVIDIA:n nvc- ja nvc++-kääntäjien kautta. On kuitenkin tärkeää huomata, että tuki voi olla jossain määrin rajoittunut ja siitä voi puuttua tiettyjä toiminnallisuuksia, eikä sitä ole integroitu muuhun moduulipuuhun.

Warning

Jos otat moduulit käyttöön seuraavien ohjeiden mukaisesti, ympäristösi ei välttämättä toimi normaalisti. Komento module purge on välttämätön, ja muiden moduulien lataaminen yhdessä nvhpc- moduulien kanssa voi rikkoa ympäristösi eikä CSC tue sitä. Jos tarvitset lisätietoa OpenACC-tuesta, ota yhteyttä CSC:n asiakastukeen.

Kääntäjiä voidaan käyttää NVIDIA HPC SDK -moduulien kautta, jotka sisältyvät SDK-asennukseen. Niitä ei voi käyttää suoraan, vaan ne on otettava käyttöön lisäämällä hakupolku käsin seuraavasti:

module purge
module use /appl/opt/nvhpc/modulefiles

Kun moduulit on lisätty hakupuuhun, sinun on ladattava haluttu kääntäjien, MPI:n ja CUDAn yhdistelmä. Suositeltu yhdistelmä on nvhpc-hpcx-cuda, esimerkiksi:

module load nvhpc-hpcx-cuda12/24.11

OpenACC

Jos haluat luoda koodia tietylle kohdelaitteelle, kerro kääntäjälle, mitä compute capability -tasoa kohdelaitteen GPU tukee. Puhdissa GPU:t (V100) tukevat compute capability 7.0:aa.

Esimerkiksi OpenACC-direktiivejä käyttävän C-koodin (example.c) kääntäminen:

nvc -acc example.c -gpu=cc70

Jos haluat tietoa siitä, mitä kääntäjä todella tekee OpenACC- direktiivien kanssa, käytä valitsinta -Minfo=all.

Fortran-koodille:

nvfortran -acc example.F90 -gpu=cc70

C++-koodille:

nvc++ -acc example.cpp -gpu=cc70

OpenMP offloading

OpenMP Offloadingin käyttöönottoon tarvitaan valitsin -mp=gpu

Esimerkiksi C-koodin kääntäminen OpenMP offloadingilla:

nvc -mp=gpu example.c -gpu=cc70

Fortran-koodille:

nvfortran -mp=gpu example.F90 -gpu=cc70

C++-koodille:

nvc++ -mp=gpu example.cpp -gpu=cc70

nvc++-kääntäjä tukee koodeja, jotka sisältävät samassa koodissa OpenACC:tä, OpenMP Offloadingia ja C++:n rinnakkaisalgoritmeja. Tällaisessa tapauksessa voit kääntää komennolla:

nvc++ -stdpar -acc -mp=gpu example.cpp -gpu=cc70

Ohjelmistojen kääntäminen Spackilla

Spack on joustava paketinhallintaohjelma, jota voidaan käyttää ohjelmistojen asentamiseen supertietokoneille sekä Linux- ja macOS- järjestelmiin. Perusmoduulipuu, mukaan lukien kääntäjät, MPI-kirjastot ja monet CSC:n supertietokoneilla saatavilla olevista ohjelmistoista, on asennettu Spackilla.

CSC tarjoaa Puhdissa moduulin spack/v0.18-user, jota käyttäjät voivat käyttää ohjelmistojen kääntämiseen saatavilla olevien kääntäjien ja kirjastojen päälle Spackin avulla. On myös mahdollista asentaa moduulipuussa saatavilla olevista paketeista erilaisia räätälöityjä versioita erityisiä käyttötapauksia varten. Katso täältä lyhyt opas siihen, miten ohjelmistoja asennetaan CSC:n supertietokoneille Spackin avulla.

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta