Pāriet uz saturu

Būvēšana GPU izmantošanai

FrontISTR var izpildīt GPU, izmantojot NVIDIA HPC SDK OpenACC funkcionalitāti. Šajā lapā aprakstīta būvēšana ar iespējotu GPU atbalstu un izpildes metode.

Informāciju par nepieciešamajām bibliotēkām skatiet sadaļā Obligātās un izvēles atkarību bibliotēkas.

Būvēšanas procedūra

Izmantojiet NVIDIA HPC SDK kompilatorus (nvc, nvc++, nvfortran). HPC klastera vidē pirms būvēšanas NVIDIA HPC SDK jāielādē atbilstoši konkrētās vides rokasgrāmatai (piemēram, module load nvhpc).

Izvēles bibliotēkas, piemēram, METIS, MUMPS un MKL, neatbalsta GPU, tādēļ tālāk parādītajos komandu piemēros tās ir atspējotas (WITH_METIS=OFF u. c.).

Kā aprakstīts sadaļā Būvēšana ar CMake, ja kā kompilatori ir norādīts NVIDIA HPC SDK (nvc, nvc++, nvfortran), CMakeLists.txt iestata -gpu=ccnative,mem:managed. Opcija ccnative automātiski nosaka būvēšanas vides GPU un izvēlas optimālo mērķi, tādēļ manuālas izmaiņas katrai videi nav nepieciešamas. Opcija mem: nosaka GPU atmiņas apstrādi; FrontISTR GPU realizācija pieņem Unified Memory izmantošanu, tādēļ šī opcija ir obligāta. mem:managed ir noklusējuma iestatījums tipiskai videi, kur CPU un GPU ir atsevišķas atmiņas.

Piezīme: tādās arhitektūrās kā Miyabi (GH200), kur CPU un GPU ir integrēti ar NVLink, mem:managed vietā izmanto mem:unified; attiecīgi mainiet iestatījumu atbilstoši izmantotajai videi (-gpu=ccnative,mem:unified).

OpenACC + OpenMP (bez 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

Izmantojot MPI, MPI aptverošajiem kompilatoriem (mpicc u. c.) iekšēji jāizsauc NVIDIA HPC SDK kompilatori (nvc u. c.). HPC klasteru vidēs, ielādējot NVIDIA HPC SDK un MPI bibliotēku ar tādām komandām kā module load, šāda konfigurācija bieži tiek izveidota automātiski, taču ieteicamās versijas un ielādes procedūras atšķiras atkarībā no vides; detalizētu informāciju skatiet konkrētās vides lietotāja rokasgrāmatā.

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

Izpildes metode

GPU būvējuma izpildes procedūra būtībā neatšķiras no CPU gadījuma. Vispārīgo izpildes procedūru skatiet Izpildes rokasgrāmatā.

Profilēšana

Profilēšanas datus var vākt, izmantojot NVIDIA Nsight Systems (nsys).

Bez MPI

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

Ar MPI

nsys profile -t cuda,mpi -s none -o profile_result \
  mpiexec -n <プロセス数> /path/to/FrontISTR/build/fistr1/fistr1 -t 8
AI-assisted translation May contain errors Official docs Status