CESM 1.2.0
应用介绍
通用地球系统模式(CESM)是美国国家大气研究中心最新推出的地球系统耦合模式,对解决气候(地球)系统建模中所涉及的新挑战和新问题具有很大的帮助。
使用指南
安装CESM所需的前置软件
CESM 1.2.0所需要的前置软件有:zlib
,hdf5
以及netcdf
,上述软件可以用intel
或者pgi
进行编译,这里以intel
编译为例。
首先,在用户根目录下的
.bashrc
文件中定义intel
编译器,这里以学校服务器上安装好的intel2020
编译器为例,也可以用自己安装的intel
编译器。#INTEL source /opt/intel/compilers_and_libraries_2020.1.217/linux/bin/compilervars.sh inteL64 source /opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64/bin/mpivars.sh intel64 source /opt/intel/compilers_and_libraries_2020.1.217/linux/mkl/bin/mklvars.sh inte164
在
.bashrc
文件中添加以上代码,保存退出,输入source .bashrc
以让上述改动生效,之后可以输入which icc
看改动是否生效;接着,用
intel
编译zlib
。首先解压源码包:
tar -xf zlib-1.2.8
然后可以在用户目录下创建一个zlib的安装目录:
mkdir /home/*/Tools/hdf5-1.8.9-intel
然后进入之前解压的目录中,输入下列命令以定义intel编译器:
export CC=icc export CFLAGS='-O3 -xHost -ip'
然后输入下列命令:
./configure --prefix=/home/*/Tools/hdf5-1.8.9-intel
注解
*--prefix
即为软件安装目录该命令执行完后按顺序输入
make
,make check
以及make install
,同时注意每个命令输完之后是否出错,若无出错,即zlib
安装完成。接着,用
intel
编译hdf5
:与上面安装
zlib
过程类似,首先解压hdf5
的源码包,进入解压完的目录,定义编译器:export CC=icc export CXX=icpc export CFLAGS='-O3 -ip -no-prec-div -xSSSE3' export CXXFLAGS='-O3 -ip -no-prec-div -xSSSE3' export F77=ifort export FC=ifort export F90=ifort export FFLAGS='-O3 -ip -no-prec-div -xSSSE3' export CPP='icc -E' export CXXCPP='icpc -E'
然后输入:
./configure --prefix=/home/*/Tools/hdf5-1.8.9-intel --enable-fortran --enable-cxx --enable-debug=all --with-zlib=/home/*/Tools/hdf5-1.8.9-intel
注解
*--with-zlib
为之前安装zlib
的目录上述命令执行完后,按顺序执行
make check
以及make install
,同时注意是否存在错误,若无出错,即hdf5
安装完成。最后,用
intel
编译netcdf
:这里以4.1.3版本的
netcdf
为例,因为安装比较简单,而4.4版本之后fortran
和c
要单独安装。首先,依然是解压
netcdf
的源码包,同时创建一个安装目录:mkdir /home/*/Tools/netcdf-4.1.3-intel
然后定义编译器:
export CC=icc export CXX=icpc export CFLAGS='-O3 -ip -no-prec-div -xSSSE3' export CXXFLAGS='-O3 -ip -no-prec-div -xSSSE3' export F77=ifort export FC=ifort export F90=ifort export FFLAGS='-O3 -ip -no-prec-div -xSSSE3' export CPP='icc -E' export CXXCPP='icpc -E' export CPPFLAGS='-I/home/*/Tools/hdf5-1.8.9-intel/include' export LDFLAGS='-L/home/*/Tools/hdf5-1.8.9-intel/lib'
注意,最后这两条是之前安装
hdf5
的目录。之后,执行:
./configure --prefix=/home/*/Tools/netcdf-4.1.3-intel --disable-dap CC=icc FC=ifort F77=ifort CXX=icpc
运行完之后按顺序输入
make
,make check
以及make install
。同时注意每个命令输完之后是否出错,若无出错,即netcdf
安装完成。netcdf
安装完之后,我们需要在.bashrc
文件中加入netcdf
的路径。同上面定义intel
编译器的过程类似:#NETCDF export NETCDF=/home/xum17/Tools/netcdf-4.1.3-intel export NC_INC=$NETCDF/include export NC_LIB=$NETCDF/lib export PATH=$NETCDF/bin:$PATH export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
在
.bashrc
文件中添加以上代码,保存退出,输入source .bashrc
以让上述改动生效,之后可以输入which ncdump
看改动是否生效。至此,CESM 1.2.0需要的前置软件便已全部安装完成。
获取模式源代码及移植
输入下列命令:
svn co https://svn-ccsm-release.cgd.ucar.edu/model_versions/cesm1_2_0 cesm1_2_0
然后输入学校服务器账户的密码,接着是ncar的用户名和密码,分别是:guesteser
和friendly
,之后就会开始下载CESM 1.2.0的源代码。
下载完成后,需要对模式源码进行一些修改方可使用。
首先,进入该目录cesm1_2_0/scripts/ccsm_utils/Machines
,编辑config_machines.xml
,如下图所示:
其中RUNDIR
为实验运行目录,EXEROOT
为生成exe文件的目录,DIN_LOC_ROOT
为模式初始场数据目录。可以根据自身需求对上述的路径进行调整。
其次,编辑Makefile
,在该文件的61%处添加一个-lnetcdff
,如下图所示:
然后执行cp mkbatch.userdefined mkbatch.ibmintel
以及cp env_mach_specific.userdefined env_mach_specific.ibmintel
接着编辑env_mach_specific.ibmintel
,在该文件中定义netcdf
的环境变量,如下图所示:
最后编辑config_compilers.xml
,大致在该文件27%的位置,即intel编译器位置,按照下图进行修改:
至此,CESM模式已经移植成功。
创建实验及提交作业
移植成功后,到scripts
目录下,首先运行:
./create_newcase -case control -res f19_g16 -compset FWSC –mach ibmintel
其中,-case
为实验名称,-res
为水平分辨率,-compset
为调用模块(参见http://www.cesm.ucar.edu/models/cesm1.2/cesm/doc/modelnl/compsets.html),–mach
为前面定义的机器名称,按照上面的步骤做下来即为ibmintel
。
运行成功后,到scripts
下面的该实验目录下面,首先运行./cesm_setup
,再运行./{实验名称}.build
,注意该过程中是否出错,若无出错,即实验创建成功。
之后找到前面定义的实验创建目录中的实验,进入该文件夹中的run
目录,对实验进行自定义,如:输入输出,之后便可以运行该实验了。
要运行该实验,首先创建一个提交脚本slurm.job
,如下图所示:
其中--nodes
为调用节点数,--ntasks-per-node
为每个节点上调用的核数,--job-name
为作业名称,LD_LIBRARY_PATH
中intelmpi
和netcdf
的库文件目录,根据自身需求对上述的路径进行调整。
创建好提交脚本后,即可用sbatch 脚本名
将作业提交到slurm作业系统上了。可以用squeue | grep 用户名
查看自己的作业状态,如下图所示:
上图中从左到右分别是,作业ID,选用路线(cpu,gpu),作业名称,用户名,作业状态(R为运行,P为排队),已运行时间,调用节点数以及调用节点序号。可以用bkill 作业ID
杀死作业。