GPU-ის გამოყენებით აგება¶
FrontISTR შეიძლება შესრულდეს GPU-ზე NVIDIA HPC SDK-ის OpenACC ფუნქციონალის გამოყენებით. ამ გვერდზე აღწერილია GPU-ის ჩართული ვერსიის აგებისა და შესრულების პროცედურა.
წინაპირობად საჭირო ბიბლიოთეკებისთვის იხილეთ აუცილებელი და არასავალდებულო დამოკიდებულებების ბიბლიოთეკები.
აგების პროცედურა¶
გამოიყენეთ NVIDIA HPC SDK-ის კომპილატორები (nvc, nvc++, nvfortran). HPC კლასტერის გარემოში აგებამდე NVIDIA HPC SDK უნდა ჩაიტვირთოს გარემოს სახელმძღვანელოს შესაბამისად (მაგალითად: module load nvhpc).
METIS, MUMPS, MKL და სხვა არასავალდებულო ბიბლიოთეკები GPU-ს არ უჭერს მხარს, ამიტომ ქვემოთ მოცემულ ბრძანებებში ისინი გამორთულია (WITH_METIS=OFF და სხვ.).
როგორც CMake-ით აგების პროცედურაში არის აღწერილი, თუ კომპილატორებად მითითებულია NVIDIA HPC SDK (nvc, nvc++, nvfortran), CMakeLists.txt-ში დაყენდება -gpu=ccnative,mem:managed. ccnative ავტომატურად ამოიცნობს აგების გარემოს GPU-ს და არჩევს შესაბამის ოპტიმალურ target-ს, ამიტომ გარემოს მიხედვით ხელით ცვლილება საჭირო არ არის. mem: განსაზღვრავს GPU მეხსიერების დამუშავებას; FrontISTR-ის GPU რეალიზაცია Unified Memory-ს ეყრდნობა, ამიტომ ამ პარამეტრის მითითება აუცილებელია. mem:managed არის ნაგულისხმევი პარამეტრი ჩვეულებრივი გარემოსთვის, სადაც CPU-სა და GPU-ს ცალკე მეხსიერება აქვთ.
შენიშვნა: Miyabi-ის (GH200) მსგავს არქიტექტურებში, სადაც CPU და GPU NVLink-ით არის გაერთიანებული,
mem:managed-ის ნაცვლად გამოიყენებაmem:unified; შესაბამისად, შეცვალეთ პარამეტრი გამოყენებული გარემოს მიხედვით (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (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¶
MPI-ის გამოყენებისას MPI wrapper კომპილატორი (mpicc და სხვ.) შიგნით უნდა იძახებდეს NVIDIA HPC SDK-ის კომპილატორს (nvc და სხვ.). HPC კლასტერებში NVIDIA HPC SDK-ისა და MPI ბიბლიოთეკების module load-ით ჩატვირთვისას ასეთი კონფიგურაცია ხშირად ავტომატურად იქმნება, თუმცა რეკომენდებული ვერსიები და ჩატვირთვის პროცედურები გარემოს მიხედვით განსხვავდება; დეტალებისთვის იხილეთ შესაბამისი გარემოს მომხმარებლის სახელმძღვანელო.
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
შესრულების მეთოდი¶
GPU ვერსიის შესრულების პროცედურა ძირითადად იგივეა, რაც CPU ვერსიისთვის. ზოგადი შესრულების პროცედურისთვის იხილეთ შესრულების სახელმძღვანელო.
პროფილირება¶
პროფილირების მონაცემების შეგროვება შესაძლებელია NVIDIA Nsight Systems-ის (nsys) გამოყენებით.