最近测试了CESM1.0,CESM1.2.2和CESM2.1.3三个版本,不同版本在workflow上有一些区别,来做点笔记。
CESM1.0
测试compset:B_2000,F_2000
workflow:
1. create_newcase -case ~/CESM/cesm1_0/script/B_2000 -compset B_2000 -res f19_g16 -mach tianhe 2. cd B_2000 (optional) 修改env_mach_pes.xml 中核数,核数设置决定./configure -case是否能成功,e.g. NTASKS_ICE改为96, ROOTPE_ICE改为168 (optional) ./configure -cleanall ##如果重新编译,需先清空 3. ./configure -case (optional) 修改env_build.xml,修改env_run.xml中的路径、STOP_OPTION、STOP_N等参数 4. ./case.build 修改case.submit中yhbatch批处理提交任务命令,-N (核数,需参考env_mach_pes.xml中TOTALPEL、MAX_TASKS_PER_NODE确定,取大于等于两者的比值的最小整数) –p (选择分区,yhi查看) 格式:yhbatch -N num_nodes -p partition *.run 5. ./case.submitCESM1.2.2
测试compset: B_2000
workflow:
1. create_newcase -case ~/cesm1_0/scripts/B_2000 -compset B_2000 -res f19_g16 -mach tianhe 2. cd B_2000 3. ./cesm.setup (optional) ./check_input_data -inputdata ~/CESM/inputdata -check (optional) 修改env_build.xml中的路径 4. ./case.build (optional) 修改env_run.xml中的路径,修改STOP_OPTION、STOP_N等参数,修改yhbatch提交命令 5. ./case.submitCESM1_0 vs. CESM1.2.2, 最主要两点不同:
(1)CESM1.2.2中./cesm.setup取代了./configure -case
(2)yhbatch批处理命令在CESM中在env_run.xml{BATCHSUBMIT}参数中设置,不再在case.submit中设置。
CESM1.2.2具体的可以参考另一篇:https://blog.csdn.net/qq_27984679/article/details/107099940
CESM2.1.3
测试compset: BHIST
workflow:
1. ./create_newcase --case ~/CESM/cesm2/cime/scripts/FCHIST --compset BHIST --res f19_g17 --mach hpccube --compiler intel --run-unsupported 2. cd BHIST/ (optional) 修改env_mach_pes.xml中核数设置 (optional) 修改env_run.xml中的路径,修改STOP_OPTION、STOP_N等参数 3. ./case.setup 4. ./case.build (optional) ./check_input_data ##必须build完成后才能检查 5. ./case.submitCESM1_2_2 vs. CESM2.1.3, 目前发现三点不同:
(1)check_input_data的命令和顺序不同,CESM2需要在build之后才能使用check_input_data, CESM1.0和CESM1.2.2则不用,case建立好就能检查;
(2)CESM1.0和CESM1.2.2的*.build可执行文件是csh脚本,而CESM2是完全建立在CIME框架上的,*build可执行文件是python脚本。
(3)批处理设置多了一个env_batch.xml文件,这个文件是由移植模式时修改的config_batch.xml决定的。
CESM2和CESM1有着巨大的结构上和科学上的差别(这也是为什么命名从version1改到了version2,命名原则参考:https://blog.csdn.net/qq_27984679/article/details/106203471)。结构上的差别主要体现在CIME这个python框架;科学上的差别体现在CESM2中的物理参数化方案更加复杂完善等,这一点从计算时间上就有所体现:同样跑2个月,CESM1.0跑F_2000(3*24,tianhe2)大概5min,B_2000(11*24,tianhe2)大概15min,CESM2跑BHIST(6*24,hpccube)大概5h+。
CESM2具体的可以参考另一篇:https://blog.csdn.net/qq_27984679/article/details/107118480
总结:
如果运行出现bug,很可能是两个原因:
(1)inputdata文件不全,check_input_data文件是在的,但实际上可能是只下载了部分。在cesm.log*文件末尾查看堆栈追踪,找到最后一个能打印出文件名的*.F90,把filename打印到cesm.log*文件中,由此定位出存在问题的文件并重新下载。
(2)核数设置有问题。在env_mach_pes.xml中修改。
关于超算上批处理问题的一些debug,可以参考:https://hpc-help-manual.readthedocs.io/zh_CN/latest/。