Tarkibga o'tish

GPU yordamida yig‘ish

FrontISTR NVIDIA HPC SDK ning OpenACC imkoniyatidan foydalanib GPU da ishlashi mumkin. Ushbu sahifada GPU yoqilgan FrontISTR ni yig‘ish va ishga tushirish usuli tushuntiriladi.

Talab qilinadigan kutubxonalar haqida Majburiy va ixtiyoriy bog‘liqliklar ga qarang.

Yig‘ish tartibi

NVIDIA HPC SDK kompilyatorlaridan (nvc, nvc++, nvfortran) foydalaning. HPC klaster muhitida yig‘ishdan oldin muhit qo‘llanmasiga muvofiq NVIDIA HPC SDK ni yuklash kerak (masalan, module load nvhpc).

METIS, MUMPS, MKL kabi ixtiyoriy kutubxonalar GPU ni qo‘llab-quvvatlamagani sababli quyidagi buyruq misollarida ular o‘chirilgan (WITH_METIS=OFF va boshqalar).

CMake yordamida yig‘ish tartibi da aytilganidek, kompilyator sifatida NVIDIA HPC SDK (nvc, nvc++, nvfortran) ko‘rsatilganda CMakeLists.txt da -gpu=ccnative,mem:managed o‘rnatiladi. ccnative yig‘ish muhitidagi GPU ni avtomatik aniqlab, eng mos targetni tanlaydigan parametr bo‘lib, har bir muhit uchun qo‘lda o‘zgartirish talab qilinmaydi. mem: GPU xotirasiga ishlov berish usulini belgilovchi parametrdir; FrontISTR ning GPU amalga oshirilishi Unified Memory ga tayanganligi sababli uni ko‘rsatish shart. mem:managed CPU va GPU alohida xotiraga ega bo‘lgan odatiy muhitlar uchun sukut bo‘yicha sozlamadir.

Izoh: Miyabi (GH200) kabi CPU va GPU NVLink orqali birlashtirilgan arxitekturalarda mem:managed o‘rniga mem:unified ishlatiladi; foydalanilayotgan muhitga qarab sozlamani o‘zgartiring (-gpu=ccnative,mem:unified).

OpenACC + OpenMP (MPI siz)

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

MPI ishlatilganda MPI wrapper kompilyatorlari (mpicc va boshqalar) ichkarida NVIDIA HPC SDK kompilyatorlarini (nvc va boshqalar) chaqiradigan qilib sozlangan bo‘lishi kerak. Ko‘p HPC klaster muhitlarida NVIDIA HPC SDK va MPI kutubxonalarini module load kabi buyruqlar bilan yuklash bu konfiguratsiyani avtomatik ta’minlaydi. Biroq tavsiya etilgan versiyalar va yuklash tartibi muhitga qarab farq qiladi, shuning uchun tafsilotlar uchun har bir muhitning foydalanuvchi qo‘llanmasi va boshqa hujjatlariga qarang.

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

Ishga tushirish

GPU uchun yig‘ilgan FrontISTR ni ishga tushirish tartibi asosan CPU holatidan farq qilmaydi. Umumiy ishga tushirish tartibi uchun Ishga tushirish qo‘llanmasi ga qarang.

Profillash

NVIDIA Nsight Systems (nsys) yordamida profillash ma’lumotlarini yig‘ish mumkin.

MPI siz

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

MPI bilan

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