Skip to content

Translation update pending

The Malayalam translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.

GPU ഉപയോഗിച്ചുള്ള ബിൽഡ്

NVIDIA HPC SDK-യിലെ OpenACC സൗകര്യം ഉപയോഗിച്ച് FrontISTR 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 മുൻകൂർ ധരിക്കുന്നതിനാൽ ഇത് നിർബന്ധമാണ്. CPU-ക്കും GPU-ക്കും വേർതിരിച്ച മെമ്മറി ഉള്ള സാധാരണ പരിസ്ഥിതികൾക്കുള്ള ഡിഫോൾട്ട് ക്രമീകരണമാണ് mem:managed.

കുറിപ്പ്: 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

OpenACC ഇല്ലാതെ (CPU പതിപ്പ്)

NVIDIA HPC SDK കമ്പൈലറുകൾ ഉപയോഗിച്ച് OpenACC ഇല്ലാത്ത CPU പതിപ്പ് ബിൽഡ് ചെയ്യാൻ -DNVHPC_NO_ACC=ON വ്യക്തമാക്കുക. അപ്പോൾ -acc, -Minfo=accel, -gpu=ccnative,mem:managed എന്നിവ സജ്ജീകരിക്കപ്പെടില്ല. അതേ കമ്പൈലറുകൾ ഉപയോഗിച്ച് ബിൽഡ് ചെയ്ത GPU പതിപ്പുമായി കണക്കുകൂട്ടൽ ഫലങ്ങൾ താരതമ്യം ചെയ്യാൻ ഈ ക്രമീകരണം ഉപയോഗിക്കുക.

mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
  -DNVHPC_NO_ACC=ON \
  -DWITH_MPI=OFF -DWITH_OPENMP=ON \
  ..
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