Hoppa yfir í efnið

Translation update pending

The Icelandic translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.

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

Án OpenACC (CPU-útgáfa)

Til að smíða CPU-útgáfu með þýðendum NVIDIA HPC SDK án OpenACC skal tilgreina -DNVHPC_NO_ACC=ON. Þá eru -acc, -Minfo=accel og -gpu=ccnative,mem:managed ekki stillt. Notið þessa uppsetningu þegar bera á saman niðurstöður við GPU-útgáfu sem er smíðuð með sömu þýðendum.

mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
  -DNVHPC_NO_ACC=ON \
  -DWITH_MPI=OFF -DWITH_OPENMP=ON \
  ..
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