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 မှတ်ဉာဏ် ကို အခြေခံသောကြောင့် မဖြစ်မနေ သတ်မှတ်ရသည်။ 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) ကို အသုံးပြု၍ ပရိုဖိုင် ဒေတာ ကို စုဆောင်းနိုင်သည်။