$find ./ -name “*.F90″ |xargs cat|grep -v ^$|wc -l答案是——————————499742 居然不到50万行,比我想象要少诶…… 参考资料中还有记录空行等命令格式 http://www.cnblogs.com/fullhouse/archive/2011/07/17/2108786.html #Up to 20140815#
打算开始在CESM的框架下做何编老师的试验,试着从CESM的scripts出发编译F Compset,结果神奇地发现居然还需要下载数据。问题是之前已经可以通过standalone的方式运行CAM5了呀,神奇的地球。决定用standalone的方式转转,对比下到底有什么不一样。
CESM的编译方式还是遇到些阻碍,问题及解决方法记录在这里。
1.F_2000_CAM5下载数据后编译失败,编译输出目录为out-of-box设置时config_machines.xml指定的位置。解决方案:xmlchange改env_build.xml重新指定编译输出目录。通过!
2.查看env_run.xml发现rundir也是默认的,果断要改。xmlchange同时改运行时间。
3.修改user_nl_cam,加入针对CAM的namelist更改项目。最初直接把SST和CO2强迫都加这里,结果create_namelist都通过不了。还是一点点来吧。关于海温强迫的方法,standalnoe和F的方式是不一样的。参考帖子:
https://bb.cgd.ucar.edu/node/1001744
UG上有一篇讲B SST OUT, F SST IN的,里面提出要修改env_run.xml。
CO2最初只修改了cam中的co2vmr这个变量,结果CLM崩了,应该是两边CO2不匹配,standalone实在不知道怎么对CLM进行修改,F下找到响应变量修改后,运行到第四天出现sigfault。后来发现居然有一个统一变量叫CCSM_CO2_PPMV啊!坑爹,修改后没问题。
4.qsub提交任务的时候出问题,需要注意 run脚本中第一行 csh后面的-f参数需要去掉,这是最初移植的时候遗漏的问题。
以上问题最终的解决办法写在下面:
能够通过的步骤写在下面,以1999-2008变暖后的clim SST及CO2强迫为例:
$ create_newcase -case awcam5 -compset F_2000_CAM5 -res f19_f19 -mach sigon #注意$CCSMROOT/scripts已经加入PATH环境变量 $ ./xmlchange EXEROOT=`pwd`/exe #反点号括起来的pwd会被执行,其输出并同/exe输入给exeroot变量 $ ./xmlchange RUNDIR=`pwd`/exe $./cesm_setup $./awcam5.build
build后修改外强迫。
首先是CO2:
$.xmlchange CCSM_CO2_PPMV=385.59 # 2009年数据,这个变量在env_run.xml当中
再是海温,首先将总input数据链接过来,防止路径被新提供的inputdata污染,再修改响应变量。
$link_dirtree $CSMDATA ./input
$./xmlchange DIN_LOC_ROOT=pwd
/input
cp处理后的SST数据到相应位置,修改响应namelist变量,包括起止年份及文件名称。这个名字太长,建议直接vi。
$./qsub awcam5.run
此外有一点发现是,F_2000采用的不是AMIP形式的观测资料强迫,而是气候态海温循环强迫。
在经历两天完全没有头绪的痛苦过程后,终于想起来去年十一月刚刚开始试着移植CESM的时候在工作站上下载的CAM Tutorial。抓过来一看,果然有physics和接口的介绍,虽然Tutorial已经是09年的了,但当时居然已经是CAM5的版本……NCAR五年前就已经转的起来CAM5的物理包了么……天河二号上转起来都这么慢,反正Tianhe-2性能指标基本都是靠Phi顶起来的,也不奇怪。扯远了。
这套tutorial的interface模块介绍写得正合我胃口,基本都是介绍CAM源码结构,运行流程的。看过Neale的Physics in CAM的Tutorial,对大致的物理过程运行流程清楚后,这个interface模块介绍的tutorial看起来还是很顺的。而且值得窃喜的三点是:
1.我居然下载了它,因为目前CESM官网上已经删除了10年以前的培训材料。当然这会有一个比较大的问题,10年之后基本都是针对CESM的,每个模块都讲,但是都讲不细致。所以已经找不到针对CAM Interface的培训资料了。我很幸运。
2.它里面举的例子居然是针对convect_deep.F90诶~就是要改你丫的嘛啊哈哈哈
3.2009年NCAR就已经用起来CAM5了诶!啊哈哈哈!
不扯了,说正题。其实就是为了记录一下vi已经linux的一些使用技巧,尤其是处理文本的时候(比如源代码)。
vi下查找
:/the_content_you_search
查找下一个用n键
#Up to 20140729#
在physics的主调用程序下查找所有的物理包,这个命令很好用。
grep call tphys*c.F90
tphys*c.F90通配了before和after coupling的两个物理包调用文件,grep这两个文件中的call语句(亮点!),因此抓出来的都是参数化过程。
#Up to 20140731#
上述语句配合管道符可以改写为
cat tpys*c.F90 | grep call
#Up to 20140802#
$find ./ -name “*.F90″ |xargs cat|grep -v ^$|wc -l答案是——————————499742 居然不到50万行,比我想象要少诶…… 参考资料中还有记录空行等命令格式 http://www.cnblogs.com/fullhouse/archive/2011/07/17/2108786.html #Up to 20140815#
应包老师要求,在天河二号上进行CAM5的强可扩展性测试。进行一个节点测试的时候发现积分速度才2.7yr/day,着实吓了一大跳。CAM4可是12.7yr啊,速度还赶不上CAM4的1/4??!!换其他计算节点后还是这个速度,看起来CAM5的计算量增加的不是一点半点啊。最后测试结果如下,基本只有CAM4四分之一的速度。
晚上看NCAR Tutorial的时候看到了几张图,从上到下分别是CAM5的物理过程,CAM4和CAM5的积分步流程。可以看到CAM5各个物理过程之间也存在通信(这才合理嘛!)。再加上辐射方案的改进,计算时间也大增,据包庆老师说辐射计算时间占到总计算时间的一半以上。CAM5会这么慢其实也合情合理吧。