براہِ راست مواد پر جائیں

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