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) प्रयोग गरी प्रोफाइल डेटा सङ्कलन गर्न सकिन्छ।