曹國海 蘆 韡 張堯毅 張思原 龐 勃 王雅峰
(中國核動力研究設計院核反應堆系統設計技術重點實驗室,四川 成都610213)
近年來,國際上針對高分辨、高精度的數值反應堆數值計算技術開展了大規模研究。通過精細的建模、先進的理論模型,顯著提升了反應堆數值計算的精度水平,以期為提高反應堆安全性和經濟性提供先進的技術支持,隨著我國超級計算機的快速發展,目前已達到億億次水平,為我國反應堆的高分辨率數值計算提供了硬件支持,為核能領域大規模數值計算與HPC相互結合奠定了基礎。而不同的計算軟件運行特點不同,對各類計算資源的需求也各異。高性能計算服務器為眾多的計算軟件提供了共享的運行環境,如果對計算任務不進行有針對性地執行調度,一方面不能充分發揮計算軟件的并行計算效率;另一方面也會因為軟件間不合理的搶占資源沖突而大大降低高性能計算資源的利用率,從而進一步降低計算軟件的計算效率。
本文針對反應堆一回路系統研發所涉及的物理、熱工、燃料、屏蔽等專業典型計算軟件從并行執行情況、執行所需CPU以及內存資源、作業類型、耗時情況等運行特征進行了分析;研究了核反應堆計算軟件并行計算特征提取及表達方法,根據軟件運行特性建立了計算資源全局統籌的并行執行調度方法,該方法包括資源監控器、調度策略庫及并行執行調度模塊;資源監控器用于實時獲取當前集群系統的各類計算節點、核數、內存資源利用情況;調度策略庫對各種差異化的執行調度策略集合及規則進行集中管理,需預先設置完成;調度策略庫采用基于“IFTHEN”的規則描述方面,每條調度策略包括了IF部分、THEN部分兩個元素,其中IF部分是前項(前提或條件),常對專業軟件類型、資源大小、計算耗時長短等信息進行描述,THEN部分是后項結論或行為,常對計算任務的分區、計算優先級、是否獨占計算節點等內容進行描述;自適應并行執行調度模塊根據軟件的并行特征,實施并行計算。通過并行執行調度方法,使得超算下計算任務能有序合理地調度,能極大地提升核反應堆計算軟件并行運行效率與高性能計算資源的利用率,一定限度上提高反應堆設計研發效率。
針對核反應堆一回路研發中涉及的物理、熱工、燃料、屏蔽這4個專業中的典型軟件對其具體運行特征進行了分析,下文將針對運行環境、并行執行情況、執行所需資源、作業類型幾方面對進行對比,內容見表1。
通過表1可知,軟件分為支持并行和不支持并行兩類。作業類型分為CPU密集型和I/O密級型,對執行資源的需求主要是核數和內存上,調度系統應針對軟件支持并行和不支持并行,結合CPU核數和內存需求,適應性地分配計算節點和核數,針對I/O密級型和CPU密集型,綜合考慮,建立高效的調度策略,合理設定任務執行優先級,使得不同的任務運行時間都能滿足用戶的需求。基于現有超算資源,研究先進的調度系統,優化現有軟件運行效率,能為工作效率的提高提供相應的技術支持。

表1 典型軟件運行特點對比
數值計算協同設計需要集成多個學科的計算設計軟件,不同的計算軟件運行特點不同,所需的計算資源也不同,為了更好地利用計算資源,讓各個軟件的計算效率得到充分發揮,需要根據軟件運行特征和高性能計算資源建立并行調度策略,實現高性能集群系統的計算任務負載均衡,下文將從作業類型、支持并行情況、運行耗時情況、內存需求等方面綜合考慮建立策略庫,具體敘述如下。
在策略庫設計時,首先根據作業運行時內存需求和耗時情況進行分類,然后建立隊列,將不同類作業存放到不同隊列中,詳細情況如圖1所示。

圖1 作業的初步分類
從圖1可知,首先將作業根據耗時情況分為兩類:一類主是運行耗時達月級及以上的作業,存放到隊列L中;另一類是運行耗時在月級以下的作業,存放到隊列M,同時分別在隊列M和隊列L中針對作業運行時內存占用情況,進一步細分,G1、G2隊列主要運行內存占用G級及以上的作業,G1’、G2’隊列運行內存占用G級以下的作業。
根據作業耗時和運行時內存占用情況將作業進行分類后,還需考慮作業的類型,針對CPU密集型和I/O密級型設定不同的優先級,本文考慮I/O密集型需要頻繁I/O,對CPU利用率不高的問題,在CPU密級型和I/O密集型同時競爭調度資源時,采用改進型時間片輪轉法,具體描述如圖2所示。

圖2 作業運行優先級的確定
從圖2所知,當遍歷圖1中隊列中任務,確定優先級時,首先判斷隊列中作業類型,如果只有一種類型,則采用先來先服務算法,判斷隊列中作業到來時間,將最早到來的作業C1優先級設定為最高;如果隊列中作業同時包含CPU密集型和I/O密集型,則執行改進型時間片輪轉算法,將到來的I/O密集型作業的時間片加1,CPU密集型作業的時間片不變,判斷I/O密集型作業時間片數量大于2時,將此作業的優先級設定為最高,如隊列中沒有時間片數量大于2的I/O密集型作業,則采用先來先服務遍歷CPU密集型作業,將最先到來的CPU密級型作業的優先級設定為最高。
根據圖2所示確定最高優先級作業后,需判斷作業支持并行的情況,針對支持并行的作業可按實際情況分配多個節點,多個核供作業計算使用。
數值計算協同設計并行調度功能模塊的總體技術方案如圖3所示。

圖3 數值計算協同設計系統并行調度總體技術方案
設計用戶基于集成平臺構建計算流程,對流程中的每個計算任務可進行建模、計算、等操作;上述的執行操作會被構建成一個個的計算任務包,計算任務包主要是將任務的計算程序信息、所需資源等計算信息進行封包,投遞到高性能計算服務器上進行計算。
并行調度功能模塊中的“任務隊列”是一個分布式的消息隊列的實現,它主要用于存放任務包,以排隊的方式等待獲取資源進行執行,而不是全部任務同時進行爭搶資源,任務隊列根據上文策略庫中調整策略進行調度;“任務監控”是建立在任務隊列基礎上的一個界面系統,可以通過它查看隊列里的任務數量、等待狀況、執行情況,并且可以取消任務和查看任務輸出日志,支持命令行和界面操作,同時,對任務執行的關鍵環節(如完成或取消終止)可以發出事件響應;“任務調度器”需要與“調度策略庫”配合使用,其中,調度器是一個一直運行并輪詢檢測是否執行任務并有足夠的資源運行。它會判斷任務隊列和資源信息兩個條件都滿足的情況下,獲取任務隊列中的任務包發送到HPC節點上進行運行。
為了自動化實現上述過程,根據任務不同狀態設計了6個符合計算任務隊列,分別對應等待隊列、就緒隊列、調度隊列、運行隊列、錯誤退出隊列、正常完成隊列;此外,每個隊列都對應著一個監控工作線程,監控工作線程的主要職責是負責根據計算實例狀態的變化,實時地完成計算實例在不同隊列之間進行轉移。
執行調度功能模塊包括了計算執行管理、計算實例并行管理、計算組并行管理3個功能子模塊,詳見表2;提供了計算、計算組、項目3種不同粒度的并行執行,粒度最小的計算執行管理模塊是實現執行調度的基礎與核心。

表2 執行調度功能模塊子模塊
其核心算法主要實現了調度隊列監控線程、運行隊列監控線程、等待隊列監控線程、完成隊列監控線程等,設計人員提交執行任務后,系統自動地分析用戶提交的計算節點運行狀態,并將其保存到不同調度隊列中,執行調度器獲取各隊列的任務,按照相應流程調度執行,設計人員不用關注任務調度的細節,執行調度器算法實現流程如圖4所示。

圖4 執行調度器算法
本文研究了核反應堆一回路研發所涉及的物理、熱工、燃料、屏蔽專業典型計算軟件運行特點,針對不同軟件運行特點完成了策略庫的設計,并研制了數值計算協同設計系統執行調度模塊,通過該模塊實現了超算下計算任務有序合理的調度,能極大地提升核反應堆計算軟件并行運行效率與高性能計算資源的利用率。