Կառուցում GPU-ի կիրառմամբ¶
FrontISTR-ը կարող է աշխատել GPU-ի վրա՝ օգտագործելով NVIDIA HPC SDK-ի OpenACC հնարավորությունները։ Այս էջում նկարագրվում են 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 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) գործիքով։