Skip to content

ប៊ីលដ៍ដោយប្រើ GPU

FrontISTR អាចដំណើរការលើ GPU ដោយប្រើមុខងារ OpenACC របស់ NVIDIA HPC SDK។ ទំព័រនេះពន្យល់នីតិវិធីប៊ីលដ៍ដែលបើក 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:managedccnative ជាជម្រើសដែលរកឃើញ GPU ក្នុងបរិស្ថានប៊ីលដ៍ដោយស្វ័យប្រវត្តិហើយជ្រើសគោលដៅសមស្របដូច្នេះមិនចាំបាច់កែដោយដៃតាមបរិស្ថានទេ។ mem: ជាជម្រើសកំណត់របៀបដោះស្រាយអង្គចងចាំ GPU ហើយត្រូវការចាំបាច់ព្រោះការអនុវត្ត GPU របស់ FrontISTR សន្មត Unified Memory។ mem:managed ជាការកំណត់លំនាំដើមសម្រាប់បរិស្ថានទូទៅដែល CPU និង GPU មានអង្គចងចាំដាច់ដោយឡែក។

ចំណាំ៖ ក្នុងស្ថាបត្យកម្មដែល CPU និង GPU ត្រូវបានបញ្ចូលតាម NVLink ដូច Miyabi (GH200) ប្រើ mem:unified ជំនួស mem:managed ដូច្នេះត្រូវកែតាមបរិស្ថានដែលប្រើ (-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 wrapper កម្មវិធីចងក្រង (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