爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 93832|回复: 129

【经验分享】CESM1.0.4及CESM1.2.X移植及CLM4.5单点地表资料制备常见问题

  [复制链接]

新浪微博达人勋

发表于 2015-6-9 12:53:55 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 lhaikun@163.com 于 2016-9-14 16:22 编辑
QQ截图20150616112250.png 从去年10月份开始,作为LINUX白痴的我开始跟CESM相识,没有美好的相知和相爱,倒是平添了无数的恶心和中断,最后,终于在@zpxie @phyocean @董理 @andrewsoong @fish 等人的无私帮助下初窥门径,在此跟大家分享一下自己中间过程中遇上的问题及解决过程。
申明:文中很多内容来自家园中的各种帖子,如有重复或者侵权,麻烦版主帮忙删除,谢谢

背景:LINUX白痴,只知道是个操作系统,其他的方面,什么鬼?
一、醉生梦死篇---.移植篇

1、系统安装
自己第一次尝试是在一台纯裸工作站上,纯裸此处需要解释一下,就是连个系统都没有全空白工作站....
所以我的第一步工作从装系统开始,那么问题来了,有Ubuntu、CentOS、RedHat、Debian、Fedora等,该怎么选,当时纠结哭了,有人说Ubuntu对模式支持不是很好,也有说Ubuntu好用的,最后综合多方意见,选择了CentOS。-----在此负责任的告诉你,只是使用WRF及CESM的话,Ubuntu和CentOS都不错,只要选择用户群大点的,总会有前人踩出不错的路子来,如果你不熟悉LINUX,请不要去尝鲜。
CentOS 7安装及使用可以参考:http://bbs.06climate.com/forum.php?mod=viewthread&tid=34599
个人不是很建议7,多人测试会出现文中所述错误,虽然我现在用的好好的,但是他的出错概率大,可以考虑6.5等版本低一点的

2、编译环境安装
作为一台裸机,编译环境已醉
图一为CESM1.2.X的环境要求,对于linux白痴来讲,那就是噩梦,完全不知道该怎么搞,折腾了一个半月,总算成功,现在想起来,当时真勇敢。

图1

图1
(图1)
现在介绍一个由大气所@董理老师开发的简单包管理工具:PACKMAN
介绍文档阅读地址: http://bbs.06climate.com/forum.php?mod=viewthread&tid=34505
获取及使用方法地址:http://dongli.github.io/packman/zh/documentation.html
问题反馈及解答论坛地址:https://ogx.io/project/packman
所有的编译环境都可以通过PACKMAN傻瓜式安装!
特别注意:折腾了这么久,我对LINUX的理解是,编译器是基础,先于所有的安装,一般系统自带GNU,Intel或者PGI如果大家有免费的可以使用,如果没有也不必担心,GNU完全可以编译WRF及CESM(已有伙伴亲测)

3、模式移植
模式移植其实并没有想象中的那么难,就好比在win7中安装一个程序,只不过都是傻瓜式的装好了,在LINUX中,我们只需要给它配置或者设定好相应的工具及库就好(个人理解)

(1)CESM1_0_4
关于CESM1.0.4的移植参照@andrewsoong的帖子:http://bbs.06climate.com/forum.php?mod=viewthread&tid=15655
其中需要注意的是:主要修改
config_machines.xml :主要设定机器名字(名字不要全用大写字母(容易出问题),建议都是小写字母就好),原始数据存储路径;
env_machopts.XXX :设定mpi/netcdf/编译器 的路径及库
Macros.XXX ;
mkbatch.XXX :设定后决定最后创建case后生成的${CASE}.run 内部内容,主要修改题头mach的Machine名字及下边的运算及提交方式。注释掉exit


(2)CESM1_2_X
对比cesm1.2.x的文件发现两者是不同的,但换汤不换药,需要修改的还是4个文件,而且1.2.X的文件中都对应有说明,相对更加人性化一些。4个文件均在目录scripts/ccsm_utils/Machines
cd ../scripts/ccsm_utils/Machines
vi config_machines.xml
你会看到如下内容(图片2)

图2

图2
(图2)
MACH 即你给机器随便取的名字
OS 一般写LINUX (注意参照解释部分写 否则之后会出错)

GMAKE_J 为你编译时候调用的核心数,一般写少一点就行,建议写个1或2
MAX_TASKS_PER_NODE <=每个节点的核心数目

vi config_compiler.xml (图3)

图3

图3
(图3)
此文件中只需要写上你的NETCDF 及MPI的路径 以及netcdf的库文件路径,4.2及以后版本的netcdf的c及fortran的库是分开的 写库的路径的时候后边加上个 -lnetcdff -lnetcdf 即可
例子:<NETCDF_PATH>/soft/netcdf/c_4.3.3.1_cxx_4.2.1_fortran_4.4.2/2</NETCDF_PATH>
<ADD_SLIBS>-L/soft/netcdf/c_4.3.3.1_cxx_4.2.1_fortran_4.4.2/2/lib -lnetcdf -lnetcdff</ADD_SLIBS>
<MPI_PATH>/soft/mvapich</MPI_PATH>


cp env_mach_specific.userdefined env_mach_specific.XXX(XXX为你在config——machine.xml中指定的MACH的数值,此处假定为XXX)

图4

图4
(图4)
此处主要设定内容如下
set NETCDF_PATH =
set MPI_PATH =
setenv INC_NETCDF ${NETCDF_PATH}/include
setenv LIB_NETCDF ${NETCDF_PATH}/lib
setenv INC_MPI ${MPI_PATH}/include
setenv LIB_MPI ${MPI_PATH}/lib
有兴趣的也可以不设定试一下,应该影响不大,因为CESM中的不同文件的priority不同,之前的设定中也有这方面的。

cp mkbatch.userdefined mkbatch.XXX
这里边内容主要涉及到你build完case之后生成的run文件的内容,在此处设定好之后,你生成的run文件就跟这个基本一致,一劳永逸,需要修改的地方如下:
set qname = batch 根据自己使用大型机情况来定
set tlimit = "00:59:00"
下边提交作业方式的设定,是qsub还是bsub,具体使用自行脑补,删除一个#之后,后边的语句生效
##PBS -N ${jobname}
##PBS -q ${qname}
##PBS -l nodes=${nodes}:ppn=${taskpernode}
##PBS -l walltime=${tlimit}
##PBS -r n
##PBS -j oe
##PBS -S /bin/csh -V
##BSUB -l nodes=${nodes}:ppn=${taskpernode}:walltime=${tlimit}
##BSUB -q ${qname}
###BSUB -k eo
###BSUB -J $CASE
###BSUB -W ${tlimit}
#limit coredumpsize 1000000
#limit stacksize unlimited
运行方式:
#mpiexec -n ${maxtasks} \$EXEROOT/cesm.exe >&! cesm.log.\$LID
#mpirun -np ${maxtasks} \$EXEROOT/cesm.exe >&! cesm.log.\$LID
选择一个适合自己的,去掉前边的注释即可,综合以上,移植完成。

二、死去活来篇---陆面单点地表资料制备
主要参考来源:@zpxie http://bbs.06climate.com/forum.php?mod=viewthread&tid=33764&highlight=CLM4.5  期间与@Ruby @雷子 @leo-lee @林中飘等的吐槽及讨论亦有不少帮助,感谢!
这里主要补充一下遇到的问题及解决方法:

1、ESMF安装

下载地址: https://www.earthsystemcog.org/projects/esmf/
安装方法:下载后在想安装目录解压
请先vi README 查阅readme文件,有个大致了解,从5/6两张图中我们可以看到具体安装步骤,下边也有一些参数设置的详细说明,再次不一一详述,用得到的请自行阅读,给出参考范例:

图5

图5
(图5)

图6

图6
(图6)
######################ESMF##################################
export ESMF_DIR=/soft/esmf
export ESMF_BOPT=g
export ESMF_COMM=mvapich2
export ESMF_COMPILER=intel
export ESMF_ABI=64
export ESMF_INSTALL_PREFIX=/soft/esmf_install
export ESMF_NETCDF=/soft/netcdf/c_4.3.3.1_cxx_4.2.1_fortran_4.4.2/2
export ESMF_NETCDF_INCLUDE=/soft/netcdf/c_4.3.3.1_cxx_4.2.1_fortran_4.4.2/2/include
export ESMF_NETCDF_LIBPATH=/soft/netcdf/c_4.3.3.1_cxx_4.2.1_fortran_4.4.2/2/lib
export ESMF_NETCDF_LIBS="-lnetcdf -lnetcdff"
export ESMFBIN_PATH=/lustre/home/lkaikun/soft/esmf_install/bin/bing/Linux.intel.64.mvapich2.default(这一句是在安装完之后添加的)
以上在bashrc中设定的内容中一个是大家困惑比较多的,即ESMF_COMM=mvapich2或mpich等的选择上,此处需要用到两个方面来确定
第一,在终端输入 mpif90 -v 看出现的mpi版本,本文为例出现内容为 mpif90 for MVAPICH2 version 1.8
第二,进入mpi安装目录的bin文件夹下,查看对应的cc,fortran编译器的样子,与soft/esmf/build_config中对应你编译器的文件夹内的build_rules.mk文件内部描述相对应来确定自己填写什么。本文为例,就是查看/soft/esmf/build_config/Linux.intel.default下的build_rules.mk对应
ifeq ($(ESMF_COMM),mvapich2)
# Mvapich2 ---------------------------------------------------
ESMF_F90DEFAULT = mpif90
ESMF_CXXDEFAULT = mpicxx
ESMF_MPIRUNDEFAULT = mpirun $(ESMF_MPILAUNCHOPTIONS)
ESMF_MPIMPMDRUNDEFAULT = mpiexec $(ESMF_MPILAUNCHOPTIONS)
else
ifeq ($(ESMF_COMM),intelmpi)
设定好之后就可以参照步骤一步一步进行,非常方便。
另外值得一提的是,建议安装最新版本6.3.0rp1 同时对应得NCL也安装最新版,如果NCL版本过低,你用命令查看ESMF版本的时候显示的版本可能不正确,武大同学亲测.....

2、地表数据制作

参考来源:@zpxie http://bbs.06climate.com/forum.php?mod=viewthread&tid=33764&highlight=CLM4.5

(1)zpxie在文中提到的“过程主要参见CESM Research Tools: CLM4 in CESM1.2.0User’s Guide Documentation 中的第二章的The File Creation Process一节和第五章的Creating your ownsingle-point/regional surface datasets和Running with your own atmosphere forcing 这两小节”强烈建议阅读,zpxie的行文思路与手册中是一致的,手册阅读还是很重要的。
(2)第一步生成格点和制图文件时候有一步是这样的
./mkmapdata.sh -r $GRIDNAME -f $GRIDFILE -t regional(生成mapping files)
其中最后一个文件的计算生成对计算机单核算力要求比较高,输入文件为5.6G,输出文件12G左右,需要提交到计算节点进行,由于计算机性能不同,计算时间也不同,如果提交到计算节点仍然无法解决,请参照下载数据网站上的README.UGRID_1km-merge-10min_HYDRO1K-merge-nomask_c130402文件,其中提到的直接计算方案:
/glade/u/home/peggyl/bin/ESMF_RegridWeightGen -s $source_gridfile -d $dest_gridfile -w $mapname -m conserve --src_type UGRID --src_meshname landmesh -i --netcdf4
详情请自行参阅阅读
收回此处的话,整个mkmapdata都可以使用并行来解决单核算力及memory不足的缺陷。
下图为亲测串并行差距
串行.png 此图为串行文件生成时间

此图为并行文件生成时间
之前讲的用并行来运行mkmapdata没用的原因是因为这个mkmapdata.sh 内部设置上就是依据模式开发者服务器设置成了串行,需要再内部修改两个地方的设置:
QQ截图20150616114013.png
另外根据自己使用的集群或者服务器,写一个提交作业的脚本,脚本中提交这一步就行了,或者可以直接在mkmapdata.sh最后的位置这样写(from:leo-lee)
QQ图片20150616114251.png

(3)第二步生成domain文件之前需要先在tools/mapping/gen_domain_file/src下进行gmake编译,参照图7手册中例子

图7

图7
(图7)

我们需要先进行../../../scripts/ccsm_utils/Machines/configure -mach XXX -compiler intel,这里如果遇到错误如图8或者图9,原因是我们的perl版本太高了,建议换成5.12版本的(5.14也可以,但是后边会提示5.14即将废弃之前的一种方式如图9.1,总是提示很烦,所以建议5.12)

图8

图8
(图8)

图9

图9
(图9)

图9.1

图9.1
(图9.1)
(4)制作domain文件理论上应该很顺利,但是如果遇上图10错误(图11为错误原因),那么原因可能是你在config_machine.xml中的OS没有按照要求写所致,楼主就是这样,当然,具体问题还是要具体分析,打开报错,仔细查看。
123.png (图10)

图10

图10
(图11)
(5)之后一步生成地表数据,直接运行gmake会出现图12错误,寻找错因打开makefile.commom,我们发现它里边没有设置NETCDF相关内容,具体可参照第二步中makefile对NETCDF设定,在此不赘述。 QQ截图20151216232807.jpg
12.png
至此为止,你的地表数据就造好了,后边的路楼主还在继续探究,希望大家一起讨论
另外:如何run及进行实验设计一定要参照手册,虽说英文读起来很不爽,但是,师太,既然入行了,就从了老衲吧{:soso__8804404059627807918_4:}
博客阅读链接地址:http://blog.sina.com.cn/s/blog_842d5c8a0102vw7v.html
  
  lhaikun
2015.06.09






QQ截图20150616112250.png

评分

参与人数 5金钱 +81 贡献 +4 收起 理由
870744170 + 20 很给力!
Luminita-Qieer + 1 很给力!
沙颖凯 + 20 + 2 同为vim党
雷子 + 20 + 2 赞一个!
zpxie + 20

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-3-9 10:19:50 | 显示全部楼层
您好,我在做自己regional的surfacedata上遇到一点问题。在用ESMF_RegridWeightGen生成grid data时,./mkmapdata.sh -r $GRIDNAME -f $GRIDFILE -t regional(生成mapping files)
其中最后一个文件的计算生成遇到bug,计算节点会非正常退出,期待楼主解答
QQ图片20170309102255.png
密码修改失败请联系微信:mofangbao
回复 支持 3 反对 0

使用道具 举报

新浪微博达人勋

发表于 2015-6-9 13:16:40 | 显示全部楼层
谢谢分享,特来学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-9 14:17:44 | 显示全部楼层
谢谢楼主分享!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-9 14:42:05 | 显示全部楼层
感谢楼主分享,正需要这个
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-9 16:01:52 | 显示全部楼层
顶起~~{:soso_e179:}{:soso_e179:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-9 22:23:43 | 显示全部楼层

师姐这头像,隐藏的太好了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-9 22:24:50 | 显示全部楼层
leeol 发表于 2015-6-9 13:16
谢谢分享,特来学习

互相探讨学习
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-9 22:25:10 | 显示全部楼层
Will 发表于 2015-6-9 14:42
感谢楼主分享,正需要这个

加油
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-11 14:58:56 | 显示全部楼层
应该加精。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-6-11 15:01:49 | 显示全部楼层

师兄 还有好多问题有待完善
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表