安装库以及相应软件过程省略,具体软件在官网:CESM1.1.z User's Guidehttps://www.cesm.ucar.edu/models/cesm1.1/cesm/doc/usersguide/book1.html下面的 CESM Software/Operating System Prerequisiteshttps://www.cesm.ucar.edu/models/cesm1.1/cesm/doc/usersguide/x21.html#software_system_prerequisites
CESM各个版本:CESM Modelshttps://www.cesm.ucar.edu/models/?ref=hp也可在github中下载GitHub - ESCOMP/CESM: The Community Earth System ModelThe Community Earth System Model. Contribute to ESCOMP/CESM development by creating an account on GitHub.https://github.com/ESCOMP/CESM
-----------------------------------------------------------------------------------------------
重点在于source code移植后的修改配置部分。(假设模式位于cesm1_1/)
修改的文件均位于cesm1_1/scripts/ccsm_utils/Machines
1.config_machines.xml 主要是关于机器的配置
添加以下部分
(各配置根据自己服务器的配置/环境来配置。具体各项意义可见官网)CESM Models | CESM1.1 Public Releasehttps://www.cesm.ucar.edu/models/cesm1.1/cesm/doc/modelnl/
<machine MACH="ubuntu">
<DESC>my ubuntu 20.04</DESC>
<OS>LINUX</OS>
<COMPILERS>intel,pgi,gnu,pathscale</COMPILERS>
<MPILIBS>mpich,mpi,pempi,mpi-serial</MPILIBS>
<RUNDIR>/xxxxxxxxx/cesm1_1/$CASE/run</RUNDIR>
<EXEROOT>/xxxxxxxx/cesm1_1/$CASE/bld</EXEROOT>
<DIN_LOC_ROOT>/xxxxxx/Cesm_data/inputdata</DIN_LOC_ROOT>
<DIN_LOC_ROOT_CLMFORC>xxxxxxx/Cesm_data/tss</DIN_LOC_ROOT_CLMFORC>
<DOUT_S_ROOT>xxxxxx/cesm1_1/$CASE/output</DOUT_S_ROOT>
<DOUT_L_MSROOT>csm/$CASE</DOUT_L_MSROOT>
<CCSM_BASELINE>$ENV{CESMDATAROOT}/ccsm_baselines</CCSM_BASELINE>
<CCSM_CPRNC>$ENV{CESMDATAROOT}/tools/cprnc/cprnc</CCSM_CPRNC>
<BATCHQUERY>USERDEFINED_optional_run</BATCHQUERY>
<BATCHSUBMIT>USERDEFINED_optional_run</BATCHSUBMIT>
<SUPPORTED_BY>USERDEFINED_optional_run</SUPPORTED_BY>
<GMAKE_J>1</GMAKE_J>
<MAX_TASKS_PER_NODE>2</MAX_TASKS_PER_NODE>
<PES_PER_NODE>1</PES_PER_NODE>
</machine>
2.config_compilers.xml 关于编译器的配置
添加以下部分
<compiler COMPILER="intel" MACH="ubuntu">
<NETCDF_PATH>$(NETCDF)</NETCDF_PATH>
<MPICC>mpiicc</MPICC>
<MPIFC>mpiifort</MPIFC>
<MPICXX>mpicpc</MPICXX>
<SFC>ifort</SFC>
<SCC>icc</SCC>
<SCXX>icpc</SCXX>
<MPI_PATH MPILIB="mpich"> /opt/intel/oneapi/mpi/2021.2.0</MPI_PATH>
<MPI_PATH MPILIB="openmpi"> /opt/intel/oneapi/mpi/2021.2.0</MPI_PATH>
<HDF5_PATH>$(NETCDF)</HDF5_PATH>
<ADD_SLIBS> -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L$(HDF5_PATH)/lib -lhdf5 -lhdf5_hl </ADD_SLIBS>
</compiler>
3.将env_mach_specific.userdefined 复制为 env_mach_specific.ubuntu 点后面为之前设置的MACH名称
添加以下部分,注意set后面有=,且=前后有空格,而setenv没有等号,只有空格
set NETCDF_PATH = /usr/local/netcdf-ifort
set MPI_PATH = /opt/intel/oneapi/mpi/2021.2.0
setenv INC_NETCDF ${NETCDF_PATH}/include
setenv LIB_NETCDF ${NETCDF_PATH}/lib
setenv INC_MPI ${MPI_PATH}/include
setenv LIB_MPI ${MPI_PATH}/lib
4.将 mkbatch.userdefined复制为 mkbatch.ubuntu 点后面依旧是之前设置的MACH名称
根据服务器提交作业的方式把qname=batch 为自己服务器的脚本提交方式,如 qname=qnormal,并把下方##的代码根据提交任务的脚本 去掉注释即可 (包括mpirun等等命令所在的行)
-----------------------------------------------------------------------------------------------
此时完成移植,下一步测试。此测试来自官方网站:Use Cases and FAQshttps://www.cesm.ucar.edu/models/cesm1.1/cesm/doc/usersguide/c1986.html#use_case_basic
cd cesm1_1/scripts
./create_newcase -case case_official \
-compset B_1850_CN \
-res 0.9x1.25_gx1v6 \
-mach ubuntu
cd case_official/
---------------------------------------------------------------------------------
此时可根据需要修改运行配置如大气模式用到的核数 NTASKS_ATM ..... (当前该变量值可通过
./xmlquery NTASKS_ATM 查询到。)
对于修改诸如模式要用的核数NTASKS_xxxxx、线程数NTHRDS_xxx等等env_mach_pes.xml中的变量,必须在./cesm_setup之前修改,如果setup之后修改,先./cesm_setup -clean,修改,然后重新./cesm_setup。对于诸如任务重新提交时间STOP_OPTION等等其他变量,可在cesm_setup之后修改
两种修改方式:
1. ./xmlchange NTASKS_ATM=64
(或是./xmlchange -file env_mach_pes.xml -id NTASKS_ATM -val 64)
2. 直接修改env_mach_pes.xml 或是其余xml文件
同上,所有与运行相关的配置变量可在CESM Models | CESM1.1 Public Releasehttps://www.cesm.ucar.edu/models/cesm1.1/cesm/doc/modelnl/
通过对应xml文件查找到。
---------------------------------------------------------------------------------
./cesm_setup
./case_official.build
生成测试脚本(测试本例子能否跑通)
./create_production_test
cd ../case_official_ERT
./case_official_ERT.test_build
./case_official_ERT.test
cat CaseStatus (官网为 cat TestStatus ,以实际为准)
如果没有问题(PASS)即可进行下一步
cd ../case_official
./xmlchange STOP_OPTION=nmonths 注意修改方式与官网给出的并不一致,官网命令跑不通(可能是我机器的问题)
./xmlchange STOP_N=12
bsub < case_official.run 提交作业方法因服务器而异
之后可在out文件中查看是否成功
踩坑记录:
如果出现 Can't locate Switch.pm in @INC 则是因为Perl5.1以上的版本问题,只需将已有的Switch.pm 文件复制到INC中一个路径即可
sudo cp /opt/intel/oneapi/compiler/2021.2.0/linux/lib/oclfpga/host/linux64/bin/perl/lib/site_perl/5.30.3/Switch.pm /usr/share/perl/5.30/
无gmake的情况:ubuntu上取消了gmake(GNUmake),用make代替即可
sudo ln -s /usr/bin/make /usr/bin/gmake