ವಿಷಯಕ್ಕೆ ತೆರಳಿ

GPU ಬಳಸಿ ಬಿಲ್ಡ್ ಮಾಡುವುದು

FrontISTR ಅನ್ನು NVIDIA HPC SDK ಯ OpenACC ವೈಶಿಷ್ಟ್ಯ ಬಳಸಿ GPU ಮೇಲೆ ಚಲಾಯಿಸಬಹುದು. ಈ ಪುಟವು 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 ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪತ್ತೆಹಚ್ಚಿ ಸೂಕ್ತ ಗುರಿಯನ್ನು ಆಯ್ಕೆಮಾಡುವ ಆಯ್ಕೆಯಾಗಿದ್ದು, ಪ್ರತಿ ಪರಿಸರಕ್ಕೆ ಕೈಯಾರೆ ಬದಲಾವಣೆ ಅಗತ್ಯವಿಲ್ಲ. 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 ವ್ರಾಪರ್ ಕಂಪೈಲರ್ (mpicc ಇತ್ಯಾದಿ) ಒಳಗಿನಿಂದ NVIDIA HPC SDK ಕಂಪೈಲರ್ (nvc ಇತ್ಯಾದಿ) ಅನ್ನು ಕರೆಯುವಂತೆ ಸಂರಚಿಸಿರಬೇಕು. HPC ಕ್ಲಸ್ಟರ್ ಪರಿಸರದಲ್ಲಿ module load ಮುಂತಾದ ಆಜ್ಞೆಗಳಿಂದ NVIDIA HPC SDK ಮತ್ತು MPI ಲೈಬ್ರರಿಗಳನ್ನು ಲೋಡ್ ಮಾಡಿದಾಗ ಈ ಸಂರಚನೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಗುವ ಪರಿಸರಗಳು ಅನೇಕವಿವೆ. ಆದರೆ ಶಿಫಾರಸು ಆವೃತ್ತಿ ಮತ್ತು ಲೋಡ್ ಕ್ರಮ ಪರಿಸರಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಬದಲಾಗುವುದರಿಂದ, ವಿವರಗಳಿಗೆ ಪ್ರತಿ ಪರಿಸರದ ಬಳಕೆದಾರ ಕೈಪಿಡಿಯನ್ನು ನೋಡಿ.

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) ಬಳಸಿ ಪ್ರೊಫೈಲ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಬಹುದು.

MPI ಇಲ್ಲದೆ

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

MPI ಜೊತೆಗೆ

nsys profile -t cuda,mpi -s none -o profile_result \
  mpiexec -n <ಪ್ರಕ್ರಿಯೆಗಳ_ಸಂಖ್ಯೆ> /path/to/FrontISTR/build/fistr1/fistr1 -t 8