Budowanie z obsługą GPU¶
FrontISTR może działać na GPU z wykorzystaniem funkcjonalności OpenACC dostępnej w NVIDIA HPC SDK. Na tej stronie opisano sposób zbudowania FrontISTR z włączoną obsługą GPU oraz sposób jego uruchamiania.
Informacje o wymaganych bibliotekach znajdują się w Wymagane i opcjonalne zależności.
Procedura budowania¶
Użyj kompilatorów NVIDIA HPC SDK (nvc, nvc++ i nvfortran). W środowisku klastra HPC przed rozpoczęciem budowania należy załadować NVIDIA HPC SDK zgodnie z instrukcją danego środowiska (na przykład module load nvhpc).
Opcjonalne biblioteki, takie jak METIS, MUMPS i MKL, nie obsługują GPU, dlatego w poniższych przykładach poleceń są wyłączone (na przykład WITH_METIS=OFF).
Jak opisano w Budowanie za pomocą CMake, po wskazaniu kompilatorów NVIDIA HPC SDK (nvc, nvc++, nvfortran) w CMakeLists.txt ustawiane jest -gpu=ccnative,mem:managed. ccnative jest opcją, która automatycznie wykrywa GPU w środowisku budowania i wybiera optymalny cel, dlatego nie trzeba ręcznie dostosowywać ustawień do każdego środowiska. mem: określa sposób obsługi pamięci GPU; jest wymagane, ponieważ implementacja GPU w FrontISTR zakłada użycie Unified Memory. mem:managed jest ustawieniem domyślnym dla typowych środowisk, w których CPU i GPU mają oddzielną pamięć.
Uwaga: W architekturach takich jak Miyabi (GH200), w których CPU i GPU są zintegrowane przez NVLink, zamiast
mem:managedużywa sięmem:unified; ustawienie należy zmienić odpowiednio do używanego środowiska (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (bez 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¶
Podczas korzystania z MPI kompilatory-wrappery MPI (takie jak mpicc) muszą być skonfigurowane tak, aby wewnętrznie wywoływały kompilatory NVIDIA HPC SDK (takie jak nvc). W wielu środowiskach klastrów HPC załadowanie NVIDIA HPC SDK i bibliotek MPI poleceniami takimi jak module load automatycznie zapewnia taką konfigurację. Zalecane wersje i procedury ładowania różnią się jednak między środowiskami, dlatego szczegółowe informacje należy sprawdzić w podręczniku użytkownika lub innej dokumentacji danego środowiska.
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
Uruchamianie¶
Procedura uruchamiania wersji z obsługą GPU jest zasadniczo taka sama jak dla wersji CPU. Ogólną procedurę uruchamiania opisano w Przewodniku uruchamiania.
Profilowanie¶
Dane profilowania można zbierać za pomocą NVIDIA Nsight Systems (nsys).