Kalo te përmbajtja

Ndërtimi me mbështetje GPU

FrontISTR mund të ekzekutohet në GPU duke përdorur funksionalitetin OpenACC të NVIDIA HPC SDK. Kjo faqe përshkruan si të ndërtohet FrontISTR me mbështetjen për GPU të aktivizuar dhe si të ekzekutohet.

Për bibliotekat parakushte, shihni Varësitë e detyrueshme dhe opsionale.

Procedura e ndërtimit

Përdorni kompiluesit e NVIDIA HPC SDK (nvc, nvc++ dhe nvfortran). Në një mjedis klasteri HPC, NVIDIA HPC SDK duhet të ngarkohet para ndërtimit sipas manualit të mjedisit (për shembull, module load nvhpc).

Bibliotekat opsionale si METIS, MUMPS dhe MKL nuk mbështesin GPU, ndaj çaktivizohen në shembujt e komandave më poshtë (për shembull, WITH_METIS=OFF).

Siç përshkruhet te Ndërtimi me CMake, kur NVIDIA HPC SDK (nvc, nvc++, nvfortran) përcaktohet për kompiluesit, në CMakeLists.txt vendoset -gpu=ccnative,mem:managed. ccnative është një opsion që zbulon automatikisht GPU-në në mjedisin e ndërtimit dhe zgjedh objektivin optimal, kështu që nuk kërkohen ndryshime manuale për çdo mjedis. mem: është një opsion që përcakton mënyrën e trajtimit të memories së GPU-së; kërkohet sepse implementimi GPU i FrontISTR supozon Unified Memory. mem:managed është cilësimi i parazgjedhur për mjediset e përgjithshme ku CPU dhe GPU kanë memorie të ndara.

Shënim: Në arkitektura si Miyabi (GH200), ku CPU dhe GPU janë të integruara përmes NVLink, në vend të mem:managed përdoret mem:unified; ndryshoni cilësimin sipas mjedisit që përdoret (-gpu=ccnative,mem:unified).

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

Kur përdoret MPI, kompiluesit wrapper të MPI (si mpicc) duhet të konfigurohen që të thërrasin brenda kompiluesit e NVIDIA HPC SDK (si nvc). Në shumë mjedise klasterësh HPC, ngarkimi i NVIDIA HPC SDK dhe bibliotekave MPI me komanda si module load e siguron automatikisht këtë konfigurim. Megjithatë, versionet e rekomanduara dhe procedurat e ngarkimit ndryshojnë sipas mjedisit, prandaj për hollësi shihni manualin e përdoruesit ose dokumentacion tjetër të mjedisit përkatës.

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

Ekzekutimi

Procedura e ekzekutimit për një ndërtim GPU është në thelb e njëjtë me atë për një ndërtim CPU. Për procedurat e përgjithshme të ekzekutimit, shihni Udhëzuesin e ekzekutimit.

Profilizimi

Të dhënat e profilizimit mund të mblidhen duke përdorur NVIDIA Nsight Systems (nsys).

Pa 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 <numri_i_proceseve> /path/to/FrontISTR/build/fistr1/fistr1 -t 8