CAS-ESM耦合接口技术研究*

2017-02-20 10:48陈怡然姜金荣赵晓溪王玉柱郝卉群
计算机与生活 2017年2期
关键词:分量代码耦合

陈怡然,姜金荣,赵晓溪,3,王玉柱,郝卉群

1.中国科学院 计算机网络信息中心 超级计算中心,北京 100190

2.中国科学院 计算科学应用研究中心,北京 100190

3.中国科学院大学,北京 100049

4.中国科学院 遥感与数字地球研究所,北京 100094

CAS-ESM耦合接口技术研究*

陈怡然1,2,3+,姜金荣1,2,赵晓溪1,2,3,王玉柱4,郝卉群1,2

1.中国科学院 计算机网络信息中心 超级计算中心,北京 100190

2.中国科学院 计算科学应用研究中心,北京 100190

3.中国科学院大学,北京 100049

4.中国科学院 遥感与数字地球研究所,北京 100094

耦合器是地球系统模式(earth system model,ESM)的重要组成部分,用于连接各个分量模式。针对地球系统模式中的耦合接口进行编程操作,使得分量模式的代码从耦合系统中分离出来,从而使得模式专家只需要了解耦合接口而不再需要了解耦合器的复杂内部实现。为此提出了两种耦合接口技术:一是耦合接口代码复用技术,将各个分量模式形式相似的代码段复用为统一的接口;二是耦合接口代码自动生成技术,根据统一的模板文件,模式专家只需要在配置文件中提供相应的变量信息,便可通过模板文件自动生成分量模式的代码。基于以上工作,将改写耦合接口后的地球系统模式部署到中科院超级计算机“元”上,结果表明经过代码复用及自动生成后的耦合接口与原来代码模拟结果一致。

地球系统模式(ESM);耦合器;代码复用;自动生成

1 引言

地球系统模式CAS-ESM(Chinese Academy of Sciences-earth system model)可用于理解过去气候以及环境演变机理,并预测全球以及区域气候与生态环境的变化。地球系统模式中有一个十分重要的关键部件——耦合器(coupler)[1]。耦合器可以将地球各个子系统,也就是分量模式软件连接起来,从而构造出一个完整的地球系统模式软件。

耦合器负责进行不同分量模式之间的数据转换,同时执行大量的通信来进行数据交换。它能够大大简化各分量模式的接口工作。可扩展性良好且易用性强的耦合器对于模式专家而言,只需要了解耦合器的接口而不需要了解耦合器内核以及底层架构,就可以将自己研制的分量模式通过连接耦合器接口迁移到地球系统模式中,与其他模式进行数据交换和通信,从而与其他接入的分量模式一起构成完整的地球系统模式。

近年来,地球系统模式得到了蓬勃发展,耦合技术成为耦合模式发展的公共需求并逐渐得到了重视,耦合器研制成为耦合模式研发的重要支撑技术。在国外,耦合器发展相对成熟,使用较为广泛的耦合器有两个:一个是由美国国家大气研究中心(NCAR)研制的CPL耦合器,主要应用于其提出的“共同气候系统模式(community climate system model,CCSM)[2],这也是我国地球系统模式使用最多的耦合器。CPL耦合器最大优势在于模式专家将分量模式接入耦合器的时候可以不用关注耦合流程,因为耦合流程已经在耦合器中实现。然而用户在添加耦合物理量,设置耦合频率等配置环节都需要对耦合器的实现源码进行相应的手动修改,为用户将分量模式接入耦合器增加了难度。另一个耦合器是OASIS耦合器,它出自欧洲气候模拟和全球变化研究中心[3],它的耦合器仅负责耦合连接,耦合流程分布在每一对实现耦合的分量模式之间。虽然它提供了XML(extensible markup language)文件的配置方式方便用户配置,但是对于接入一个分量模式而言,所要知道的信息过多。用户需要懂得耦合才能接入模式,并且必须知道数据来源,清楚系统内部的数据流动,需要自定义耦合任务分配。新的耦合功能都要依赖于用户去实现,当系统规模变得越来越大,系统中的耦合功能越来越复杂,用户的负担将会变得非常重。在国内,耦合器的开发还刚起步,基本上从国外耦合器改进而来,如地球系统模式耦合器C-Coupler,它是由清华大学地球系统科学研究中心研发的通用的模块化并行耦合框架,基于CPL6和MCT(model coupling toolkit)开发,采用面向对象语言C++开发而成,但是它不公开源代码,不太适合地球系统模式普适性发展需要。

国内外代码自动生成例子有很多,它们大多以xml作为模板,提供变量自动对应关系,利用正则自动生成相应有规律性代码。如Brumbaugh等人曾经自动生成sql(structured query language)、xml[4],Peng等人将控制命令文档作为输入,通过正则表达式规则分析命令的结构化数据,动态地生成基于xml的代码模板[5]。

地球系统模式的耦合器中各个分量代码有着大量公共的部分,如果为这些公共的部分提升出统一的接口,就可以减少代码量,修改代码时可以只修改统一的部分,而无需每种分量模式都进行修改。为此本文设计并实现了耦合接口代码复用技术。模式专家将自己研究的分量模式接入耦合器接口时,需要在原有代码中手动增加大量的变量信息、功能函数以及函数接口调用等代码,而这些信息与其他的分量模式很多部分形式类似,耦合接口代码自动生成技术为这些形式类似的代码提供了统一的模板,模式专家只需要提供自己的分量模式相关变量的配置文件,而不需要编写重复代码,便可以自动生成出这些耦合接口代码。

本文基于CAS-ESM研究了地球系统模式耦合接口的代码复用技术以及耦合接口代码自动生成技术,通过模板文件和用户可以自定义的配置文件,自动生成耦合接口代码,简化耦合器接口。

2 CAS-ESM与CPL

地球系统模式CAS-ESM是一套基于地球系统中的动力、物理、化学和生物过程建立起来的数学物理模型[6]。CPL耦合器是地球系统模式CAS-ESM的核心部件之一,它将地球多个分量模式(如大气、陆面、海洋和海冰等)通过软件的方式连接起来,从而构造出一个完整的地球系统模式软件[7]。CPL耦合器负责不同分量模式之间的数据转换,同时执行大量的通信来进行数据交换,实现分量间的并行计算,并控制整个地球系统模式的积分模拟。在科学上,耦合器充分体现地球系统多圈层间的相互作用;在技术上,耦合器是地球系统模式模块化发展的需要,是各分量模式专家分工合作的关键平台。

2.1 地球系统模式CAS-ESM

CAS-ESM基于CESM(community earth system)1.0版本开发[8],用于模拟地球气候系统模式。CASESM可以通过数值模拟来确定地球系统各个子系统的性状,可以用于理解过去气候以及环境演变机理,并预测全球以及区域气候与生态环境的变化。CASESM主要由5个单独的模式组件组成,包括大气、海洋、陆面、陆冰和海冰模式组件,外加一个中央耦合器组件——CPL耦合器。在CAS-ESM系统中,大气组件模式是中国科学院大气物理研究所开发的大气环流模式IAPAGCM4.0(Institute ofAtmospheric Physics,atmospheric general circulation model version 4),海洋组件模式是中国科学院大气物理研究所开发的海洋模式LICOM(LASG/IAP climate system ocean model)2.0版本[9],陆面组件模式是北京师范大学开发的CoLM(common land model)模式[10],陆冰组件模式是GLC模式[11],海冰组件模式是CICE4,大气化学模式是中国科学院大气物理研究所开发的GEATM(global environmental atmospheric transport model)[12]。

Fig.1 Structure picture of CAS-ESM图1 地球系统模式结构图

这些分量模式通过CPL耦合器接入CAS-ESM,并通过耦合器进行数据交换。耦合流程已经在CPL耦合器中实现,模式专家将分量模式接入耦合器的时候可以不用关系耦合流程。

2.2 CPL耦合器

美国NCAR研发的CPL耦合器主要应用于CCSM计划中[13],随着CCSM系统的发展壮大,其成为了目前国际上应用最为广泛的耦合器之一。

CPL耦合器采用集中式耦合,所有的分量模式都通过耦合器实现耦合。耦合器已经为分量模式定义了一套完整的耦合流程,即在耦合器内部实现了固定个数分量模式的耦合,包括耦合物理量的连接关系、模式之间的数据交换,即按什么次序进行并行通信,采用哪个并行插值算法都已经配置好了。CPL系列的耦合器虽然被称为通量耦合器,但分量模式交换的耦合物理量并不仅仅局限于通量,还包括状态变量。分量模式需要通过耦合器进行数据交换,其中有一部分数据会在耦合器中进行通量计算。通过调用耦合工具库MCT中的相应函数来实现这些耦合功能。正是因为基于这样的设计理念,CPL耦合器才能够具有“可插拔式”的模块化结构。大气、海洋、海冰、陆面这4类分量模式在整个CCSM系统中是固定不变的,因为它们之间的耦合关系已经被定义在了耦合器中。用户可以在这4个“插槽处”替换相同类型但是采用了不同动力框架或者基于不同物理模型的分量模式。

CPL耦合器最大优势在于模式专家将分量模式接入耦合器的时候可以不用关注耦合流程,因为耦合流程已经在耦合器中实现。地球系统模式中的耦合流程是一个涉及多个学科知识的复杂过程。制定耦合流程需要具备广泛的知识面和深厚的专业背景,这样的工作并不适合模式专家来完成。而CPL耦合器所基于的核心思想是将分量模式的连接关系、数据之间的流动关系、耦合数值计算的顺序、重启动条件等一系列耦合环节整合到耦合器内部。从外部看,分量模式只需将物理量数据提供给耦合器,并且告诉耦合器自己想得到哪些物理量数据即可,模式专家无需知道数据是来自哪个分量模式或者是哪个算法的运算结果,不用关心数据在系统里是如何流动的。将分量模式接入耦合器中,只需要关心自身的耦合物理量,屏蔽了其他分量模式的细节,屏蔽了耦合流程的细节,这样一来,即使不懂耦合的模式专家也有足够的能力做这件事情。这样的设计体现了一种模块化协作的系统开发方式:耦合专家负责做耦合,而模式专家专注于接模式。

而CCSM中的耦合流程直接在耦合器中实现,是一种代码级的定义方式。从编写的源代码中去了解耦合流程,必须掌握耦合器的实现以及耦合工具库MCT的各种接口程序,得有相当长时间的学习和积累。因此,在CPL耦合器中增加一个分量模式连接或者加入一个新的耦合数值算法将会是一件非常困难的事情。如没有提供脚本形式,添加耦合物理量,设置耦合频率等配置环节都需要对耦合器的实现源码进行相应的修改。当接入一个新模式时,需要对脚本进行大量的修改,又提供相应的辅助工具,使得模式接入后的调试、维护很不方便;修改耦合流程意味着要改耦合器的内核代码,难度很大。另外,物理量的耦合频率以分量模式为单位,输出频率以耦合器为单位,这样的设计不够灵活。而在计算性能方面,目前没有实现异步通信,并行插值过程中存在冗余通信。表1为CPL耦合器以及修改耦合器接口后的耦合器的功能对比。

Table 1 Comparison of CPL and CAS couple表1 CPL耦合器和中科院耦合器对比

3 耦合器接口代码复用技术

耦合接口需要支持由不同编程语言实现的分量模式。鉴于大部分的分量模式都是通过Fortran语言或者Fortran+C的混编方式编写的,因此将会设计两套耦合接口:一套为C语言的调用接口;另一套耦合接口将会支持Fortran调用C语言的方式。

各个分量模式有着大量的形式相似的代码,如mapping的过程,各个分量模式都有分量模式到耦合器的映射和耦合器到模式的初始化以及运行过程,分量模式间重复代码造成了代码的冗余。当添加新的分量模式时,又要复制同一套代码,只做一些变量名称的轻微改变;如果这套相似的代码需要做整体调整,各个分量模式的代码都需要同时做出相同的改变,这严重增加了工作量,同时也造成了代码难以维护。

因为各个分量模式的映射的初始化部分是分量模式与耦合器的直接通信,未涉及分量模式间的通信,所以分量模式间可以以相同变量形式存在而不影响通量守恒。因此可以将分量模式间的映射部分改为统一的接口。实验表明,将mapping的init部分改为统一接口不影响程序的正确性,且运行时间与原程序几乎一致。

3.1 数据类型

由于耦合接口采取Fortran+C混合编程的方式,不同语言之间的数据结构需要统一,不同语言之间函数调用的函数名称需要对应,变量名称变量类型也需要对应。CAS-ESM的基本数据类型如图2所示。

Fig.2 Basic data type of CAS-ESM图2 CAS-ESM基本数据类型

3.2 混合编程中的函数名对应

由于CAS-ESM程序代码量大,且各个分量模块的Fortran版本已广为业内使用,替换全部的Fortran代码为C代码不切实际,故本文采用混合编程的方式实现接口的复用。耦合接口上层部分代码通过C实现,而下层接口还是Fortran,不同语言间的函数调用就成为解决代码调用的着手点。

Fortran与C的调用是通过编译后生成的目标文件的内部函数名实现的。通过Linux的nm命令可以查询到Fortran代码编译生成的目标文件的函数名为文件名+_mp_+函数名+_。如编译ccsm_comp_mod. F90中的ccsm_init()函数生成的ccsm_comp_mod_mp_ ccsm_init_()这个函数名。C文件可以通过extern这个函数名来调用ccsm_init()函数。

3.3 混合编程中的参数列表对应

当C调用的Fortran接口为CAS-ESM自定义的数据类型时,参数传递应为变量类型的地址,而非对象。当C调用的Fortran接口的参数为char*类型时,不仅要传递char*地址,还要传递字符串长度。

CAM-ESM的入口程序为ccsm_driver.F90,主控接口为ccsm_comp_mod.F90,其内部调用各个分量模式的映射程序,而rof与其他分量模式不同的是它只有分量模式到耦合器的单向过程,而无需耦合器到分量模式的过程。因此rof比起其他组件而言,参数列表缺少x2c_cc、x2c_cx变量,在Fortran中的统一接口可以通过optional变量替换。传统的C没有optional的属性,然而Fortran的变量是通过地址定义的,C可以定义空指针,传入的数据为NULL,即指针为空,此时未对指针赋值,即此optional未选择。

3.4 代码复用的实现

Fig.3 CAS-ESM call uniform coupler interface图3 CAS-ESM调用统一接口

图3 为耦合接口代码复用的部分实现图(以lnd模式为例),由于映射部分各分量模式代码形式相似,本文将其提炼为统一的接口map_c2c_mct_assist.cc。

然而此种做法只在初始化部分以及结束部分的分量模式间未通信时可以保证正确性,当分量模式间需要通信时,由于统一接口后分量模式的全局变量在并行系统中仅维持一套,当组件间交互时,便会发生写覆盖问题,使得全局通量不守恒。

本文保留了每种分量模式的全局变量声明的代码,只把函数共同的实现部分提炼为统一的接口,而全局变量依旧保留在每个分量模式的文件中,保证在系统中每个组件的变量唯一存在而不被覆盖,又保证函数的共同部分代码统一。

4 耦合器接口代码自动生成技术

耦合接口应该定义得尽可能少。太多的接口调用会造成用户将分量模式接入到耦合器的不便,从而增加接入模式的开发周期且不易于维护,因此耦合接口应该设计得精简,并保证这些接口的功能能够覆盖整个耦合过程[14]。

耦合接口应该定义得尽可能简单灵活。鉴于耦合接口的设计宗旨是尽量减少用户对分量模式程序的改动,不会要求用户按照本文定义的接口规范来强制改变已完成的分量模式的数据结构、模块设计以及运行流程等。因此,接口需要设计得简单灵活,用户通过直接调用耦合接口的方式就能得到所需的功能,数据初始化、格式转换等处理工作应当交由配置文件和耦合接口程序来完成。

本文为模式用户提供两类接口:一类是模板文件,即原先各个分量模式之间相似的代码,提炼出一套统一的模板文件,不同的部分用特殊符号代替,自动生成的时候只需要替换这些特殊字符为组件字符即可。另一类是模式列表,如list=‘[atm',‘ice',‘lnd',‘ocn',‘rof',‘glc',‘sno'],当用户新增一类组件时,只需要在list中添加新增组件,运行自动生成代码的脚本,新增模式便会在代码当中自动生成,而无需手动添加,便可以生成以行重复或者以块重复的代码片段。模板文件允许添加特例,如模板文件中的x2{c}_ {c}x变量在其他模式中应该直接替换成如x2i_ix这样的形式,而由于ocn没有x2o_ox这个变量,在ocn中,此变量表现为x2oacc_ox%data的形式,模板文件允许在特定位置手动添加特例规则。

4.1 模式间mapping

mapping的代码分为四部分:第一部分为分量模式到耦合器的mapping;第二部分为耦合器到分量模式的mapping;第三部分为分量模式到其自身的mapping;第四部分为分量模式之间的mapping。前三部分的代码可以总结出统一的规律,可以通过前面的模板方式直接解决。

而分量模式之间的mapping不能用简单的遍历替换解决。分量模式之间的映射关系如图4,可知各分量模式之间不是全相连的,而且是有向图,即映射关系不都是双向的,如只有ice到atm的映射,而atm到ice没有映射,这就为自动生成代码提出了挑战。

Fig.4 Mapping of component models图4 模式之间的mapping关系图

为了解决以上难题,本文依据以下规则新建二维数组,第一、二列代表了存在映射关系的两个分量模式,第三列表示它们的映射方向。如果第三列为2,说明这两种分量模式为双向映射;如果是1,代码映射关系只是第一列到第二列的映射;如果是-1,则代表仅有第二列向第一列存在映射。

有了这个二维数组的信息后,还需要给用户提供的是模板文件,以完成替换。模板将待替换的代码段用〈list〉…〈/list〉连接起来,当读入模板文件时发现〈list〉,就将文本信息存入临时list,直到遇到〈/list〉为止。为避免和正文因此混淆冲突,将所有的待替换内容注释起来。当替换的时候把叹号去掉,而有些mapping部分为单向,因此用双叹号表示,当遇到第三列为2时,两个叹号都去掉,当第三列信息为+1时,去掉第一行的双注释,而保留第二行的一个注释,第三列信息为-1时,去掉第二行的双注释,而保留第一行的一个注释。模板文件的书写方式如下。

根据上述模板库文件,以及用户可以自定义的mapping规则,生成了mapping的代码片段。

4.2 自动生成接口层代码

cesm_run部分的代码具有非常统一的块结构,模式按照{ccc}setup,{ccc}prep,cpl→{ccc},run{ccc} model,ccc→{cpl}的顺序执行。当然,组件之间的代码也有穿插,如图5,其中箭头代表cesm_run的代码顺序。

由于cesm_run部分的代码成块结构,既不能逐行遍历自定义的list,也不能像上述的〈list〉…〈/list〉遍历顺序相邻的组件。因此定义新的规则,在模板代码中遇到!{xmlinsert}(cpl2ccc.F90,dict_cpl2ccc,ocn)字符串转化为命令。其中{xmlinsert}作为这种替换的标志信息,第一列cpl2ccc.F90为子模板文件,第二列dict_cpl2ccc为用户定义的模板字典信息,第三列ocn为模式信息。用模式ocn在模板字典dict_cpl2ccc中找到替换信息,如{ccc}替换为ocn,将此替换信息替换第一列cpl2ccc.F90的子模板文件,再将替换后的文件插入{xmlinsert}所在位置完成替换。

这种方式可以完成没有子模式的绝大多数模式的自动生成,如atm、ice等,然而对于有子模式的lnd则需要另加考虑。上述插入文本部分只写{ccc},只会替换成lnd,然而lnd分量模式还包含子模式rof、sno,部分代码需要自动生成其中的三部分,因此不能一次性插入全部内容,即代码*1,也不能单纯地将全部的代码*3,即不能将rof、sno看成与lnd对等的模式。此时需要再将子模板文件cpl2ccc.F90写成多个子模式〈list〉的方式循环展开,一遍插入替换单次lnd代码,一遍循环展开子部分。

Fig.5 Structures of cesm_run coding图5 cesm_run的模式代码块顺序结构

模式字典定义了带有子模式的替换规则。子模板定义了需要替换的变量,通过正则可以识别〈list〉后的括号内容,找到[]内的内容,并查询用户字典,便可以找到循环遍历的替换规则,如ccc2,最外层依次替换rof、sno,中层按照子模板逐行替换,最内层遍历[]的个数替换,通过下标对应。本例中最内层先替换{ccc2}为rof,再替换{c2}为r,完成内层替换的一行,然后进行下一行,完成整个中层的逐行遍历,进行下一个sno的同等替换,即为外层遍历。三层遍历后的结果插入原文{xmlinsert}位置。

4.3 自动生成的实现

4.3.1 提炼出统一的模板文件

将原有代码根据功能划分,提炼出统一的模板,不相同的部分通过特殊的标签替换。模式之间的代码段具有相似的结构特征,可以将这些相似的特征提炼成统一的代码,不同的部分提取变量名称,用特殊的符号替代,如{ccc}标签。统一的模板管理起来非常方便,如果需要修改,不需要修改每个分量模式的代码,只需要修改统一的模板代码便可以自动生成所有模式的代码,提高了代码复用性,减少了代码量。遍历变量名称数组,替换模板的特殊标签便是代码自动生成的第一步。

4.3.2 根据配置文件生成控制信息文件

设计用户配置文件,自动生成各模板的控制信息文件。用户提供可供配置的脚本文件,可以在脚本文件中配置分量模式之间的数据交换关系,比如设置组件之间的mapping图结构。为了将上述脚本文件转换为可以运用到程序中的信息,耦合器接口提供脚本变量名称转换为数组定义的方式,经过规则定义后,用户定义的图结构转化为二维数组形式,如mapping之间的双向模式对,可以用形如[sno,glc,2]的结构表示,单向结构可以用[atm,ice,-1]表示,最后一位数字代表mapping方向。将用户的配置脚本转化为特定规则的数据结构是代码自动生成的第二步。

4.3.3 匹配规则完成模板替换

根据第一步中模板文件,设计匹配替换规则,匹配第二步中的控制文件,进行循环遍历,将替换后的模式次数的代码段插入原文中,完成代码自动生成的过程。如何替换模板文件中的标签,如何遍历变量名称的数组文件,便需要替换规则加以说明,这也是控制代码自动生成的Python脚本文件。简单的模板代码行只需要顺序遍历一次变量数组文件即可,而模板代码段,还需要遍历待替换的行以及数组,如果遇到带子模式的分量,如lnd,还需要在需要的位置遍历子模式。遇到特例化的公式计算等,还需要预留出脚本替换的位置,供用户自行添加脚本代码。

自动生成代码的流程图如图6,从用户可以编辑的脚本文件生成变量数组,通过某种规则循环遍历变量数组,替换模板代码段,将替换后的代码插入原代码段。

Fig.6 Flow of automatic generation coding图6 代码自动生成的流程图

5 结束语

地球系统模式CAS-ESM可用于理解过去气候以及环境演变机理,并预测全球以及区域气候与生态环境的变化。

CPL耦合器是地球系统模式CAS-ESM的核心部件之一,它将地球多个分量模式通过软件的方式连接起来,从而构造出一个完整的地球系统模式软件。CPL耦合器负责不同分量模式之间的数据转换,同时执行大量的通信来进行数据交换,实现分量间的并行计算并控制整个地球系统模式的积分模拟[13]。

CPL耦合器实现了耦合流程,使得模式专家只需关心耦合物理量而无需关心其他分量模式的细节以及耦合流程,然而CPL耦合器需要模式专家从源代码中了解耦合流程,添加耦合物理量,设置耦合频率等配置环节,都需要对耦合器的实现源码进行相应的修改。

为了改变CPL耦合器对源码的过分依赖,本文基于CAS-ESM中的CPL耦合器,设计并实现了耦合接口代码复用技术以及代码自动生成技术。代码复用技术使得模式代码从系统中分离出来;代码自动生成技术通过脚本配置的方式自动生成耦合接口代码,用户只需要关心模板文件以及配置文件,便可以自动生成代码,取代手动修改源代码,从而简化了耦合器接口。最后将带有上述耦合器接口的地球系统模式部署到中科院超级计算机“元”上,验证了程序的正确性。

[1]Wan Xiuquan,Liu Zedong,Shen Biao,et al.Introduction to the community earth system model and application to high performance computing[J].Advances in Earth Science, 2014,29(4):482-491.

[2]Lamarque J F,Emmons L K,Hess P G,et al.CAM-chem: description and evaluation of interactive atmospheric chemistry in CESM[J].Geoscientific Model Development Discussions,2011,4(3):2199-2278.

[3]Marcus D S,Wang T H,Jamie P,et al.Open access series of imaging studies(OASIS):cross-sectional MRI data in young,middle aged,nondemented,and demented older adults[J].Journal of Cognitive Neuroscience,2007,19(9): 1498-1507.

[4]Brumbaugh H,Kent J.autoSql and autoXml:code generators from the genome project[J].Linux Journal,2002(99):68-74.

[5]Peng Siwei,Chen Yuping.Research and implementation of render engine controller's auto source code generator[J]. Computer Systems&Applications,2010,19(4):69-72.

[6]Sun Hongchuan,Zhou Guangqing,Zeng Qingcun.Assessments of the climate system model(CAS-ESM-C)using IAP AGCM4 as its atmospheric component[J].Chinese Journal ofAtmospheric Sciences,2012,36(2):215-233.

[7]Cai Pengli,Wang Bang,Ji Jingxiao,et al.The putative cellodextrin transporter-like protein CLP1 is involved in cellulase induction in neurospora crassa[J].Journal of Biological Chemistry,2015,290(2):788-796.

[8]Smith R,Jones P,Briegleb B,et al.The parallel ocean program(POP)reference manual ocean component of the community climate system model(CCSM)and community earth system model(CESM),LAUR-01853[R].2010.

[9]Liu Hailong,Lin Pengfei,Yu Yongqiang,et al.The baseline evaluation of LASG/IAP climate system ocean model (LICOM)version 2[J].Acta Meteorologica Sinica,2012,26 (3):318-329.

[10]Leng Pei,Song Xiaoning,Li Zhaoliang,et al.Evaluation of the effects of soil layer classification in the common land model on modeled surface variables and the associated land surface soil moisture retrieval model[J].Remote Sensing, 2013,5(11):5514-5529.

[11]Bartholomé E,Belward A S.GLC2000:a new approach to global land cover mapping from earth observation data[J]. International Journal of Remote Sensing,2005,26(9):1959-1977.

[12]Worley P H,Craig A P,Dennis J M,et al.Performance of the community earth system model[C]//Proceedings of the 2011 International Conference for High Performance Computing,Networking,Storage and Analysis,Seatle,USA, Nov 12-18,2011.Piscataway,USA:IEEE,2011:1-11.

[13]Craig A P,Vertenstein M,Jacob R.A new flexible coupler for earth system modeling developed for CCSM4 and CESM1[J].International Journal of High Performance ComputingApplications,2011,26(1):31-42.

[14]Liu L,Yang G,Wang B,et al.C-Coupler1:a Chinese community coupler for earth system modelling[J].Geoscientific Model Development Discussions,2014,7(3):3889-3936.

附中文参考文献:

[5]彭四伟,陈玉萍.RE控制程序源代码自动生成程序的研究与实现[J].计算机系统应用,2010,19(4):69-72.

[6]孙泓川,周广庆,曾庆存.IAP第四代大气环流模式的气候系统模式模拟性能评估[J].大气科学,2012,36(2):215-233.

CHEN Yiran was born in 1991.She is an M.S.candidate at University of Chinese Academy of Sciences.Her research interests include high performance computing on earth system model and development of parallel software.

陈怡然(1991—),女,天津人,中国科学院大学硕士研究生,主要从事高性能计算在地球系统模式中的应用算法研究及相关并行软件开发。

JIANG Jinrong was born in 1977.He is an associate research fellow at Chinese Academy of Sciences.His research interests include high performance computing on earth system model and development of parallel software.

姜金荣(1977—),男,浙江舟山人,博士,中国科学院副研究员,主要从事高性能计算在地球系统模式中的应用算法研究及相关并行软件开发。

ZHAO Xiaoxi was born in 1991.She is an M.S.candidate at University of ChineseAcademy of Sciences.Her research interests include high performance computing on earth system model and development of parallel software.

赵晓溪(1991—),女,江苏徐州人,中国科学院大学硕士生,主要从事高性能计算在地球系统模式中的应用算法研究及相关并行软件开发。

WAMG Yuzhu was born in 1988.His research interests include high performance computing on earth system model and development of parallel software.

王玉柱(1988—),男,河南周口人,博士,主要研究领域为高性能计算在地球系统模式中的应用算法研究及相关并行软件开发。

HAO Huiqun was born in 1991.His research interests include high performance computing on earth system model and development of parallel software.

郝卉群(1991—),男,北京人,硕士,主要从事高性能计算在地球系统模式中的应用算法研究及相关并行软件开发。

Research of CAS-ESM Coupler Interface*

CHEN Yiran1,2,3+,JIANG Jinrong1,2,ZHAO Xiaoxi1,2,3,WANG Yuzhu4,HAO Huiqun1,2
1.Supercomputing Center,Computer Network Information Center,ChineseAcademy of Sciences,Beijing 100190,China
2.Center of Scientific ComputingApplications&Research,ChineseAcademy of Sciences,Beijing 100190,China
3.University of ChineseAcademy of Sciences,Beijing 100049,China
4.Institute of Remote Sensing and Digital Earth,Chinese Academy of Sciences,Beijing 100094,China
+Corresponding author:E-mail:chenyr@sccas.cn

Coupler is an important part of the earth system model(ESM).It connects various component models. Based on the CPL coupler interface,this paper separates the component models codes from the system model,in order to achieve the goal to read coupler interface only rather than understand the complex internal coupler of the system for component models exports.Then this paper studies two ways to code with coupler interface:reusing the duplicate codes to get unification codes and automated generation codes.Firstly,repetitive codes of different component models from coupler interface are reused to unify.Secondly,codes will be automatically generated after filling up the corresponding contents of variables on the configuration files by component models exports.Those variables will replace special variables from template files and loop traversal.Those contents can be inserted into the final codes to finish automated generation codes.Furthermore,the ESM with coupler interface which adds coding reuse and automated genera-tion is deployed to Chinese Academy of Sciences(CAS)super computer,ERA.The results of coupler with the two techniques are consistent with the original simulation one.

earth system model(ESM);coupler;coding reuse;automated generation

10.3778/j.issn.1673-9418.1512060

A

TP338.6

*The Key Deployment Project of CAS under Grant No.KJZD-EW-TZ-G09(中科院重点部署项目).

Received 2015-11,Accepted 2016-01.

CNKI网络优先出版:2016-01-14,http://www.cnki.net/kcms/detail/11.5602.TP.20160114.1658.002.html

CHEN Yiran,JIANG Jinrong,ZHAO Xiaoxi,et al.Research of CAS-ESM coupler interface.Journal of Frontiers of Computer Science and Technology,2017,11(2):242-251.

猜你喜欢
分量代码耦合
基于增强注意力的耦合协同过滤推荐方法
擎动湾区制高点,耦合前海价值圈!
复杂线束在双BCI耦合下的终端响应机理
画里有话
一斤生漆的“分量”——“漆农”刘照元的平常生活
一物千斤
基于磁耦合的高效水下非接触式通信方法研究
创世代码
创世代码
创世代码