CESM 1.2.1 安装配置文件详解

CESM 1.x 版本现在使用者还是很多,最近对配置方面的理解有了进一步的了解,故写了一篇文章为大家解惑,如果有不正确的地方欢迎指正!

配置文件路径

CESM 1.2 版本配置文件路径在 $CESM_ROOT/script/ccsm_utils/Machines

配置文件详解

config_machines.xml
<machine MACH="custom">
   <DESC>my defined</DESC>
   <OS>LINUX</OS>
   <COMPILERS>intel</COMPILERS>
   <MPILIBS>impi</MPILIBS>
   <RUNDIR>$ENV{WORKDIR}/cesm121_case_dir/$CASE/run</RUNDIR>
   <EXEROOT>$ENV{WORKDIR}/cesm121_case_dir/$CASE/bld</EXEROOT>
   <DIN_LOC_ROOT>/public/cesm/inputdata</DIN_LOC_ROOT>
   <DIN_LOC_ROOT_CLMFORC>/public/cesm/ptclm-data</DIN_LOC_ROOT_CLMFORC>
   <DOUT_S_ROOT>$ENV{WORKDIR}/cesm121_case_dir/CLMARCHIVE/$CASE</DOUT_S_ROOT>
   <BASELINE_ROOT>$ENV{WORKDIR}/cesm_baselines</BASELINE_ROOT>
   <CCSM_CPRNC>$ENV{CESMROOT}/tools/cprnc</CCSM_CPRNC>
   <BATCHQUERY>qstat -f</BATCHQUERY>
   <BATCHSUBMIT>qsub</BATCHSUBMIT>
   <GMAKE_J>16</GMAKE_J>
   <MAX_TASKS_PER_NODE>64</MAX_TASKS_PER_NODE>
   <PES_PER_NODE>64</PES_PER_NODE>
   <SUPPORTED_BY>me</SUPPORTED_BY>
</machine>

这里重点有下面几个方面:

  1. COMPILERS:一般大型服务器上都会部署 mpi 编译器,根据你的需求选择有 pgi,intel,gnu 等等
  2. MPILIBS:Intel 编译器一般选择 impi,gnu 可以搭配 openmpi,mpich,如果你不需要 mpi 这里就填 mpi-serial 即可
  3. DIN_LOC_ROOT:这个文件夹的位置可以选择一个固定的目录,这样所有的 inputdata 都会放在同一个文件夹中,方便后续使用
  4. DIN_LOC_ROOT_CLMFORC:同上
  5. BATCHQUERY和BATCHSUBMIT:如果你是普通的服务器没有部署作业调度系统这两项可以不填,直接把中间的内容删除,元素保留即可,一般大型服务器或超算上都会部署类似 slurm,pbs 或者 lsf 等等作业调度系统,还有部分作业调度系统是定制版本,这就需要联系系统管理员或者自己熟读用户手册之后再修改这两项
  6. GMAKE_J:编译时候可以并行的最大核数,这个数字填你使用的机器的 CPU 核数即可
  7. PES_PER_NODE 和 MAX_TASKS_PER_NODE:这两个数字需要视情况而定,如果你使用的机器是一般的服务器,没有计算节点这些东西的话直接填写机器的 CPU 核数即可;如果你使用的是大型服务器或超算则需要填写计算节点的 CPU 核数。如果这里填的数字超过你的 CPU 核数一般都是会再运行时报错
  8. RUNDIR、EXEROOT、DOUT_S_ROOT、BASELINE_ROOT:这些都是可以使用环境变量的形式填写,这样的好处是多人使用的时候只需要自己设置一下 WORKDIR 变量就可以了,方便每个人管理自己的 case
config_compilers.xml
<compiler COMPILER="intel">
  <!-- http://software.intel.com/en-us/articles/intel-composer-xe/ -->
  <ADD_CPPDEFS> -DFORTRANUNDERSCORE -DNO_R16</ADD_CPPDEFS>
  <ADD_CFLAGS compile_threaded="true"> -qopenmp </ADD_CFLAGS>
  <ADD_FFLAGS compile_threaded="true"> -qopenmp </ADD_FFLAGS>
  <ADD_LDFLAGS compile_threaded="true"> -qopenmp </ADD_LDFLAGS>
  <FREEFLAGS> -free </FREEFLAGS>
  <FIXEDFLAGS> -fixed -132 </FIXEDFLAGS>
  <ADD_FFLAGS DEBUG="TRUE"> -g -CU -check pointers -fpe0 </ADD_FFLAGS>
  <FFLAGS> -O2 -fPIC -fp-model source -convert big_endian -assume byterecl -ftz -traceback </FFLAGS>
  <CFLAGS> -O2 -fPIC -fp-model precise </CFLAGS>
  <FFLAGS_NOOPT> -O0 </FFLAGS_NOOPT>
  <FC_AUTO_R8> -r8 </FC_AUTO_R8>
  <SFC> ifort </SFC>
  <SCC> icc </SCC>
  <SCXX> icpc </SCXX>
  <MPIFC> mpiifort </MPIFC>
  <MPICC> mpiicc  </MPICC>
  <MPICXX> mpiicpc </MPICXX>
  <CXX_LINKER>FORTRAN</CXX_LINKER>
  <CXX_LDFLAGS> -cxxlib </CXX_LDFLAGS>
  <SUPPORTS_CXX>TRUE</SUPPORTS_CXX>
  <ADD_SLIBS>-L$ENV{NETCDF_PATH}/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -ldl -lm -lz -lcurl -mkl=cluster</ADD_SLIBS>
</compiler>

这里重点有下面几个方面(以 Intel 编译器为例):

  1. ADD_CFLAGS:这里原来是 -openmp,如果你使用的 Intel 编译器比较新(version > 17),这里就需要修改为 -qopenmp
  2. 下面的 MPIFC 等等:mpi 编译器需要修改为你需要使用的编译器,原来这里是 mpiicxx 等等,如果你使用的 Intel 编译器比较新(version > 17),这里就需要修改为 mpiicpc
  3. ADD_SLIBS:这里一定要把 NetCDF 库的位置已经链接选项都添加上,否则在编译时一定会出错,这里使用 $ENV{NETCDF_PATH} 是方便不同的人使用不同版本的 NetCDF,只需要自己设置一下NETCDF_PATH 即可。如果只需要使用一个版本的 NetCDF (例如 4.1.3),那么这里的 $ENV{NETCDF_PATH} 可以换成固定的全路径即可
    Tips:这里的 NetCDF 库包含的 zlib、szip、hdf5 等等,需要提前安装在同一个目录下,方便管理
mkbatch.custom

如果你使用的服务器没有作业调度系统,那么这里直接随便复制一个原来的即可

如果有作业调度系统,可以参考已经有的文件(mkbatch.xxxx),挑选一个符合你要求的复制一份再修改即可,这里因为每个机器配置不同不做赘述,如果有问题可以私聊

FAQs (持续收集中 … )

Q1: cesm 1.2.1 demo ./cesm_setup 报错 could not find restart file for branch or hybrid start
A1: 将 env_run.xml 中 RUN_TYPE 改为 startup 即可

如果你在运行过程中有任何问题欢迎留言或私信讨论!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrXun_

谢谢老板的支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值