CESM2 在 amd 机器上安装

安装依赖库

这次所需要有 zlib,HDF5,NetCDF-C以及NetCDF-Fortran

安装HDF5

$ ./configure --prefix=你的安装路径/hdf5 --enable-fortran --enable-fortran2003 --enable-parallel
$ make -j 48
$ make install

添加环境变量

$ vim ~/.bashrc
export HDF5=你的安装路径/hdf5
export PATH=$HDF5/bin:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export INCLUDE=$HDF5/include:$INCLUDE
# 保存退出后
$ source ~/.bashrc

安装NetCDF-C

$ ./configure --prefix=你的安装路径/netcdf LDFLAGS="-L$HDF5/lib" CPPFLAGS="-I$HDF5/include" CC=mpiicc --disable-dap
$ make -j 48
$ make install

添加环境变量

export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export INCLUDE=$NETCDF/include:$INCLUDE
# 保存后退出
$ source ~/.bashrc

安装NetCDF-Fortran

$ ./configure --prefix=你的安装路径/netcdf CPPFLAGS="-I$HDF5/include -I$NETCDF/include" LDFLAGS="-L$HDF5/lib -L$NETCDF/lib" CC=mpiicc FC=mpiif90 F77=mpiif90 # 与NetCDF-C安装在同一目录下
$ make -j 48
$ make install

CESM2 主程序安装

# 解压从官网下载好的压缩包
$ tar zxf cesm2.tgz
$ cd cesm/cime/config/cesm/machines/
# 修改 config_machines.xml 文件
$ vim config_machines.xml
```xml
<!-- 机器代号 -->
<machine MACH="amd">
  <!-- 描述性的话 -->
  <DESC>
        amd machine 128 core
  </DESC>
  <NODENAME_REGEX>amd</NODENAME_REGEX>
  
  <!-- 系统和编译器 -->
  <OS>LINUX</OS>
  <COMPILERS>intel</COMPILERS>
  <!-- mpi库 -->
  <MPILIBS>impi</MPILIBS>
  

  <!-- 下面这些文件夹根据你的实际情况进行改动 -->
  <CIME_OUTPUT_ROOT>/root/soft/cesm/output</CIME_OUTPUT_ROOT>
  <DIN_LOC_ROOT>/root/soft/cesm/output/input</DIN_LOC_ROOT>
  <DIN_LOC_ROOT_CLMFORC>/root/soft/cesm/output/ptclm-data</DIN_LOC_ROOT_CLMFORC>
  <DOUT_S_ROOT>/root/soft/cesm/output/$CASE</DOUT_S_ROOT>
  <BASELINE_ROOT>/root/soft/cesm/output/cesm_baselines</BASELINE_ROOT>
  <CCSM_CPRNC>/root/soft/cesm/output/cprnc</CCSM_CPRNC>
  

  <!-- make 时候并行的数量,相当于 make -j 24 -->
  <GMAKE_J>24</GMAKE_J>
  

  <!-- 根据你的机器来确定提交作业的方式,这台机器没有作业调度系统所以写的 none -->
  <BATCH_SYSTEM>none</BATCH_SYSTEM>
  <SUPPORTED_BY>amd@amd</SUPPORTED_BY>

  <MAX_TASKS_PER_NODE>24</MAX_TASKS_PER_NODE>
  <MAX_MPITASKS_PER_NODE>24</MAX_MPITASKS_PER_NODE>
  <PROJECT_REQUIRED>FALSE</PROJECT_REQUIRED>


  <!-- 软件运行方式 -->
  <mpirun mpilib="default">
    <executable>mpiexec</executable>
    <arguments>
      <arg name="anum_tasks"> -np {
    
    {
    
     total_tasks }} </arg>
    </arguments>
  </mpirun>
  <!-- 这台机器没有集成 module,根据实际情况填写  -->
  <module_system type="none"/>
  
  <!-- 这里是一些环境变量  -->
  <environment_variables>
      <env name="OMP_STACKSIZE">256M</env>
    </environment_variables>
  <environment_variables>
    <env name="OMP_STACKSIZE">256M</env>
  </environment_variables>
</machine>

如果有作业调度系统,需要修改下面的文件,没有可以添加下面两行

$ vim config_batch.xml
<!-- 这台机器没有作业调度,根据你的实际情况填写  -->
<batch_system MACH="amd" type="none" version="9.1">
</batch_system>

保存后退出

进入 /cesm/cime/scripts

$ cd 你的路径/cesm/cime/scripts
$ ./create_newcase -case test_case \ # 你想创建的文件夹名称
-res f19_g16 -compset X \ # 这些参数可以使用 ./create_newcase -h 查看
-mach amd # 刚才在 config_machines.xml 文件中添加的机器代号
$ cd test_case
$ ./case.setup  

如果上面两步出错则需要检查 config_machines.xml 和 config_batch.xml 文件里更改的内容

$ vim Macros.make
# 修改以下内容
MPIFC := mpiif90
MPICC := mpiicc
MPICXX := mpiicxx
# 在 endif 后面加入
NETCDF_PATH := 你的NetCDF安装路径
HDF5_PATH :=  你的HDF5安装路径

SLIBS += -L${NETCDF_PATH}/lib -lnetcdff -lnetcdf -L${HDF5_PATH}/lib -lhdf5_hl -lhdf5 -ldl -lm -lz -lcurl -L${MKLROOT}/lib/intel64 -lmkl_rt -lpthread -ldl
LDFLAGS += -L${NETCDF_PATH}/lib -lnetcdff -lnetcdf -L${HDF5_PATH}/lib -lhdf5_hl -lhdf5 -ld -lm -lz -lcurl -L${MKLROOT}/lib/intel64 -lmkl_rt -lpthread-ldl

# 注释下面的代码
#ifeq ($(MPILIB),mvapich2)
#SLIBS := $(SLIBS) #-mkl=cluster
#endif
#ifeq ($(MPILIB),mpich2)
#SLIBS := $(SLIBS) #-mkl=cluster
#endif
#ifeq ($(MPILIB),mpt)
#SLIBS := $(SLIBS) #-mkl=cluster
#endif
#ifeq ($(MPILIB),openmpi)
#SLIBS := $(SLIBS) #-mkl=cluster
#endif
#ifeq ($(MPILIB),mpich)
#SLIBS := $(SLIBS) #-mkl=cluster
#endif
#ifeq ($(MPILIB),mvapich)
#SLIBS := $(SLIBS) #-mkl=cluster
#endif
#ifeq ($(MPILIB),impi)
#SLIBS := $(SLIBS) #-mkl=cluster
#endif
#ifeq ($(MPILIB),mpi-serial)
#SLIBS := $(SLIBS) #-mkl
#endif

保存后退出

$ ./case.build 

安装成功后在 output/test_case/bld 文件夹中可以看到 cesm.exe 文件

总结一下安装的难点:在理解了 config_machines.xml 和 config_batch.xml 文件中各个参数含义的情况下,根据实际的情况进行参数的修改

常见错误

  1. 报错 ld: 找不到 -lcsm_share
    解决办法:cd 到你的output目录下,将test_case/bld/intel/mpich/nodebug/nothreads/mct/noesmf/c1a1l1i1o1r1g1w1e1/csm_share/
    中的 libcsm_share.a 文件复制到 test_case/bld/intel/mpich/nodebug/nothreads/mct/noesmf/c1a1l1i1o1r1g1w1e1/lib 中

  2. 报错 DEV_ERROR: Invalid arguments trying to run subprocess:git status
    解决办法:
    使用 ./case.build --skip-provenance-check

猜你喜欢

转载自blog.csdn.net/qq_32115939/article/details/101286973
AMD