HPC 编译 FaSTMM

2022-11-17  本文已影响0人  Kernholz

工作需要在 HPC 集群上编译 FaSTMM,踩了一些小坑之后解决了问题。现将主要步骤总结如下:

首先,我测试时集群上的 HDF5 几个版本均不奏效,因此需要自己编译具有 Fortran 支持的 HDF5。这一步比较简单,我写在了另一篇文章里: HPC 编译 HDF5

FaSTMM 依赖于 LAPACK 和 BLAS,编译脚本需要 CMake,还需要 Fortran 编译器来进行编译,因此需要提前在集群上加载好。其中 gcc 应该在上一步编译 HDF5 时已经加载上了。

module load gcc/4.8.5
module load cmake/3.16.0
module load lapack/3.9.0-gcc-4.8.5 

克隆 FaSTMM 仓库到集群本地。

git clone https://bitbucket.org/planetarysystemresearch/fastmm_v1.0.git
cd fastmm_v1.0

这里需要对 CMakeLists.txt 进行一些修改:

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ed0bef3..596f812 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -13,7 +13,7 @@ FIND_PACKAGE(HDF5 COMPONENTS Fortran REQUIRED)
 INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR})
 
 
-SET (CMAKE_Fortran_FLAGS "-O3 -cpp -mtune=native -fopenmp")
+SET (CMAKE_Fortran_FLAGS "-O3 -cpp -mtune=native -fopenmp -lblas -llapack")
 
 ADD_EXECUTABLE(${PROJECTNAME} "main.f90"
                         "common.f90"

主要是在编译选项中加上了 -lblas-llapack,否则在编译完的链接那一步会报错找不到有关函数。

接下来就可以编译了。注意要使用 HDF5 附带的 h5fc

mkdir build && cd build
FC=~/.local/hdf5/bin/h5fc cmake ../src
make
上一篇下一篇

猜你喜欢

热点阅读