CESM1.1 在ubuntu上的移植过程

安装库以及相应软件过程省略,具体软件在官网:CESM1.1.z User's Guide​​​​​​https://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上取消了gmakeGNUmake),用make代替即可

sudo ln -s /usr/bin/make /usr/bin/gmake

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值