Skip to content

د 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) په کارولو سره د پروفایل ډاټا راټولېدای شي.

له 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