美文网首页
HPC 编译 FaSTMM

HPC 编译 FaSTMM

作者: Kernholz | 来源:发表于2022-11-17 16:10 被阅读0次

    工作需要在 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
    

    相关文章

      网友评论

          本文标题:HPC 编译 FaSTMM

          本文链接:https://www.haomeiwen.com/subject/wqgyxdtx.html