콘텐츠로 이동

Translation update pending

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

GPU 지원 빌드

FrontISTR는 NVIDIA HPC SDK의 OpenACC 기능을 사용하여 GPU에서 실행할 수 있습니다. 이 페이지에서는 GPU 지원을 활성화하여 FrontISTR를 빌드하고 실행하는 방법을 설명합니다.

필수 라이브러리는 필수 및 선택 의존 라이브러리를 참조하십시오.

빌드 절차

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 래퍼 컴파일러(예: 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