Hoppa yfir í efnið

Smíði með GPU

FrontISTR getur keyrt á GPU með OpenACC-eiginleikum NVIDIA HPC SDK. Á þessari síðu er lýst hvernig FrontISTR er smíðað með GPU-stuðningi og hvernig keyrsla fer fram.

Um nauðsynleg söfn er vísað í Nauðsynleg og valkvæð háðasöfn.

Smíðaferli

Notið þýðendur NVIDIA HPC SDK (nvc, nvc++, nvfortran). Í HPC-klasaumhverfi þarf að hlaða NVIDIA HPC SDK samkvæmt leiðbeiningum viðkomandi umhverfis áður en smíðin hefst (til dæmis module load nvhpc).

Valkvæð söfn á borð við METIS, MUMPS og MKL styðja ekki GPU og eru því óvirkjuð í skipanadæmunum hér að neðan (til dæmis WITH_METIS=OFF).

Eins og lýst er í Smíðaferli með CMake, þegar NVIDIA HPC SDK (nvc, nvc++, nvfortran) er valið sem þýðandasett, er -gpu=ccnative,mem:managed stillt í CMakeLists.txt. ccnative er valkostur sem greinir sjálfkrafa GPU í smíðaumhverfinu og velur hentugt mark, þannig að ekki þarf að breyta stillingum handvirkt fyrir hvert umhverfi. mem: er valkostur sem tilgreinir hvernig GPU-minni er meðhöndlað; hann er nauðsynlegur vegna þess að GPU-útfærsla FrontISTR byggir á sameinuðu minni. mem:managed er sjálfgefin stilling fyrir venjuleg umhverfi þar sem CPU og GPU hafa aðskilið minni.

Athugasemd: Í arkitektúr eins og Miyabi (GH200), þar sem CPU og GPU eru samtengd með NVLink, er mem:managed ekki notað; í stað þess er mem:unified notað. Breytið stillingunni eftir því umhverfi sem er notað (-gpu=ccnative,mem:unified).

OpenACC + OpenMP (án MPI)

mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
  -DWITH_MPI=OFF -DWITH_OPENMP=ON \
  -DWITH_METIS=OFF -DWITH_MUMPS=OFF \
  -DWITH_MKL=OFF -DWITH_LAPACK=OFF \
  -DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
  ..
make -j

OpenACC + OpenMP + MPI

Þegar MPI er notað þurfa MPI-hjúpunarþýðendur (til dæmis mpicc) að vera stilltir þannig að þeir kalli innbyrðis á þýðendur NVIDIA HPC SDK (til dæmis nvc). Í mörgum HPC-klasaumhverfum verður þessi uppsetning sjálfkrafa virk þegar NVIDIA HPC SDK og MPI-söfn eru hlaðin með skipunum á borð við module load. Ráðlagðar útgáfur og hleðsluferli eru þó mismunandi eftir umhverfi, svo vísað er í notendahandbók eða önnur skjöl viðkomandi umhverfis fyrir nánari upplýsingar.

mkdir build
cd build
CC=mpicc CXX=mpic++ FC=mpif90 cmake \
  -DWITH_MPI=ON -DWITH_OPENMP=ON \
  -DWITH_METIS=OFF -DWITH_MUMPS=OFF \
  -DWITH_MKL=OFF -DWITH_LAPACK=OFF \
  -DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
  ..
make -j

Keyrsla

Keyrsluferli GPU-smíðar er í grundvallaratriðum hið sama og fyrir CPU-smíði. Um almennt keyrsluferli er vísað í Keyrsluleiðbeiningar.

Prófílun

Safna má prófílgögnum með NVIDIA Nsight Systems (nsys).

Án MPI

nsys profile -t cuda -s none -o profile_result /path/to/FrontISTR/build/fistr1/fistr1

Með MPI

nsys profile -t cuda,mpi -s none -o profile_result \
  mpiexec -n <fjöldi_ferla> /path/to/FrontISTR/build/fistr1/fistr1 -t 8