前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CESM 2.1.1 移植指南(CentOS 7.6)

CESM 2.1.1 移植指南(CentOS 7.6)

作者头像
MeteoAI
发布2020-12-22 15:17:08
2.8K0
发布2020-12-22 15:17:08
举报
文章被收录于专栏:MeteoAIMeteoAI

CESM 2.1.1 移植指南(CentOS 7.6)

1 介绍

CESM是一个完全耦合的地球系统的数值模拟,由大气、海洋、冰、陆地表面、碳循环和其他组成部分组成。CESM包括一个气候模型,提供地球过去、现在和未来的模拟。CESM是CCSM的升级版,2010年,国家科学基金会(NSF)和美国能源部(DoE)的重要资金(NSF)和重要资金的全球动力学部门(CGD)在2010年发布了CESM1。

关于CESM的更多信息请访问CESM官网[1]

语言:Fortran

一句话描述:地球系统模型。

开源协议:自定义开源协议。

建议使用版本为:CESM 2.1.1

2 环境要求

硬件要求:

CPU Kunpeng 920

软件要求:

  • CESM 2.1.1 https://github.com/ESCOMP/cesm/releases/tag/release-cesm2.1.1
  • OpenBLAS 0.3.6 https://github.com/xianyi/OpenBLAS/releases
  • HDF5 1.10.1 http://hdfgroup.org/HDF5/
  • PNETCDF 1.9.0 https://parallel-netcdf.github.io/wiki/Download.html
  • NETCDF 4.4.1.1 https://github.com/Unidata/netcdf-c/releases/tag/v4.4.1.1
  • NETCDF-F 4.4.1 https://github.com/Unidata/netcdf-fortran/releases/tag/v4.4.1

操作系统要求:

  • CentOS 7.6 https://www.centos.org/download/
  • Kernel 4.14.0-115.el7a.0.1 https://www.centos.org/download/

3 移植规划数据

本章节给出CESM软件在移植过程中涉及到的相关软件安装规划路径的用途及详细说明。

表 移植规划数据

序号

软件安装规划路径

用途

说明

1

-

基础环境搭建中的各安装包安装路径。

参考《HPC解决方案 基础环境搭建指导书》中“安装规划数据”章节。

2

/path/to/OPENBLAS

OpenBLAS的安装规划路径。

这里的安装规划路径只是一个举例说明,建议部署在共享路径中。现网需要根据实际情况调整,后续章节凡是遇到安装路径的命令,都以现网实际规划的安装路径为准进行替换,不再单独说明。

3

/path/to/HDF5

HDF5的安装规划路径。

4

/path/to/PNETCDF

Pnetcdf的安装规划路径。

5

/path/to/NETCDF

Netcdf的安装规划路径。

6

/path/to/CESM

CESM的安装规划路径。

4 配置编译环境

前提条件:使用SFTP工具将各安装包上传至服务器对应目录下。

配置流程:

表 配置流程

序号

配置项

说明

1

基础环境搭建

参考《HPC解决方案 基础环境搭建指导书》中“单机场景环境搭建”章节。

2

安装OpenBLAS

参考4.1 安装OpenBLAS。

3

安装HDF5

参考4.2 安装HDF5。

4

安装PNETCDF

参考4.3 安装PNETCDF。

5

安装NETCDF

参考4.4 安装NETCDF。

6

安装NETCDF-F

参考4.5 安装NETCDF-F。

4.1 安装OpenBLAS

操作步骤

  • 步骤 1 使用PuTTY工具,以root用户登录服务器。
  • 步骤 2 执行以下命令解压openblas安装包。

tar xvf OpenBLAS-0.3.6.tar.gz

  • 步骤 3 执行以下命令进入解压后的目录。

cd OpenBLAS-0.3.6

  • 步骤 4 执行以下命令进行配置。

export CC='which gcc

export CXX='which g++

export FC='which gfortran
  • 步骤 5 执行以下命令进行编译安装。
make

make PREFIX=/path/to/OPENBLAS install

----结束

4.2 安装HDF5

操作步骤

  • 步骤 1 使用PuTTY工具,以root用户登录服务器。
  • 步骤 2 执行以下命令解压hdf5安装包。

tar -xvf hdf5-1.10.1.tar.gz

  • 步骤 3 执行以下命令进入解压后的目录。

cd hdf5-1.10.1

  • 步骤 4 执行以下命令设置编译前环境。
export MPICC=mpicc

export MPICXX=mpicxx

export MPIFC=mpifort
  • 步骤 5 执行以下命令进行配置。
./configure --prefix=/path/to/HDF5  --build=aarch64-unknown-linux-gnu --enable-fortran --enable-static=yes --enable-parallel --enable-shared CC=$MPICC CXX=$MPICXX FC=$MPIFC F77=$MPIFC
  • 步骤 6执行以下命令进行编译安装。
make -j 16

make install

----结束

4.3 安装PNETCDF

操作步骤

  • 步骤 1 使用PuTTY工具,以root用户登录服务器。
  • 步骤 2 执行以下命令解压Pnetcdf安装包。

tar -xvf parallel-netcdf-1.9.0.tar.bz2

  • 步骤 3 执行以下命令进入解压后的目录。

cd parallel-netcdf-1.9.0

  • 步骤 4 执行以下命令设置编译前环境。
export MPICC=mpicc

export MPICXX=mpicxx

export MPIFC=mpifort
  • 步骤 5 执行以下命令进行配置。
  • 步骤 6 执行以下命令进行编译安装。
make -j 16

make install

----结束

4.4 安装NETCDF

操作步骤

  • 步骤 1 使用PuTTY工具,以root用户登录服务器。
  • 步骤 2 执行以下命令解压Netcdf安装包。

tar -xvf netcdf-4.4.1.1.tar.gz

  • 步骤 3 执行以下命令进入解压后的目录。

cd netcdf-4.4.1.1

  • 步骤 4 执行以下命令设置编译前环境。
export MPICC=mpicc

export MPICXX=mpicxx

export MPIFC=mpifort

export CPPFLAGS="-I/path/to/HDF5/include -I/path/to/PNETCDF/include"

export LDFLAGS="-L/path/to/HDF5/lib -L/path/to/PNETCDF/lib -Wl,-rpath=/path/to/HDF5/lib -Wl,-rpath=/path/to/PNETCDF/lib"

export CFLAGS="-L/path/to/HDF5/lib -L/path/to/PNETCDF/lib -I/path/to/HDF5/include -I/path/to/PNETCDF/include"
  • 步骤 5 执行以下命令进行配置。
./configure --prefix=/path/to/NETCDF --build=aarch64-unknown-linux-gnu --enable-shared --enable-netcdf-4 --enable-dap --with-pic --disable-doxygen --enable-static --enable-pnetcdf --enable-largefile CC=$MPICC CXX=$MPICXX FC=$MPIFC F77=$MPIFC
  • 步骤 6 执行以下命令进行编译安装。
make -j 16

make install

----结束

4.5 安装NETCDF-F

操作步骤

  • 步骤 1 使用PuTTY工具,以root用户登录服务器。
  • 步骤 2 执行以下命令解压Netcdf-fortran安装包。

tar -xvf netcdf-fortran-4.4.1.tar.gz

  • 步骤 3 执行以下命令进入解压后的目录。

cd netcdf-fortran-4.4.1

  • 步骤 4 执行以下命令设置编译前环境。
export MPICC=mpicc

export MPICXX=mpicxx

export MPIFC=mpifort

export CPPFLAGS="-I/path/to/HDF5/include -I/path/to/NETCDF/include"

export LDFLAGS="-L/path/to/HDF5/lib -L/path/to/NETCDF/lib -Wl,-rpath=/path/to/HDF5/lib -Wl,-rpath=/path/to/NETCDF/lib"

export CFLAGS="-L/path/to/HDF5/lib -L/path/to/NETCDF/lib -I/path/to/HDF5/include -I/path/to/NETCDF/include"

export CXXFLAGS="-L/path/to/HDF5/lib -L/path/to/NETCDF/lib -I/path/to/HDF5/include -I/path/to/NETCDF/include"

export FCFLAGS="-L/path/to/HDF5/lib -L/path/to/NETCDF/lib -I/path/to/HDF5/include -I/path/to/NETCDF/include"
  • 步骤 5 执行以下命令进行配置。
./configure --prefix=/path/to/NETCDF  --build=aarch64-unknown-linux-gnu --enable-shared --with-pic --disable-doxygen --enable-largefile --enable-static CC=$MPICC CXX=$MPICXX FC=$MPIFC F77=$MPIFC
  • 步骤 6 执行以下命令进行编译安装。
make -j 16

make install
  • 步骤 7 执行以下命令清空编译参数。

unset CC CXX FC F77 CPPFLAGS LDFLAGS CFLAGS CXXFLAGS FCFLAGS

----结束

5 获取源码

操作步骤

  • 步骤 1 下载CESM安装包“cesm-release-cesm2.1.1.tar.gz”。

下载地址:https://github.com/ESCOMP/CESM/tags?after=cesm2.1-nemo.v01

  • 步骤 2 使用SFTP工具将CESM安装包上传至服务器“/path/to/CESM”目录。

----结束

6 编译和安装

前提条件:配置外部网络,使服务器可以接入Internet网络。

操作步骤

  • 步骤 1 使用PuTTY工具,以root用户登录服务器。
  • 步骤 2 执行以下命令解压CESM安装包,并且进入解压后的目录。
tar -xvf cesm-release-cesm2.1.1.tar.gz

cd cesm-release-cesm2.1.1
  • 步骤 3 执行以下命令安装environment-modules,git和svn。

yum install git svn environment-modules -y

  • 步骤 4 执行以下命令添加验证信息。

svn ls https://svn-ccsm-models.cgd.ucar.edu/ww3/release_tags

  • 步骤 5 执行以下命令安装CESM其他组件。

``./manage_externals/checkout_externals`

  • 步骤 6 执行以下命令检查组件安装情况,显示如下信息表示正常。
./manage_externals/checkout_externals -S

Processing externals description file : Externals.cfg
Processing externals description file : Externals_CLM.cfg
Processing externals description file : Externals_POP.cfg
Processing externals description file : Externals_CISM.cfg
Checking status of externals: clm, fates, ptclm, mosart, ww3, cime, cice, pop, cvmix, marbl, cism, source_cism, rtm, cam,
./cime
./components/cam
./components/cice
./components/cism
./components/cism/source_cism
./components/clm
./components/clm/src/fates
./components/clm/tools/PTCLM
./components/mosart
./components/pop
./components/pop/externals/CVMix
./components/pop/externals/MARBL
./components/rtm
./components/ww3
  • 步骤 7 执行以下命令修改“config_machines.xml”文件。

1.vi cime/config/cesm/machines/config_machines.xml

2.按“i”进入编辑模式,修改“config_machines.xml”文件的第153,170,171和176行,注意粗体部分。

153  <NODENAME_REGEX>node1</NODENAME_REGEX>
170  <MAX_TASKS_PER_NODE>96</MAX_TASKS_PER_NODE>
171  <MAX_MPITASKS_PER_NODE>96</MAX_MPITASKS_PER_NODE>
176  <arg name="ntasks"> --allow-run-as-root --mca btl ^openib  -np {{ total_tasks }} </arg>

3.按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

----结束

7 运行和验证

操作步骤

  • 步骤 1 使用PuTTY工具,以root用户登录服务器。
  • 步骤 2 执行以下命令进入工作目录。
cd /path/to/CESM/cesm-release-cesm2.1.1/cime/scripts
  • 步骤 3 执行以下命令创建算例。
./create_newcase --case mycase --compset X --res f19_g16
  • 步骤 4 执行以下命令下载输入数据。
cd mycase

./check_case

./check_input_data --download
  • 步骤 5 执行以下命令加载环境变量。
export PATH=/path/to/GNU/bin:/path/to/OPENMPI/bin:$PATH

export LD_LIBRARY_PATH=/path/to/GNU/lib64:/path/to/OPENMPI/lib:/path/to/OPENBLAS/lib:/path/to/HDF5/lib:/path/to/PNETCDF/lib:/path/to/NETCDF/lib:$LD_LIBRARY_PATH

export NETCDF_PATH=/path/to/NETCDF/bin
  • 步骤 6 执行以下命令运行CESM程序。

./case.build

./case.submit

当CESM生成的日志“OUTCAR”的结尾处出现如图7-1所示内容时,表示CESM程序运行正常结束。

需要查看输出到屏幕中的日志,如图7-1所示红线处,需要手动计算出时间差,数值越少性能越优。

图7-1 测试样例

----结束

8 更多资源

GITHUB开发者论坛相关信息:https://esmci.github.io/cime/index.html

参考资料

[1]

CESM官网: https://github.com/ESCOMP/cesm/releases/tag/release-cesm2.1.1/


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MeteoAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CESM 2.1.1 移植指南(CentOS 7.6)
    • 1 介绍
      • 2 环境要求
        • 硬件要求:
        • 软件要求:
        • 操作系统要求:
        • 3 移植规划数据
      • 4 配置编译环境
        • 4.1 安装OpenBLAS
        • 4.2 安装HDF5
        • 4.3 安装PNETCDF
        • 4.4 安装NETCDF
        • 4.5 安装NETCDF-F
      • 5 获取源码
        • 6 编译和安装
          • 7 运行和验证
            • 8 更多资源
              • 参考资料
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档