使用 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 以 out-of-source build 为前提(禁止在源代码树根目录中构建)。创建 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 offload 信息 |
-gpu=ccnative,mem:managed |
自动检测构建环境中的 GPU 以确定目标,并使用 Unified Memory |
有关使用 OpenACC 进行 GPU 构建的详细步骤,请参见使用 GPU 构建。