?

一種在仿真工具軟件內直接調度計算資源的方法

2020-01-03 10:10任靜
現代信息科技 2020年16期

摘? 要:仿真工具軟件不具備計算資源的調度能力,在高性能計算系統上進行仿真,必須在設計完成后,先保存模型,然后到調度軟件上申請計算資源,仿真與設計過程相對分離,過程重復。通過研究MPI并行計算原理及調度軟件調度原理,以常用電磁仿真工具軟件FEKO為例,研究其并行計算的模式,在FEKO與高性能計算系統調度軟件之間,增加一個中間過程,實現在該軟件內對計算資源的直接調度。結果表明,可以做到在仿真工具軟件內對計算資源直接調度。

關鍵詞:高性能計算;仿真工具;資源調度;FEKO

中圖分類號:TP311.5? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)16-0016-04

A Method of Scheduling Computing Resources Directly in Simulation Software

REN Jing

(The 29th Research Institute of China Electronics Technology Group Corporation,Chengdu? 610036,China)

Abstract:The simulation software does not have the ability of scheduling computing resources. In the simulation of high-performance computing system,the model must be saved after the design is completed,and then switch to the scheduling software interface to apply for computing resources. The process of simulation and design is relatively separated,and the process is repeated. By studying MPI parallel computing principle and scheduling principle of scheduling software,taking the commonly used electromagnetic simulation software FEKO as an example,its parallel computing mode is studied. An intermediate process is added between FEKO and high performance computing system scheduling software to realize the direct scheduling of high performance computing system resources in the tool software. The results show that the system resources can be directly scheduled in the simulation software.

Keywords:HPC;simulation tools;scheduling resources;FEKO

0? 引? 言

高性能計算(HPC)是指利用大量處理單元的聚合能力來解決復雜問題。隨著集群技術的成熟,高性能計算的成本不斷下降,催生了建立在并行計算基礎之上的大型仿真設計等應用。在高性能計算系統上進行仿真設計,比在單臺計算機上仿真設計,不僅能提升數十、數百倍的精度和規模,還獲得數十、數百倍的仿真求解速度。

但是,在高性能計算系統上進行仿真設計存在一個缺點:用戶感覺到不如在單臺計算機上操作便捷。區別在于:用戶在單臺計算機上設計仿真時,全部工作在工具軟件內完成,即在工具軟件內完成設計建模后,直接在軟件界面上點擊“求解”命令鍵,即可啟動仿真計算;而在高性能計算系統上,需要用戶設計好模型后,先保存起來,然后切換到調度軟件界面上申請計算資源,才能進行計算。這造成設計與仿真工作的相對分離,過程重復,導致效率降低,與高性能計算系統仿真設計一體化的發展趨勢相背離,是高性能計算系統向科研生產一線推廣應用過程中,急需優化的問題之一。產生這個問題的根源在于,仿真工具軟件本身不是調度軟件,不掌握高性能計算系統中計算資源情況,包括服務器名稱、CPU核的數量、忙閑狀態等。在其軟件內發出起計算資源調度,必然造成多用戶、多作業計算資源沖突,計算效率低下,甚至系統崩潰。

本文先是研究了通用MPI并行計算原理,及高性能計算系統中調度軟件對計算資源調度的原理。然后以常用的電磁仿真工具軟件FEKO為對象,找出FEKO軟件與并行計算相關的所有進程,研究其資源申請、調度的內部邏輯。緊接著,設計了一種在FEKO軟件內直接調度計算資源的方法:在FEKO的并行計算相關腳本程序和調度管理軟件之間,增加一個中間過程,實現了在FEKO軟件內,對高性能計算系統計算資源進行申請,并將申請傳遞給調度軟件,由調度軟件統一調度資源,效果與通過調度軟件申請計算資源完全一致。結果表明,在仿真工具軟件內直接調度計算資源完全可行,大大優化了高性能計算系統的使用。目前,該研究成果已經在本文作者所在科研院所的高性能計算系統上成功應用。

1? MPI并行計算

并行計算(Parallel Computing)是指同時使用多個計算單元進行計算。即將被求解的問題分解成若干個部分,各部分均由一個獨立的處理單元來計算。目的是加快求解問題的速度,提升求解問題的規模。由于程序的各部分之間需要通過來回傳遞消息的方式通信,要使得消息傳遞方式可移植,就必須采用標準的消息傳遞庫。

當前,被廣泛采用的消息傳遞標準是消息傳遞接口(Message Passing Interface,MPI),它是一種基于消息傳遞的跨語言的并行編程技術,支持點對點通信和廣播通信。MPI是一種編程接口標準,它定義了一組接口函數,使應用程序可以將消息從一個MPI進程送到另一個MPI進程。各個廠商或組織遵循這些標準實現自己的MPI軟件包(如鏈接庫等形式),程序員僅需設計好并行算法,使用對應的MPI庫就能夠實現基于消息傳遞的并行計算。

Open MPI是一種高性能消息傳遞庫,其中有一個常用進程分配參數(--machinefile),在多機環境中,運行程序前先創建一個machinefile文件,其中列出要使用的節點名和每個節點所用核數(本文中稱為“機器與核數配比清單”),然后用mpirun命令在指定的節點上運行程序。

2? 高性能計算系統調度軟件調度原理

高性能計算系統擁有大規模的并行計算資源,是提供并行計算的強大工具。在高性能計算系統中,由調度軟件將分散的、通過網絡連接的多臺計算機的計算資源整合為整體的計算資源池,根據用戶申請,遵循一定的策略,進行調度管理。調度軟件調度資源時,會將空閑的資源分配給需要的作業;資源不足時,會依照策略進行排隊或優先處理,從而不會出現計算資源的搶占、沖突,實現資源共享與效能提升。

調度軟件對于計算資源分配的機制,主要是按照MPI并行的進程分配機制執行的。由于MPI進程在CPU核單元上計算效率最高,因此,調度軟件對資源的管理和調度是以CPU核為單位的。其邏輯主要為:隨時監控系統中CPU核的狀態,根據仿真作業對于CPU核數(等于作業進程數,本文中稱為“總核數(進程數)”)的需求,從所有空閑CPU核中分配相應數量的CPU核。這些CPU核有可能分散在不同的計算機中,例如,對于24核的需求,可能在機器A中分配了8核,在機器B中分配了16核。于是就產生了配比清單:

機器A:8

機器B:16

調度軟件將配比清單與MPI并行程序的進程分配參數(--machinefile)相對應,啟動MPI并行程序:在機器A上啟動8個執行并行進程,每個并行進程占據1個CPU核;在機器B上啟動16個并行進程,每個并行進程占據1個CPU核。于是,對于調度軟件來說,總計24個計算資源,就精準的分配給了仿真作業的24個并行進程。

3? FEKO作業的并行計算機制

3.1? FEKO軟件啟動并行計算的兩種方法

FEKO作為電磁領域常用的仿真軟件,采用通用的MPI并行計算機制。本文作者研究了FEKO提供的兩種常用的啟動并發計算的方法:

方法一:FEKO軟件界面上有一個“Solver/Run”按鍵,在其彈出界面上,用戶可配置所需核數及機器名,如圖1所示。

當用戶完成配置后,點擊“OK”,FEKO軟件將觸發求解命令,在配置的計算資源上進行求解。

圖1的配置界面只能用于用戶在單臺計算機上仿真的資源申請,此種情況下,用戶清楚自己所使用的機器的名稱。即便在單臺計算機上,這樣的資源調度也是不安全的,因為用戶可能申請超過該機空閑核數的資源,可能造成計算停頓甚至崩潰。

在多用戶共享使用的高性能計算系統中,這樣的申請操作則完全不可行:用戶不清楚集群中空閑機器的名稱、核數,在多作業排隊使用資源時,用戶更不可能清楚哪些資源可以最快釋放出來供計算使用。針對系統顯示的空閑機器及核數進行配置,如果多人配置了相同的機器,會造成資源爭搶和沖突。由用戶配置申請計算資源,而未通過任何統一的資源管理與分配系統,不能避免多用戶、多作業的資源爭搶與沖突。因此,傳統的高性能計算系統不允許用戶在FEKO軟件內直接向高性能計算系統提交作業、申請計算資源。

方法二:在命令行模式下,FEKO軟件提供了并行計算的命令接口(Command Line)runfeko。接口格式:

runfeko算例文件 --machines-file 機器與核數配比清單- np總核數(進程數)

其中“總核數(進程數)”為需求的總的核數(進程數),也是“機器與核數配比清單”中各機器所分配核數的總和。

FEKO利用這個接口,完成在命令行模式下對計算資源的申請,并在所申請的計算資源上啟動計算。但是,這也是不考慮計算資源的忙閑狀態,與方法一實際上是同一邏輯原理不同形式的方法。因而也是高性能計算系統禁止使用的。

在對使用FEKO提供的仿真計算的兩種常用方法的研究中,發現無論是方法一或者方法二,FEKO都只是在對自身作業的并行進程進行劃分、觸發計算,而不是對計算資源進行安全合理的調度。在多用戶共享的高性能計算環境中,唯有調度軟件掌握著集群中所有機器的名稱、核數,持續收集資源使用情況,避免資源爭搶和沖突,實現負載均衡。因此要實現在FEKO軟件內向高性能計算系統提交作業、申請計算資源,需要將FEKO軟件中申請的計算資源信息傳導給調度軟件,由調度軟件完成調度工作。

3.2? FEKO并行計算內部算法

分析FEKO并行計算的接口,本文作者發現FEKO并行計算遵循Open MPI的接口規范:采用--machines-file和-np參數,同時接口的格式要求也一致。而高性能計算系統調度軟件作為支持MPI并行計算的通用軟件,也建立兩個重要輸出:--machinefile 機器與核數配比清單和-np 總核數(進程數),內容與MPI接口的同名參數相對應。

再對FEKO并行計算的真實進程進行進一步的分析。如圖2所示,運行Pstree -ua sysadmin命令,可以查看FEKO并行計算有關進程樹,其中含有很多進程,例如:runfeko、adaptfeko、feko_parallel、feko_parallel_r、mpirun。研究其中的相互關系,追蹤FEKO并行計算中所申請的計算資源參數的傳遞方式。

分析發現,FEKO在并行計算的時候,會調用一個腳本文件run_feko。run_feko中調用了FEKO的計算接口runfeko,在執行的時候會傳遞類似于機器與核數配比清單和總核數(進程數)的參數,而這些參數值的來源則來自前文中,用戶在FEKO界面中設置的并行機器和核數。然后runfeko將這些參數轉化為并行的進程數,在相應的節點上開展并行計算。

4? 增加中間過程實現FEKO軟件內對計算資源的直接調度

通過上述分析,確定了FEKO并行計算時,利用run_feko執行腳本對用戶申請的計算資源進行采集。本文作者以run_feko腳本作為橋梁,創建中間過程,將FEKO軟件原始的并行資源創建與傳遞過程與高性能計算系統的調度過程結合起來,在FEKO并行計算時所需的計算資源置換為調度軟件分配的資源,使得FEKO作業的并行計算采用調度軟件所分配的資源進行,解決多用戶手動指定計算資源造成的計算資源的沖突問題。

具體實現方法為:

將FEKO軟件原始的run_feko腳本進行重載,原腳本實現的是獲取用戶在FEKO軟件界面內配置的計算資源,新的腳本實現將獲取到的計算資源傳遞給調度軟件,并通過調度軟件來分配計算資源。步驟為:

(1)編輯run_feko腳本文件,獲得FEKO軟件界面內配置的總核數(進程數),并將核數轉換為通過調度軟件生成的機器與核數配比清單。

np=`awk -F\= '$1=="NumberOfParallelProcesses"{print $2}' feko.ini`

上述語句用以獲得單節點并行的核數設置,其中np是總核數(進程數)。

np=`awk -F\: 'BEGIN{a=0}{a+=$2}END{print a}' machines.feko`

上述語句用以獲得多節點并行的核數設置,其中np是總核數(進程數)。

(2)執行命令:jsub -q feko_queue -n $np $*,將用戶在FEKO軟件內配置的總核數(進程數)轉換為調度軟件分配的核數,并啟動計算。其中,jsub是仿真作業提交命令,feko_queue是feko調度隊列,$np是從上文中獲得的總核數(進程數),$*是FEKO仿真求解算例及參數。

(3)在調度軟件中創建一個新的FEKO作業求解腳本run_feko_orig,將調度軟件分配的機器與核數配比清單和總核數(進程數)作為參數通過FEKO作業求解腳本回傳FEKO的Solver命令中,驅動FEKO利用調度軟件分配的資源進行仿真求解:

run_feko_orig $1 --run-from-gui -np $np --machines-file $hostfile

該命令將調度軟件分配的資源回傳FEKO的Solver命令中,驅動FEKO利用調度軟件分配的資源進行仿真求解。其中run_feko_orig是FEKO求解腳本,包含FEKO的Solver命令;$1是FEKO仿真求解算例及參數;$np是調度軟件分配的總核數(進程數);$hostfile是調度軟件分配的機器與核數配比清單。

通過測試,上述腳本運行后,調用FEKO的Solver命令,利用用戶在FEKO軟件界面上配置的計算資源數創建Solver進程,但是實際按照調度軟件的機器與核數配比清單分配,實現了在FEKO軟件內申請計算資源,借調度軟件提交作業、申請計算資源,按照調度軟件的統一調度策略完成FEKO并行計算的資源分配,并在集群模式下完成仿真計算的目標。

5? 結? 論

本研究實現了在FEKO軟件內直接調度計算資源,啟動并行計算,使得高性能計算系統上實現仿真和設計一體化,簡化了工作過程。本文作者所使用的方法,是通過對并行計算和調度原理的研究,在調度軟件和工具軟件之間增加一個中間過程,實現工具軟件內的參數向調度軟件的傳遞。由于支持高性能計算的仿真工具軟件均遵循MPI標準,調度軟件具有通用性,所以對于在其他仿真工具軟件內直接調度高性能計算系統上的計算資源的方法的實現,具有普適性。但本文中的原代碼及命令是以FEKO為例,并非所有仿真軟件都可以直接套用。某特定的工具軟件,還需依照本文的思路,研究其并行進程的命令接口、參數,并做類似重載,以實現文中提到的直接調度功能。

參考文獻:

[1] SPI.mpirun(1)man page (version 4.0.5) [EB/OL].[2020-05-30].https://www.open-mpi.org/doc/v4.0/man1/mpirun.1.php.

[2] 臥龍小三.實戰Linux Shell編程與服務器管理 [M].北京:電子工業出版社,2010.

[3] tomctx.并行計算與MPI [EB/OL].(2019-06-01).https: //blog.csdn.net/tomjchan/article/details/90730497.

作者簡介:任靜(1974.05—),女,漢族,四川夾江人,工程師,工程碩士,研究方向:高性能計算及人工智能。

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合