CMake를 이용한 빌드 절차¶
이 페이지에서는 FrontISTR 소스 코드의 입수부터 빌드·설치까지의 절차를 설명한다. 의존 라이브러리의 자세한 내용은 필수·선택 의존 라이브러리를 참조한다.
소스 코드 입수¶
FrontISTR 소스 코드는 GitLab 또는 GitHub에서 입수할 수 있다.
# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git
# GitHub(미러)
git clone https://github.com/FrontISTR/FrontISTR.git
빌드 절차¶
FrontISTR는 아웃오브소스 빌드를 전제로 한다(소스 트리 바로 아래에서의 빌드는 금지되어 있다). build 디렉터리를 만들고 그 안에서 cmake를 실행한다.
cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)
빌드 후에는 /path/to/FrontISTR/build/fistr1/fistr1로 직접 실행할 수 있다. 시스템 경로(CMAKE_INSTALL_PREFIX)에 설치하는 경우에는 추가로 다음을 실행한다.
CMake 옵션 목록¶
「검출 시 ON」으로 기재된 옵션은 cmake 실행 시 시스템에서 해당 라이브러리가 발견되면 자동으로 활성화된다. 명시적으로 -DWITH_XXX=OFF를 지정하면 비활성화할 수 있다.
| 옵션 | 기본값 | 설명 |
|---|---|---|
WITH_MPI |
ON |
MPI 병렬을 활성화한다 |
WITH_OPENMP |
검출 시 ON | OpenMP 스레드 병렬을 활성화한다 |
WITH_METIS |
검출 시 ON | METIS에 의한 영역 분할을 활성화한다 |
METIS_VER_4 |
OFF |
METIS v4를 사용한다(OFF이면 v5) |
WITH_MUMPS |
검출 시 ON | MUMPS 병렬 직접법 솔버를 활성화한다 |
WITH_MKL |
검출 시 ON | Intel MKL(PARDISO 포함)을 활성화한다 |
WITH_LAPACK |
검출 시 ON | LAPACK에 의한 조건수 추정을 활성화한다 |
WITH_ML |
검출 시 ON | Trilinos ML에 의한 AMG 전처리를 활성화한다 |
WITH_REFINER |
검출 시 ON | REVOCAP_Refiner에 의한 메시 세분화를 활성화한다 |
WITH_REVOCAP |
검출 시 ON | REVOCAP_Coupler에 의한 연성 해석을 활성화한다 |
WITH_TOOLS |
ON |
부속 도구 모음을 빌드한다 |
WITH_DOC |
OFF |
Doxygen으로 API 문서를 생성한다 |
WITH_NETCDF |
검출 시 ON | Exodus II 형식 출력(NetCDF)을 활성화한다 |
WINDOWS |
OFF |
Windows용 빌드를 활성화한다 |
CMAKE_BUILD_TYPE |
RELEASE |
빌드 유형(RELEASE / DEBUG) |
CMAKE_INSTALL_PREFIX |
/usr/local |
설치 대상 디렉터리 |
DEBUG_EXTRA |
OFF |
메모리 누수 검사를 활성화한다(GCC용, -fsanitize=address) |
DEBUG 빌드¶
CMAKE_BUILD_TYPE=DEBUG를 지정하면 컴파일러별로 다음 디버그 플래그가 추가된다.
| 컴파일러 | 추가 플래그 |
|---|---|
| GCC | -fbounds-check -fbacktrace |
| Intel | -check uninit,bound -traceback |
GPU를 사용한 빌드¶
NVIDIA HPC SDK(nvc/nvc++/nvfortran)를 컴파일러로 지정한 경우 CMake는 자동으로 다음 플래그를 추가한다.
| 플래그 | 설명 |
|---|---|
-acc |
OpenACC를 활성화한다 |
-Minfo=accel |
GPU 오프로딩 정보를 컴파일 시 표시한다 |
-gpu=ccnative,mem:managed |
빌드 환경의 GPU를 자동 검출하여 타깃을 결정하고 Unified Memory를 사용한다 |
OpenACC를 이용한 GPU 빌드의 자세한 절차는 GPU를 사용한 빌드를 참조한다.