CESM2笔记——porting-新机器移植

CESM2相比CESM1_2_2更新了很多,尤其是我要用的CAM-chem,所以打算重新porting。一开始一点也不懂自己瞎搞,一直理不清头绪,网页太多,自己看来看去抓不到重点。后来请教了一位师姐,磕磕绊绊各种弄环境、debug,弄了好久,终于测试通了第一个case,哇哇哭出来。。。这会儿来做些笔记,就记录一下最核心的流程。

我这里是在曙光机器LASG上移植。


step1:下载CESM2 code

官方网址:https://escomp.github.io/CESM/release-cesm2/downloading_cesm.html

用git clone就可以

checkout_externals这个步骤一定要的,否则下载下来的包是不完整的。

这里有个需要注意的地方:如果在windows环境中git clone下来的CESM2再上传到LINUX下,很多文件下下来是dos文本文件(用vi编辑器打开:set ff查看;:set ff=unix可以改为unix文件),在linux下读文件就会报错。用:set ff=unix可以把文件类型改过来,但指不定哪个读取又有问题。

所以最好是找个linux系统再git clone。真的这样会少很多bug!


step2: 设置环境变量: 修改.bashrc

CESM需要很多库和环境支持。http://esmci.github.io/cime/versions/master/html/users_guide/porting-cime.html

1. 一个MPI运行环境

2. 编译工具:gmake,cmake

3.netcdf库4.3版或更高版本

因为CIME是基于python的框架,python当然是必不可少的。

编译器intel或gnu,hdf5…这些最基本的服务器配置就不用说了。

不过在超算中心大部分库可以用module load,下面是曙光为例我load的库。其中perl很重要,很多bug问题可能就是perl没装对。

如果是个人机器或组内服务器,恕我不才,这些库估计我也搞不定。。。也许可以参考下这个:https://blog.csdn.net/qq_37512669/article/details/87915996


step3: 改3个xml文件:config_machines.xml,config_compilers.xml,config_batch.xml

tutorial里面有个special talk可以参考:http://www.cesm.ucar.edu/events/tutorials/2019/files/Specialized-edwards.pdf

CESM2包如果已经安装到自己机器上的话,这三个xml文件位于~/cesm2/cime/config/e3sm/machines路径下

官方文件可在这里查看:http://esmci.github.io/cime/versions/master/html/xml_files/cesm.html#cimeroot-config-cesm-machines

config_machines.xml:用户自定义的机器描述。

config_compilers.xml:用户自定义的编译器介绍。

config_batch.xml:用户批处理系统介绍。

这三个文件根据机器不同,设置也不同。需要按机器的配置来设置和多次调试(就是先进行step4,发现哪儿报错了又回来改这几个文件)。


step4: 运行四个步骤:create case(生成), setup(设置), build(编译), run(运行)

官方网址:https://escomp.github.io/CESM/release-cesm2/quickstart.html

step4就到模式工作流了,流程和之前写的CESM1_2_2(https://blog.csdn.net/qq_27984679/article/details/107099940)基本是一样的,但是一些compset的名称变了,以及*.xml中的设置有变化。

举个例子:

./create_newcase --case /public1/home/pku_jingli2/CESM/cesm2/cime/scripts/FCHIST --compset FCHIST --res f19_g17 --mach hpccube --compiler intel --run-unsupported

cd FCHIST/

./case.setup

./case.build

(这里先去下inputdata,看step5)

./case.submit

step5: 下载inputdata

因为大部分的机器不能连外网,所以check_inputdata --download的功能一般用不了,需要自己去重新下载这些inputdata。

inputdata数据网址:https://svn-ccsm-inputdata.cgd.ucar.edu/trunk/inputdata/

在./case.build之后,在$case/Buildconf下会生成各个模块需要的input文件,在*list里面。

用python把all_list.txt转成all_list-short.txt(去掉等号“=”和等号前面的字符)就可以得到文件网址列表

f  = open('all_list.txt', 'r')
f1 = open('all_list-short.txt','w')
for (num,value) in enumerate(f):
    print ("line number", num+1, "is:", value)
    head,sq,tail=value.partition('=')
    print ("line number", num+1, "is:", tail)
    f1.write(tail)
f1.close()
f.close()

在linux下用wget下载比较方便:

wget --no-check-certificate -c -i all_list-short.txt

下完之后再上传到inputdata目录下,由于inputdata下面子目录太多,手动太麻烦而且容易出错。下面的代码就是移动文件到对应正确的目录,如果该目录不存在就先创建一个。

f  = open('all_list-short.txt', 'r')
for (num,value) in enumerate(f):
    print ("line number", num+1, "is:", value)
    head,sq,tail=value.partition('inputdata/')
    list0=tail.strip().split('/')
    list1=list0[0:-1]
    str0='/'
    directory='./'+str0.join(list1)
    print(directory)
    if not os.path.exists(directory):
        os.makedirs(directory)
    filename=list0[-1].strip()
    if not os.path.exists(filename):
        print(filename+' do not exist')
        continue
    print(filename+' do exist, begin move')
    os.popen('mv '+filename+' '+directory)
f.close()

核心流程就是上面几个步骤,step2,3是最重要的,不过我讲的有点少,因机器而异,主要我自己也是半桶水,就是记录一下核心流程,有个概念。

相关教程指路:

1. CESM移植方法-记录:https://blog.csdn.net/qq_37512669/article/details/87915996(这个有记录安装各种库)

2.CESM1.2.2移植攻略:http://bbs.06climate.com/forum.php?mod=viewthread&tid=49077(这个有推荐一个startman来安装各种库,看着蛮好的,虽然我没用过)

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

J同学的大气笔记

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值