白漢利, 陳曉夢,2, 蒲 巧,*
(1.中國空氣動力研究與發展中心, 綿陽 621000; 2.西南科技大學 計算機科學與技術學院, 綿陽 621000)
當前,我國經濟發展已經由高速增長階段進入了高質量發展階段,國家的發展更加依賴自主創新,尤其是科學技術自主創新。在這種宏觀環境下,我國航空、航天、兵器、地面交通、能源、環保、制造等空氣動力學相關專業的資助研發投入大幅增長,各類型號、新產品、新技術、新概念不斷涌現,面臨一系列復雜的空氣動力學問題,迫切需要自主研發以CFD(Computational Fluid Dynamics)為核心的多學科耦合的大型軟件系統,并配套建設高性能計算機系統,構建空氣動力數值模擬平臺,形成數值模擬、數值試驗、數值飛行、多學科融合和協同優化等能力,支撐相關產業轉型升級,這也是國家數值風洞項目(National Numerical Windtunnel,NNW)致力于解決的問題[1-2]。
隨著高性能計算硬件由P級計算(PFLOPS,運算速度每秒千萬億次)向E級計算(EFLOPS,運算速度每秒百億億次)發展[3-4]以及CFD軟件的拓展,其應用需求逐漸從單一功能向多學科耦合模擬、大規模并行計算、高精度和高分辨率以及充分利用計算資源等方面轉變。對此,國內外在提高硬件計算能力的同時,也對相關的CFD軟件和數值模擬平臺不斷進行更換,使其具備面向E級計算機高性能計算的能力。如國外的DLR項目Digital-X,集成了流體力學模擬、結構力學模擬、多學科優化等7大領域的軟件包,借助合適的高保真、多學科仿真方法,通過數值計算,確定飛機的飛行特性,實現飛機在虛擬計算機環境中的首次飛行,降低了實際研發成本[5];典型的數值模擬軟件如ANSYS Workbench、ABAQUS、Nastran等通過對高性能計算環境中間件的建立[6-7],集成了網格劃分、CFD模擬、后處理技術,實現了對流體力學、結構動力學、結構熱等應用場景的分析模擬;國外開發的科學計算工作流系統如Kepler[8]、Trident[9]、Pegasus[10]、Taverna[11]、Vistrails[12]等,支持科研過程中的復雜步驟按照邏輯關系順序進行自動執行計算與模擬分析,現已在天文、氣象、材料、物理、生物等多個領域應用。
此外,國內陳飆松教授團隊一直致力于計算力學的科學研究和工程應用的SiPESC平臺[13-14],實現了求解器集成、有限元求解器研發、性能優化等模塊,并完成了大量計算分析軟件集成案例;安世亞太研發的多學科異構集成平臺軟件SimCube[15],支持自主及商業計算分析軟件的聯合仿真、性能優化、界面集成、結果可視化等功能;還有一些公司基于開源CFD 模擬仿真軟件和商業軟件進行二次開發,對原有軟件進行擴展和定制,如藍威技術有限公司開發的EasyCAE集成平臺。但是,目前國內自主研發的這些軟件或平臺,或是注重功能實現而未對擴展性和通用性進入深入統籌,或是擴展性和通用性較差,軟件架構需要升級更新。
因此,為了加快空氣動力數值模擬平臺的構建、提高研究人員的工作效率、軟件的開發效率和實用性、軟件之間的通信效率以及計算資源的利用率,作為NNW項目中數值模擬軟件平臺的重要組成部分,NNW集成框架系統在研究軟件系統體系結構、集成方法、工作流管理、數據交換標準的基礎上,以中間件為框架核心,為軟件系統提供了一個面向分布式的科學計算環境,實現了各學科求解器、前置處理軟件、后置處理軟件的集成,有效地為用戶提供計算流程配置、計算工程監控管理、數據管理功能。
本文第一部分介紹高性能計算環境下數值模擬軟件集成的相關工作,第二部分介紹NNW集成框架系統的設計過程,第三部分介紹NNW集成框架系統在實際計算環境下的應用,第四部分總結并展望未來工作。
在科學計算領域,由于用戶對不同軟件操作的熟練度有所差異,以及不同的計算機可能存在操作系統不同、應用軟件版本不同、軟件之間的數據交換格式不統一等情況,因此為用戶提供統一的、易于操作和理解的使用方式,是構建面向科學計算領域用戶的集成框架的基本要求。另外,提高高性能計算能力的同時并高效利用高性能計算資源、合理調度和管理作業及數據,是科學計算領域需要考慮的重點問題。
20世紀90年代末,隨著UNICORE項目的實現[16]和WebSubmit[17]的首次公開發行,拉開了基于Web Portal的高性能計算應用集成的帷幕。由于高性能計算應用具有復雜多變的特點,用戶通過多個應用軟件交互來獲取數據文件或通過命令行來對作業進行管理時,需要熟悉并掌握相關的軟件操作或具備豐富的調試經驗,這不僅對于用戶極不友好,也不利于科學計算研究工作的進一步開展。考慮到基于Web的圖形化交互界面無需用戶安裝軟件或編寫腳本,在瀏覽器中即可訪問應用數據或資源,因此,繼UNICORE和WebSubmit之后,針對不同領域的基于Web服務的高性能計算研究工作逐漸增多,如美國國防部高性能計算現代化項目HPCMP中提出的基于Web的安全訪問以實現高效的超級計算[18],俄羅斯科學院信息傳輸問題研究所提出的基于Web的計算應用程序發布和分布式執行平臺[19],韓國科學技術研究院提出的用于大規模科學計算軟件的基于Web的HPC仿真執行框架[20],中國科學院計算機網絡信息中心提出的基于Portlet的高性能計算應用集成組件[21]等。
高性能計算環境下的設備、軟件、應用和通信技術等往往具有動態性和異構性,其中,解決數據的不完整性和多源異構性是相關研究人員關心的兩大重點問題,因此,整合多源數據和訪問異構資源并進行集成成為了關鍵需求,而中間件在屏蔽底層硬件差異、計算資源的使用差異、集成異構數據、增加軟件重用性等方面發揮著重要的作用。為了充分利用高性能計算資源,降低用戶使用難度,業界學者致力于研究不同平臺和不同領域的中間件研發,如中國科學院計算機網絡信息中心設計實現了面向科學計算領域的網格中間件SCE,和優化后承載E級計算的高性能計算環境中間件[22-23],有效地屏蔽了高性能計算資源在使用和信息方面的異構,提高了系統的性能,增強了系統的可擴展性和穩定性。Wan[24]等人通過開發RFID中間件,將獨立的功能模塊和分布式數據資源集成為可以有序運行的系統,并在過程集成中對數據對象標準化,保證設計過程中數據的一致性,實現數據集成,解決數據管理和信息傳輸的問題,實現了用于空氣動力學建模仿真的集成設計系統。
此外,國外Judy Qiu[25]等人實現了用于數據密集型科學計算與分析的中間件MIDAS,其提供底層資源管理和異構基礎設施訪問層,支持并行數據分析庫在不同資源下跨應用程序高效工作。Maddineni[26]等人利用基于SAGA的分布式應用運行環境的中間件框架DARE集成了分布式和高性能基礎設施,其支持動態分配計算資源,具有可擴展性、互操作性、動態執行的特點,現已被應用到多個完全不同領域的科學應用中,促進科學邏輯與高性能和分布式計算基礎資源的快速集成。
科學計算工作流的實現對于科學計算具有重要的意義,目前Kepler[8]、Trident[9]、Pegasus[10]、Taverna[11]、Vistrails[12]等典型的科學工作流管理系統已被廣泛地應用到天文學、物理學、生物信息學、地球科學等領域,它們提供了流程定義與控制、任務管理、作業調度與執行、容錯處理等功能,屏蔽底層資源,實現流程化集成,有效地幫助科學研究人員減少對流程的部署操作等時間花費,專注于具體科學問題的研究,提高求解問題的效率。
科學計算工作流雖然起源于以流程驅動為主的事務型工作流,但事務型工作流和現有的商業型工作流主要面向流程控制、任務管理及文檔處理等方面,可重復性高,而科學計算工作流主要面向數據密集型的科學計算,以數據驅動為主,更關注復雜的數據處理和計算分析,可重復性低。由于科學計算工作流能夠通過定義各個活動調用資源或軟件的方式,有效地建立任務之間的邏輯關系和數據依賴關系,快速實現特定問題的科學計算,因此,科學工作流與高性能計算結合的相關研究不斷增多。汪春杰和曹健[27]認為Kepler等典型科學工作流系統雖然提供了常見的應用活動表示,但是用戶在具體問題的流程建模過程中需要花費大量的時間去熟悉各類活動節點的含義及使用方式,對此,其提出了可擴展性較高的ESW應用集成統一框架,提高了建模工具的易用性。趙勇[28]等人提出將科學工作流系統與高性能計算平臺相結合實現高性能計算平臺上的大規模并行計算,并通過Swift工作流系統和Windows HPC Server集成,用NASA MODIS圖片處理工作流分析并驗證了該集成方案的可行性。Li和Song[29]提出了一個靈活且可擴展的軟件框架,將模擬仿真應用和其他分析應用程序集成,共享組件資源,使端到端延遲最小化,并在復雜的工作流程中提供實時插入分析和可視化功能,將其應用在湍流的異常檢測中。
中國工程物理研究院針對多領域數值模擬軟件的封裝、計算任務的集成、異構資源屏蔽、圖形化交互等問題設計了適用于高性能計算環境的數值模擬工作流管理平臺HSWAP[30],并將其應用在材料、光學、力學等領域,然而其主要針對文件兼任務的松耦合,對于其他數據耦合方式還沒有分析總結。而NNW集成框架系統主要是面向計算流體力學耦合計算和氣動相關問題的模擬,整合相關數據和資源,在工作流的求解器解算過程中調用耦合通信框架,提供完整的計算工具鏈。同時,集成的網格生成軟件提供網格數據前置處理,使其可被正確加載到客戶端頁面進行數據可視化。
此外,基于STEP的集成方法[31]和基于Agent架構的集成方法[32]也被應用于異構環境下的軟件集成和數據交換等問題的解決,但其在擴展性方面還有所欠缺。
針對氣動數值模擬工程對科學計算和仿真與設計集成的需求,本文結合上述三種方法設計了面向計算流體力學耦合計算和氣動相關問題模擬的NNW集成框架系統,在研究軟件系統體系結構、集成方法、工作流管理、數據交換標準以及容錯機制的基礎上,以中間件為框架核心,集成各學科求解器、前置處理和后置處理軟件,整合工作流功能模塊,并提供B/S和C/S兩種交互方式,提高系統的可用性。
集成框架系統主要分為表現層、業務層、資源層,表現層為業務操作的入口,用戶可以通過C/S或B/S的模式與整個平臺進行交互。表現層為用戶提供了工作流建模、建模引擎管理、計算任務管理、計算引擎管理、統計查詢功能。業務層作為整個分布式交互軟件的橋梁和神經系統,整合資源層提供各項服務,處理表現層的服務請求,提供輔助功能;業務層的核心為中間件,集成了各款軟件,并整合了工作流引擎、作業調度、負載均衡、組件管理等核心功能。資源層為所有的計算任務提供計算平臺,對于計算過程中產生的中間文檔和整個計算過程進行統一的管理。整個系統的體系結構如圖1所示。資源層和業務層及表現層之間的請求服務過程如圖2所示,主要以客戶端和服務端交互的形式表現出來。

圖1 集成框架系統體系結構

圖2 請求服務過程
由于各種數值模擬軟件存在串行和并行計算方式的差異、周期長短的計算差異、輸入/輸出格式差異、單一運行進程和多學科耦合計算的差異以及不同運行環境的差異,同時為了便于工作流引擎對各軟件進行流程化管理,通過統一封裝和制定接口規范將各計算軟件、參數文件、材料庫以組件化形式進行封裝集成,并通過環境適配實現各種組件對不同計算機軟硬件環境的兼容性。
軟件組件化集成的一般過程如圖3 所示。主要分為封裝信息抽取過程和組件封裝過程兩個步驟,其中抽取過程是提取計算軟件差異化信息的過程,封裝過程是平臺根據抽取的軟件差異化信息,利用各種軟硬件適配器完成軟件組件化封裝的過程。

圖3 組件化封裝基本流程
在NNW集成框架系統中,設計了工作流計算引擎對用戶提交的工作流計算任務進行管理,并對工作流計算任務要占用的計算資源、條件限制、計算時間等進行分析,通過過程集成的方式實現計算集成、分析集成、數據集成。工作流計算引擎主要分為四個子模塊,分別是工作流計算任務管理器、容錯管理器、工作流計算任務調度器、高性能計算系統接口,其架構如圖4所示。

圖4 工作流引擎架構
在用戶創建工作流模型后,將其提交到中間件工作流引擎中的工作流計算任務管理器中,由于高性能計算系統不能直接識別工作流模型,需要將其解析成具體的工作流計算任務并決定計算任務的執行順序,再將其提交到高性能計算平臺,由Slurm等作業調度系統調度具體物理資源并執行計算。
在工作流計算任務被提交后,工作流計算任務調度器根據動態集成的不同超算系統的作業調度方法,調整作業執行順序,并實時監控任務隊列、計算資源狀態、統計數據文件,持續調整和優化各個計算任務的執行順序。當任務執行失敗時,及時對失敗任務進行恢復計算,檢測其出現的異常類型,將發生的異常記錄到日志信息中進行輸出,并通知給任務提交者,具體的工作流實例執行過程如圖5所示。

圖5 工作流執行邏輯流程圖
在計算求解程序前,往往需要對配套的網格參數文件進行前處理并將其可視化。NNW集成框架系統通過調用網格處理軟件的接口,將網格文件進行前處理。而可視化部分,考慮到大多數結構網格和非結構網格文件較大,直接進行文件傳輸將其顯示到頁面上容易使I/O消耗大,交換時間長,造成系統的可讀性下降。因此,在實現過程中采用了基于內存拷貝的方式來加載數據文件,并將常見的數據交換方式寫至接口中并隔離到數據底層,讀寫數據時使用統一的數據接口,以此來減少消耗時間,增強系統的可讀性和可擴展性。
集成框架中調度類型分為任務調度和作業調度,任務調度是針對工作流層次而言,作業調度則用于表示工作流中的計算任務。每個工作流模型被解析為一個任務圖,如圖6所示,圖中的每一個節點對應為一個計算模型,圖中的邊則表示為任務之間的依賴關系,即計算任務A執行結束后才能執行計算任務B,若要執行計算任務D,則需要計算任務B、C、G均執行結束才能開始。

圖6 有向無環圖(DAG)
在集成框架中,每位用戶所提交的工作流計算任務都會被解析為圖6所示的DAG圖,并通過任務調度模塊將其提交給高性能計算平臺。當只有一個工作流計算任務在執行時,調度較為簡單,按計算任務間依賴關系調度即可。而當平臺中同時有多個工作流計算任務在執行時,即同時處理多個DAG,調度模塊則需要根據計算資源的占用情況以及平臺中全局的計算任務隊列情況,按既定優化目標以及調度策略進行計算,例如,優先保證先提交的工作流計算任務完成、優先保證高性能計算資源的整體利用率等,以此來確定工作流和計算任務的調度序列。
工作流任務調度問題是典型的NP-hard問題,從算法效率和效果兩方面綜合考慮,采用列表啟發式算法應用于該集成框架下的項目場景。列表啟發式算法主要由任務優先級排序和計算資源的選擇這兩步組成,兩個步驟中采取不同的策略,形成不同的調度算法。根據任務優先級對任務進行排序時,需要先通過任務的相關屬性來確定任務的優先級,如表1所示。

表1 計算任務優先級排序的屬性

pred(ti)={tj∈T,eji∈E}
(4)
succ(ti)={tj∈T,eij∈E}
(5)
而C表示通信開銷集合,可描述為C={ci,j},則任務ti的上行權重可以表示為:

(6)
代表著該任務到終點任務的關鍵路徑長度。下行權重表示為:
(7)

上行權重值越大任務優先級越高,因此,可根據上行權重值對要執行的計算任務排序,優先執行級別高的任務。計算資源的選擇采用基于插入策略的最早完成時間優先原則,在空閑的時間段上插入滿足調度條件的任務,有效利用計算資源。
由于CFD相關問題的求解常常涉及多個參數且求解過程復雜,使用命令行的方式去執行任務計算對于用戶而言并不友好,而基于Web的方式在圖形化界面上設置任務計算需要的參數雖然可行,但當多個任務執行計算并進行調度時,網格文件、包含邊界條件的文件和其他控制參數被加載,調度資源將在Web頁面頻繁的換入換出,容易導致程序的性能表現變差,因此,對于驅動整個流程的執行并不適用。
故通過實現客戶端應用程序,在客戶端的圖形化交互界面上拖拽圖形組件生成工作流流程圖,雙擊組件即可進入新的界面來設置求解器相關參數,以耦合計算為例,具體的執行流程如圖7所示。

圖7 基于工作流模型的驅動流程
其中,具體的作業提交及作業信息入庫過程如圖8所示。在客戶端發起啟動解算器的操作后,由工作流計算引擎向集群提交作業,并獲取作業信息,為每個作業生成一個對應的hvJobInfo對象用于記錄作業的狀態信息。之后,工作流計算引擎將作業信息對象提交數據管理模塊,由其將作業信息寫入數據庫。

圖8 作業處理流程
實際的客戶端操作界面如圖9所示。在驗證工作流模型的完整性和邏輯正確性以及接口一致性之后,客戶端為其生成xml格式的工作流描述文件,通過面向服務的中間件連接客戶端,解析xml文件中的節點信息、節點間連線信息、參數設置信息等,加載需要的網格文件,將其提交到高性能計算平臺執行任務計算,并將獲取的作業信息寫入到數據庫中,反饋給客戶端來監控任務的執行狀態和執行時間等信息。

圖9 工作流模型在客戶端的界面實現

圖10 計算結果示例
此外,對于無依賴關系的單個可執行程序類的計算作業,用戶使用相關命令提交到高性能計算平臺執行計算后,無需實時關注作業在計算平臺的執行情況。中間件通過與資源層的交互實時查詢已提交的作業信息狀態,并將獲取的結果顯示在Web界面上便于用戶查詢,如圖11所示。

圖11 Web端查詢作業隊列信息
為了評估該系統流程集成的有效性,我們分別對短作業任務與長作業任務進行手動執行計算和工作流驅動執行計算,并對其耗費的時間進行了對比,如圖12和圖13所示。

圖12 短作業任務的兩種執行方式耗時對比

圖13 長作業任務的兩種執行方式耗時對比
在該評估試驗中,task分為作業級任務和工作流級任務,我們定義執行時間小于120 min的task為短作業任務,大于120 min為長作業任務。首先對8個執行不同CFD計算的短作業任務的兩種執行方式進行分析,在圖12中,task1和task5是作業級任務,其余task均為工作流級任務。從圖中可以看出,task1、task3和task5的兩種執行方式耗費的時間較為接近,其余task的所有短作業依次執行的時間總和都要大于工作流驅動作業執行的時間。
在圖13中,我們對4個包含多個長作業且執行并行計算的工作流級任務進行了兩種執行方式的耗時對比,從數據結果中可以看出,以工作流驅動作業執行的任務耗時明顯比依次執行任務中的作業的總耗時要少。從圖中的實驗數據和實際的操作過程來看,手動實現任務的多個作業執行操作較為繁復,操作者需要間隔地查看任務是否計算完成以及當前計算資源是否充足以支持計算,且不同操作者操作的熟練程度不同,容易導致操作時間存在一定的差異。而以工作流的方式驅動作業執行能夠實現流程的自動化執行,保證了流程集成的有效性,減少了某些人工操作的耗時,使操作人員更專注于問題的解決而不是流程的執行過程。
為了提高研究人員的工作效率和軟件的實用性,為氣動相關問題的求解計算程序提供配套的前后處理平臺,將前處理軟件、求解計算程序、后處理軟件集成于統一的集成環境,提供便于科學問題求解的科學計算環境,設計并實現了面向計算流體力學耦合計算和氣動相關問題數值模擬的NNW集成框架系統,提供了基于工作流及數據交換中間件的科學計算流程組裝及流轉控制功能、在高性能計算平臺上自動化部署及任務調度的功能、數據文件管理和圖形化交互等功能,目前已將其應用在CFD流場計算、熱計算、力學計算等問題上。但對于工作流層次的調度方法,暫時還沒有對其進行深入研究。后續工作將在該系統的基礎上,研究如何最大化發揮高性能計算平臺并行計算的能力。