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) ব্যবহার করে প্রোফাইল ডেটা সংগ্রহ করা যায়।