CESM 1.x 版本现在使用者还是很多,最近对配置方面的理解有了进一步的了解,故写了一篇文章为大家解惑,如果有不正确的地方欢迎指正!
配置文件路径
CESM 1.2 版本配置文件路径在 $CESM_ROOT/script/ccsm_utils/Machines
配置文件详解
config_machines.xml
1 | <machine MACH="custom"> |
这里重点有下面几个方面:
- COMPILERS:一般大型服务器上都会部署 mpi 编译器,根据你的需求选择有 pgi,intel,gnu 等等
- MPILIBS:Intel 编译器一般选择 impi,gnu 可以搭配 openmpi,mpich,如果你不需要 mpi 这里就填 mpi-serial 即可
- DIN_LOC_ROOT:这个文件夹的位置可以选择一个固定的目录,这样所有的 inputdata 都会放在同一个文件夹中,方便后续使用
- DIN_LOC_ROOT_CLMFORC:同上
- BATCHQUERY和BATCHSUBMIT:如果你是普通的服务器没有部署作业调度系统这两项可以不填,直接把中间的内容删除,元素保留即可,一般大型服务器或超算上都会部署类似 slurm,pbs 或者 lsf 等等作业调度系统,还有部分作业调度系统是定制版本,这就需要联系系统管理员或者自己熟读用户手册之后再修改这两项
- GMAKE_J:编译时候可以并行的最大核数,这个数字填你使用的机器的 CPU 核数即可
- PES_PER_NODE 和 MAX_TASKS_PER_NODE:这两个数字需要视情况而定,如果你使用的机器是一般的服务器,没有计算节点这些东西的话直接填写机器的 CPU 核数即可;如果你使用的是大型服务器或超算则需要填写计算节点的 CPU 核数。如果这里填的数字超过你的 CPU 核数一般都是会再运行时报错
- RUNDIR、EXEROOT、DOUT_S_ROOT、BASELINE_ROOT:这些都是可以使用环境变量的形式填写,这样的好处是多人使用的时候每个人只需要设置 WORKDIR 这个环境变量就可以了,方便每个人管理自己的 case
config_compilers.xml
1 | <compiler COMPILER="intel"> |
这里重点有下面几个方面(以 Intel 编译器为例):
- ADD_CFLAGS:这里原来是 -openmp,如果你使用的 Intel 编译器比较新(version > 17),这里就需要修改为 -qopenmp
- 下面的 MPIFC 等等:mpi 编译器需要修改为你需要使用的编译器,原来这里是 mpiicxx 等等,如果你使用的 Intel 编译器比较新(version > 17),这里就需要修改为 mpiicpc
- 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 即可
如果你在运行过程中有任何问题欢迎留言或私信讨论!
ps:笔者也提供代安装服务,有需求的朋友可以添加微信 mrxun_ ,添加时请备注来意,谢谢!