安装库以及相应软件过程省略,具体软件在官网: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/
my ubuntu 20.04 LINUX intel,pgi,gnu,pathscale mpich,mpi,pempi,mpi-serial /xxxxxxxxx/cesm1_1/$CASE/run /xxxxxxxx/cesm1_1/$CASE/bld /xxxxxx/Cesm_data/inputdata xxxxxxx/Cesm_data/tss xxxxxx/cesm1_1/$CASE/output csm/$CASE $ENV{CESMDATAROOT}/ccsm_baselines $ENV{CESMDATAROOT}/tools/cprnc/cprnc USERDEFINED_optional_run USERDEFINED_optional_run USERDEFINED_optional_run 1 2 1
2.config_compilers.xml 关于编译器的配置
添加以下部分
$(NETCDF) mpiicc mpiifort mpicpc ifort icc icpc /opt/intel/oneapi/mpi/2021.2.0 /opt/intel/oneapi/mpi/2021.2.0 $(NETCDF) -L$(NETCDF_PATH)/lib -lnetcdff -lnetcdf -L$(HDF5_PATH)/lib -lhdf5 -lhdf5_hl
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 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



