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 क्लस्टर परिवेश में 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) का उपयोग करके प्रोफ़ाइल डेटा एकत्र किया जा सकता है।