陳怡然,姜金榮,趙曉溪,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);耦合器;代碼復用;自動生成
地球系統模式CAS-ESM(Chinese Academy of Sciences-earth system model)可用于理解過去氣候以及環境演變機理,并預測全球以及區域氣候與生態環境的變化。地球系統模式中有一個十分重要的關鍵部件——耦合器(coupler)[1]。耦合器可以將地球各個子系統,也就是分量模式軟件連接起來,從而構造出一個完整的地球系統模式軟件。
耦合器負責進行不同分量模式之間的數據轉換,同時執行大量的通信來進行數據交換。它能夠大大簡化各分量模式的接口工作??蓴U展性良好且易用性強的耦合器對于模式專家而言,只需要了解耦合器的接口而不需要了解耦合器內核以及底層架構,就可以將自己研制的分量模式通過連接耦合器接口遷移到地球系統模式中,與其他模式進行數據交換和通信,從而與其他接入的分量模式一起構成完整的地球系統模式。
近年來,地球系統模式得到了蓬勃發展,耦合技術成為耦合模式發展的公共需求并逐漸得到了重視,耦合器研制成為耦合模式研發的重要支撐技術。在國外,耦合器發展相對成熟,使用較為廣泛的耦合器有兩個:一個是由美國國家大氣研究中心(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研究了地球系統模式耦合接口的代碼復用技術以及耦合接口代碼自動生成技術,通過模板文件和用戶可以自定義的配置文件,自動生成耦合接口代碼,簡化耦合器接口。
地球系統模式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耦合器和中科院耦合器對比
耦合接口需要支持由不同編程語言實現的分量模式。鑒于大部分的分量模式都是通過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。
然而此種做法只在初始化部分以及結束部分的分量模式間未通信時可以保證正確性,當分量模式間需要通信時,由于統一接口后分量模式的全局變量在并行系統中僅維持一套,當組件間交互時,便會發生寫覆蓋問題,使得全局通量不守恒。
本文保留了每種分量模式的全局變量聲明的代碼,只把函數共同的實現部分提煉為統一的接口,而全局變量依舊保留在每個分量模式的文件中,保證在系統中每個組件的變量唯一存在而不被覆蓋,又保證函數的共同部分代碼統一。
耦合接口應該定義得盡可能少。太多的接口調用會造成用戶將分量模式接入到耦合器的不便,從而增加接入模式的開發周期且不易于維護,因此耦合接口應該設計得精簡,并保證這些接口的功能能夠覆蓋整個耦合過程[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 代碼自動生成的流程圖
地球系統模式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.