工作需要在 HPC 集群上編譯 FaSTMM峻贮,踩了一些小坑之后解決了問(wèn)題。現(xiàn)將主要步驟總結(jié)如下:
首先泼诱,我測(cè)試時(shí)集群上的 HDF5 幾個(gè)版本均不奏效嗤朴,因此需要自己編譯具有 Fortran 支持的 HDF5。這一步比較簡(jiǎn)單渊抄,我寫(xiě)在了另一篇文章里: HPC 編譯 HDF5钧惧。
FaSTMM 依賴(lài)于 LAPACK 和 BLAS晤锥,編譯腳本需要 CMake掉蔬,還需要 Fortran 編譯器來(lái)進(jìn)行編譯,因此需要提前在集群上加載好矾瘾。其中 gcc 應(yīng)該在上一步編譯 HDF5 時(shí)已經(jīng)加載上了女轿。
module load gcc/4.8.5
module load cmake/3.16.0
module load lapack/3.9.0-gcc-4.8.5
克隆 FaSTMM 倉(cāng)庫(kù)到集群本地。
git clone https://bitbucket.org/planetarysystemresearch/fastmm_v1.0.git
cd fastmm_v1.0
這里需要對(duì) CMakeLists.txt
進(jìn)行一些修改:
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"
主要是在編譯選項(xiàng)中加上了 -lblas
和 -llapack
壕翩,否則在編譯完的鏈接那一步會(huì)報(bào)錯(cuò)找不到有關(guān)函數(shù)蛉迹。
接下來(lái)就可以編譯了。注意要使用 HDF5 附帶的 h5fc
:
mkdir build && cd build
FC=~/.local/hdf5/bin/h5fc cmake ../src
make