跳转至

使用 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 --build . --target install

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
cmake -DCMAKE_BUILD_TYPE=DEBUG ..

使用 GPU 构建

将 NVIDIA HPC SDK(nvc/nvc++/nvfortran)指定为编译器时,CMake 会自动添加以下标志。

标志 说明
-acc 启用 OpenACC
-Minfo=accel 编译时显示 GPU offload 信息
-gpu=ccnative,mem:managed 自动检测构建环境中的 GPU 以确定目标,并使用 Unified Memory

有关使用 OpenACC 进行 GPU 构建的详细步骤,请参见使用 GPU 构建