Kompiliavimas su GPU palaikymu¶
FrontISTR gali veikti GPU naudodamas NVIDIA HPC SDK OpenACC funkcijas. Šiame puslapyje aprašoma, kaip sukompiliuoti FrontISTR su įjungtu GPU palaikymu ir kaip jį vykdyti.
Būtinas bibliotekas žr. Būtinos ir pasirenkamos priklausomybės.
Kompiliavimo procedūra¶
Naudokite NVIDIA HPC SDK kompiliatorius (nvc, nvc++, nvfortran). HPC klasterio aplinkoje prieš kompiliuojant NVIDIA HPC SDK reikia įkelti pagal aplinkos vadovą (pvz., module load nvhpc).
Pasirenkamos bibliotekos, pvz., METIS, MUMPS ir MKL, nepalaiko GPU, todėl toliau pateiktuose komandų pavyzdžiuose jos išjungtos (pvz., WITH_METIS=OFF).
Kaip aprašyta Kompiliavimas su CMake, kai kompiliatoriais nurodomi NVIDIA HPC SDK (nvc, nvc++, nvfortran), CMakeLists.txt nustatoma -gpu=ccnative,mem:managed. ccnative automatiškai aptinka kompiliavimo aplinkos GPU ir parenka optimalų tikslą, todėl kiekvienai aplinkai rankinių pakeitimų nereikia. mem: nurodo GPU atminties tvarkymą; jis būtinas, nes FrontISTR GPU įgyvendinimas remiasi Unified Memory. mem:managed yra numatytasis nustatymas įprastoms aplinkoms, kuriose CPU ir GPU turi atskirą atmintį.
Pastaba: tokiose architektūrose kaip Miyabi (GH200), kur CPU ir GPU sujungti per NVLink, vietoje
mem:managednaudojamamem:unified; pakeiskite nustatymą pagal naudojamą aplinką (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (be 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¶
Naudojant MPI, MPI wrapper kompiliatoriai (pvz., mpicc) turi būti sukonfigūruoti viduje kviesti NVIDIA HPC SDK kompiliatorius (pvz., nvc). Daugelyje HPC klasterių aplinkų NVIDIA HPC SDK ir MPI bibliotekų įkėlimas komandomis, pvz., module load, automatiškai sukuria tokią konfigūraciją. Tačiau rekomenduojamos versijos ir įkėlimo procedūros priklauso nuo aplinkos, todėl išsamiau žr. konkrečios aplinkos naudotojo vadovą ar kitą dokumentaciją.
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
Vykdymas¶
GPU versijos vykdymo procedūra iš esmės tokia pati kaip CPU versijos. Bendrąsias vykdymo procedūras žr. Vykdymo vadovas.
Profiliavimas¶
Profiliavimo duomenis galima rinkti naudojant NVIDIA Nsight Systems (nsys).