本發(fā)明涉及仿真
技術領域:
:,尤其涉及一種用于計算流體力學(computationalfluiddynamics,cfd)仿真計算的異構集群系統(tǒng)及cfd計算方法。
背景技術:
::計算流體力學(computationalfluiddynamics,cfd)是使用計算機和離散化的數值方法對流體力學問題進行數值模擬和分析的科學技術,是流體力學當代新興的一個分支學科。隨著計算技術與計算機技術的迅猛發(fā)展,cfd技術已經應用到國民生產的各個方面,尤其是在航空航天、汽車、船舶、水利等領域應用十分廣泛,是工程應用和產品設計中非常重要的輔助工具。工業(yè)仿真技術作為工業(yè)生產和制造中必不可少的首要環(huán)節(jié),已經被廣泛地應用到工業(yè)各個領域中。隨著智能制造、工業(yè)4.0和工業(yè)互聯網等新一輪工業(yè)革命的興起,工業(yè)仿真的需求日益強烈,工程師與設計師們對仿真的精密度要求也越來越高,這對cfd仿真的效率和性能提出了更高的要求。目前,cfd應用普遍運行在基于x86架構的因特爾(intel)中央處理器(centralprocessingunit,cpu)上,而cpu雖然功能強大,可以完成大部分計算任務,但是其浮點計算能力受到摩爾定律的限制,計算速度較慢,進而耽誤研發(fā)進程,導致cfd應用的運行效率低下,無法滿足工業(yè)仿真的要求。技術實現要素:本發(fā)明提供了一種用于cfd仿真計算的異構集群系統(tǒng)及cfd計算方法,通過構建包括cpu及硬件加速器在內的集成平臺,根據任務屬性智能化地分配計算任務,解決了目前cfd仿真的運算能力瓶頸問題,提高了cfd應用的運行效率。本發(fā)明實施例提供了一種用于計算流體力學(cfd)仿真計算的異構集群系統(tǒng),所述系統(tǒng)包括中央處理器(cpu)和硬件加速器,其中:所述cpu,用于將接收到的cfd任務劃分為任務塊,根據cfd任務的屬性、cfd邊界條件以及所述硬件加速器的性能參數確定計算所述任務塊的硬件加速器,并將所述任務塊發(fā)送給所述硬件加速器;所述硬件加速器,用于接收并計算所述cpu發(fā)送的任務塊,并將計算結果發(fā)送給所述cpu。本發(fā)明實施例另外一個方案中,所述cpu和所述硬件加速器集成設置,所述硬件加速器包括至少一個圖形處理器(gpu)和/或至少一個現場可編程門陣列(fpga)。本發(fā)明實施例另外一個方案中,所述cfd任務的屬性包括優(yōu)先計算性能或者優(yōu)先能耗性能,所述cpu根據所述cfd任務的屬性使用局部貪心算法為所述任務塊調用硬件加速器進行計算。本發(fā)明實施例另外一個方案中,所述根據cfd任務的屬性、cfd邊界條件以及所述硬件加速器的性能參數確定計算所述任務塊的硬件加速器,具體包括:根據所述cfd邊界條件以及所述任務塊的點、面和網格數量確定所述任務塊的計算量,所述計算量包括計算所述任務塊的時間和/或能耗;根據所述cfd任務的屬性、所述任務塊計算量以及所述硬件加速器的性能參數確定計算所述任務塊的硬件加速器。本發(fā)明實施例另外一個方案中,所述cpu接收所述硬件加速器發(fā)送的任務塊計算結果,并將所述任務塊的計算結果合并后發(fā)送給網絡文件系統(tǒng)(nfs)服務器進行存儲。本發(fā)明實施例另外一個方案中,所述cpu還用于向所述nfs服務器獲取cfd前處理工具,并使用所述cfd前處理工具將所述cfd任務劃分為任務塊。本發(fā)明實施例另外一個方案中,所述cpu還用于向所述nfs服務器獲取cfd任務求解應用程序,并將所述cfd任務求解應用程序與所任務塊一并發(fā)送給所述硬件加速器,以使所述硬件加速器根據所述cfd任務求解應用程序對所述任務塊進行計算。本發(fā)明實施例另外一個方案中,所述nfs服務器中存儲所述硬件加速器的性能參數,所述cpu還用于向所述nfs服務器讀取硬件加速器的性能參數,并存儲在所述cpu的內存中。本發(fā)明實施例另外一個方案中,所述cpu包括便攜式批處理系統(tǒng)(pbs)模塊,所述pbs模塊用于實現硬件加速器資源的智能調度和任務分發(fā)邏輯。本發(fā)明實施例還提供了一種使用前述任一用于計算流體力學(cfd)仿真計算的異構集群系統(tǒng)的cfd計算方法,該方法包括:接收cfd任務,并將所述cfd任務劃分為任務塊;根據cfd任務的屬性、cfd邊界條件以及硬件加速器的性能參數為所述任務塊選擇硬件加速器,并將所述任務塊發(fā)送給所述硬件加速器進行計算;接收所述硬件加速器發(fā)送的任務塊計算結果,并將所述計算結果進行合并。本發(fā)明實施例另外一個方案中,所述方法還包括:所述cfd任務的屬性為優(yōu)先計算性能或者優(yōu)先能耗性能,根據所述cfd任務的屬性使用局部貪心算法為所述任務塊調用硬件加速器進行計算。本發(fā)明實施例另外一個方案中,所述根據cfd任務的屬性、cfd邊界條件以及硬件加速器的性能參數為所述任務塊選擇硬件加速器包括:根據所述cfd邊界條件以及所述任務塊的點、面和網格數量確定所述任務塊的計算量,所述計算量包括計算所述任務塊的時間和/或能耗;根據所述cfd任務的屬性、所述任務塊計算量以及所述硬件加速器的性能參數確定計算所述任務塊的硬件加速器。本發(fā)明實施例另外一個方案中,所述方法還包括:從網絡文件系統(tǒng)(nfs)服務器中獲取cfd前處理工具,使用所述cfd前處理工具將所述cfd任務劃分為所述任務塊。本發(fā)明實施例另外一個方案中,所述方法還包括:從所述nfs服務器中獲取所述cfd任務的屬性、所述cfd邊界條件、所述硬件加速器的性能參數,并根據所述cfd任務的屬性、所述cfd邊界條件以及所述硬件加速器的性能參數為所述任務塊選擇硬件加速器。本發(fā)明實施例另外一個方案中,將所述合并后的計算結果發(fā)送所述nfs服務器進行存儲。本發(fā)明實施例另外一個方案中,所述方法還包括:從所述nfs服務器中獲取cfd任務求解應用程序,并將所述cfd求解任務程序與所述任務塊一并發(fā)送給所述硬件加速器,以使所述硬件加速器根據所述cfd任務求解應用程序對所述任務塊進行計算。本發(fā)明實施例另外一個方案中,所述硬件加速器包括至少一個圖形處理器(gpu)和/或至少一個現場可編程門陣列(fpga)。本發(fā)明實施例還提供了一種用于計算流體力學(cfd)仿真計算的異構集群系統(tǒng),所述系統(tǒng)包括存儲器和處理器,其中:所述存儲器,用于存儲代碼;所述處理器,用于執(zhí)行所述存儲器中的代碼,執(zhí)行所述存儲器中的代碼能實施前述計算cfd任務的方法中任一所述的方法步驟。本發(fā)明實施例所提供的用于cfd仿真計算的異構集群系統(tǒng)及計算cfd任務的方法,具有以下有益效果:(1)系統(tǒng)將中央處理器(centralprocessingunit,cpu)、圖形處理器(graphicsprocessingunit,gpu)和現場可編程門陣列(field-programmablegatearray,fpga)集成在一起,根據cpu、gpu和fpga的各自特點與優(yōu)勢,采用便攜式批處理系統(tǒng)(portablebatchsystem,pbs)模塊調度系統(tǒng)根據cfd任務的屬性執(zhí)行不同的調度策略,分配計算任務,并且兼顧gpu和fpga的性能和能耗,提高計算效率;(2)系統(tǒng)利用gpu和fpga強大的運算能力使得cfd性能得到數量級的改進,為用戶減少時間成本以及提高生產效率;(3)在系統(tǒng)中,cpu主要負責cfd任務智能調度以及相關流程的執(zhí)行,絕大部分浮點運算任務分發(fā)給了gpu和fpga,使得業(yè)務邏輯模塊和浮點運算模塊的分離,讓程序計算擁有更強大的拓展性。附圖說明為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例或現有技術描述匯總所需要使用的附圖作簡單介紹,顯而易見地,下面描述的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1a是本發(fā)明實施例所提供用于cfd仿真計算的異構集群系統(tǒng)的第一結構示意圖;圖1b是本發(fā)明實施例所提供用于cfd仿真計算的異構集群系統(tǒng)的第二結構示意圖;圖2是本發(fā)明實施例所提供cfd計算方法的第一流程圖。具體實施方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。實施例一:本發(fā)明實施例提供了一種用于cfd仿真計算的異構集群系統(tǒng),如圖1a、圖1b所示,包括中央處理器(centralprocessingunit,cpu)1和硬件加速器2,其中硬件加速器2和cpu1可以集成設置;硬件加速器2可以包括至少一個圖形處理器(graphicsprocessingunit,gpu)和/或至少一個現場可編程門陣列(field-programmablegatearray,fpga)。在本發(fā)明實施例中,作為硬件加速器的gpu擁有強大的批處理運算能力、良好的運算性能和處理龐大的運算量的能力,能快速地處理復雜的運算任務;作為硬件加速器的fpga在絕對計算性能上雖然不如gpu,但是具有低能耗的優(yōu)點。在本發(fā)明實施例中,由于gpu和fpga在浮點運算性能方面都要遠勝于cpu,因此cpu可以作為邏輯處理單元,僅負責業(yè)務的邏輯處理,而不負責具體的計算任務,而gpu和fpga則作為具體的計算單元,處理具體復雜的計算任務,能大幅提升cfd的運算效率。在本發(fā)明實施例中,cpu具體負責任務計算中的邏輯處理功能,因此可在cpu上集成便攜式批處理系統(tǒng)(portablebatchsystem,pbs)模塊(例如在cpu上燒入pbs軟件程序),pbs模塊可以看做是一個進行批處理作業(yè)和計算機系統(tǒng)資源管理的軟件包,可以協助cpu調度硬件加速器的資源。在本發(fā)明實施例一個優(yōu)選的方案中,用于cfd仿真計算的異構集群系統(tǒng)可以看做是基于pbs的一個分支作業(yè)系統(tǒng)torque,從而實現對用于cfd仿真計算的異構集群系統(tǒng)的資源調度。在本發(fā)明實施例中,用于cfd仿真計算的異構集群系統(tǒng)可以基于gpu和fpga的計算特點和優(yōu)勢,以pbs模塊為資源調配系統(tǒng),搭建cpu、gpu和fpga三者于一體的軟硬件平臺,在此平臺上還可以部署多區(qū)結構網格cfd應用軟件,將gpu和fpga這兩種技術引入cfd的運算體系中,構建高性能異構集群系統(tǒng),具體的:cpu作為用于cfd仿真計算的異構集群系統(tǒng)的主處理器,而gpu和fpga則作為加速器;用于cfd仿真計算的異構集群系統(tǒng)的軟硬件資源統(tǒng)一由集成在cpu上的pbs模塊負責調度管理。進一步的,用于cfd仿真計算的異構集群系統(tǒng)還可以包括系統(tǒng)資源服務器4和網絡文件系統(tǒng)(networkfilesystem,nfs)服務器3,其中系統(tǒng)資源服務器4上還可以安裝編譯器、gpu和fpga的驅動以及開發(fā)環(huán)境;在nfs服務器3上還可以設置cfd任務求解應用程序、cfd前處理工具和存儲系統(tǒng)空間,其中cfd求解應用程序用來提供cfd計算公式;cfd前處理工具用來對cfd任務進行網格劃分;存儲系統(tǒng)空間用來存儲網絡文件,例如cfd任務的計算結果文件、硬件加速器的性能參數等。系統(tǒng)資源服務器4和nfs服務器3可以作為獨立的硬件設備設置在網絡系統(tǒng)中,也可以與其他設備進行集成。在本發(fā)明實施例中,不同計算節(jié)點通過infiniband技術連接;計算節(jié)點與pbs模塊智能資源調配器之間也是通過infiniband技術連接;pbs模塊作為主節(jié)點,負責維護計算資源池、以及根據每個運算資源的浮點計算能力實現資源調配。在本發(fā)明實施例中,pbs模塊在執(zhí)行資源調度任務時,邏輯上可以分為pbs主節(jié)點(master)和pbs代理(agent)功能,每個pbs主節(jié)點對應至少一個pbs代理,而每個pbs代理則對應至少一組硬件加速器資源,(至少一個gpu和/或至少一個fpga),pbs主節(jié)點執(zhí)行pbs模塊的主要功能,pbs主節(jié)點通過pbs代理調用硬件加速器資源。在本發(fā)明實施例一個優(yōu)選的方案中,pbs模塊可以根據cfd任務所被劃分的任務塊個數通過pbs代理選擇一組硬件加速器資源進行計算,例如cfd任務被劃分為n個任務塊,則選擇至少包含n個硬件加速器的pbs代理。在另外一個實施例中,pbs模塊也可以通過兩個或者兩個以上的pbs代理調用至少兩組硬件加速器資源來進行計算。在本發(fā)明實施例中,用于cfd仿真計算的異構集群系統(tǒng)包括cpu1和硬件加速器2,其中:所述cpu,用于將cfd任務劃分為任務塊(block),根據所述cfd任務的屬性、cfd邊界條件以及所述硬件加速器的性能參數確定計算所述任務塊的硬件加速器,并將所述任務塊發(fā)送給所述硬件加速器;所述硬件加速器,用于接收并計算所述cpu發(fā)送的任務塊,并將計算結果反饋給所述cpu。在本發(fā)明實施例中,cfd任務是指對指定的模型進行cfd仿真計算,例如對處于風洞中的車輛模型、物體的運動軌跡等。在本發(fā)明實施例中,cfd邊界條件是指cfd任務的具體計算指標,例如各項參數,如時間、速度、溫度、壓強等。在本發(fā)明實施例中,根據所述cfd任務的屬性、cfd邊界條件以及所述硬件加速器的性能參數確定計算所述任務塊的硬件加速器,具體包括:根據所述cfd邊界條件以及所述任務塊的點、面和網格數量確定所述任務塊的計算量,所述計算量包括計算該任務塊所需要的計算和/或能耗;根據所述cfd任務的屬性、所述任務塊計算量以及所述硬件加速器的性能參數確定計算所述任務塊的硬件加速器。在本發(fā)明實施例中,計算任務塊的計算量時還可以參照任務塊的其他幾何屬性,如形狀、面積等。進一步的,還可以參照cfd任務的歷史參數。在本發(fā)明實施例中,所述cpu和所述硬件加速器可以集成設置,所述硬件加速器包括至少一個gpu和/或至少一個fpga。在本發(fā)明實施例中,可以將cfd任務分成兩類,高級別任務以及普通任務,此任務屬性可以由系統(tǒng)設定。對于高級別任務,在算法中會優(yōu)先使用gpu進行計算;對于普通任務,會優(yōu)先使用fpga進行計算。對cfd任務的分類可以有系統(tǒng)預先進行配置。在本發(fā)明實施例中,所述cfd任務的屬性包括優(yōu)先計算性能或者優(yōu)先能耗性能,根據cfd任務的屬性使用調度算法調用硬件加速器進行計算。具體的,若所述cfd任務的屬性是優(yōu)先計算性能,則該cfd任務的優(yōu)化目標是計算時間,cpu根據cfd邊界條件及gpu的性能參數,在所述硬件加速器中優(yōu)先選擇計算時間較短的gpu來計算cfd任務中的任務塊;或者,若所述cfd任務的屬性是優(yōu)先能耗性能,則cfd任務的優(yōu)化目標是計算能耗,則cpu根據cfd邊界條件及fpga的性能參數,在所述硬件加速器中優(yōu)先選擇計算能耗較低的fpga來計算cfd任務中的任務塊。所述gpu的性能參數包括gpu計算任務塊所需的計算時間、計算能耗等,所述fpga的性能參數包括fpga計算任務塊所需的計算時間、計算能耗等。在本發(fā)明實施例中,對于優(yōu)化目標是計算時間的cfd任務,其劃分后的任務塊可以優(yōu)先調用gpu來進行計算,當系統(tǒng)內的gpu全部處于忙碌狀態(tài),或者存在其他不能計算的情形時,也可以選用fpga來對該任務塊進行計算;同樣的,對于優(yōu)化目標是計算能耗的的cfd任務,其劃分后的任務塊可以優(yōu)先調用fpga來進行計算,當系統(tǒng)內的fpga全部處于忙碌狀態(tài),或者存在其他不能完成計算任務的情形時,也可以選用gpu來對該任務塊進行計算。需要強調的是:在本發(fā)明全部實施例中,pbs模塊在為任務塊選擇硬件加速器資源時,可以使用調度算法,例如局部貪心算法等,為任務塊選擇合適的硬件加速器。進一步的,在選擇時,也可以使用調度算法進行優(yōu)先選擇或者差異化選擇,并不局限于某種特定的者選擇方式,系統(tǒng)可以根據cfd仿真計算的需要自定義設置。在本發(fā)明實施例中,所述cpu接收所述硬件加速器反饋的任務塊計算結果,將所述任務塊的計算結果合并后發(fā)送給網絡文件系統(tǒng)nfs服務器進行存儲。在本發(fā)明實施例中,所述cpu還用于向所述nfs服務器獲取cfd前處理工具,并使用所述cfd前處理工具將cfd任務劃分為任務塊,如任務塊1、任務塊2、……、任務塊n,統(tǒng)計每個任務塊的點、面、網格、及幾何屬性。在本發(fā)明實施例中,所述cpu還用于向所述nfs服務器獲取任務求解應用程序,并將任務塊及任務求解應用程序發(fā)送給硬件加速器。在本發(fā)明實施例中,所述nfs服務器中存儲所述硬件加速器的性能參數,所述cpu還用于向所述nfs服務器讀取硬件加速器的性能參數,并存儲在所述cpu的內存中。在本發(fā)明實施例中,所述cpu使用pbs模塊為所述任務塊選擇硬件加速器。在本發(fā)明實施例中,cpu可以獲知硬件加速器的負載情況,以及是否處于空閑狀態(tài),cpu還可以依據硬件加速器的負載情況以及是否處于空閑狀態(tài),為任務塊選定最優(yōu)的硬件加速器。本發(fā)明實施例所提供的用于cfd仿真計算的異構集群系統(tǒng),不僅僅能處理cfd算法,而且還能處理其他復雜算法。在本發(fā)明實施例中,硬件加速器還可以是能執(zhí)行計算任務的其他類型的設備。本發(fā)明實施例所提供的用于cfd仿真計算的異構集群系統(tǒng),根據gpu和fpga的優(yōu)勢與特點,在邊界處理環(huán)節(jié)加入計算任務的屬性判斷與邏輯分發(fā)功能,智能地根據任務的級別屬性將相應任務進行調度,分發(fā)給選中的硬件加速器進行計算,使得計算效率得到大幅提升,而且也相應地降低了計算的成本。實施例二:如圖2所示,本發(fā)明實施例所提供的用于cfd仿真計算的異構集群系統(tǒng)在計算cfd任務時,具體包括如下步驟:s200、預先設置cfd任務計算所需的各項參數及計算條件;在本步驟中,預先設置cfd計算任務的屬性;統(tǒng)計并存儲作為硬件加速器的gpu和fpga的性能參數,所述性能參數包括計算時間、計算能耗等;為不同的cfd任務設置邊界條件,例如cfd任務的計算時間,或者cfd任務的計算能耗等。具體的,cfd計算任務的屬性、gpu/fpga的性能參數以及cfd任務塊的邊界條件可以存儲在nfs服務器中,也可以存儲在cpu上。s201、cpu接收cfd任務計算請求,所述計算請求中包含待處理的cfd任務;具體的,cpu上集成的pbs模塊接收cfd任務計算請求。s202、cpu從nfs服務器中獲取cfd前處理工具,并對cfd任務進行網格劃分,得到新的任務塊(block):任務塊1、任務塊2、……、任務塊n,根據預先配置的cfd任務的屬性映射表確定該cfd任務的屬性;具體的:cpu中的pbs模塊可以與nfs服務器進行信息交互,從nfs服務器中獲取cfd前處理工具,使用cfd前處理工具對cfd任務進行網格劃分,形成新的任務塊:任務塊1、任務塊2、……、任務塊n;cpu中預設不同cfd任務的屬性的映射表,例如:預設cfd任務1的屬性為優(yōu)先計算性能,cfd任務1的優(yōu)化目標是計算時間,因此可以優(yōu)先分配給gpu計算;預設cfd任務2的屬性為優(yōu)先能耗屬性,cfd任務2的優(yōu)化目標是計算能耗,因此可以優(yōu)先分配給fpga計算。在本發(fā)明實施例中,pbs模塊在為任務塊選擇硬件加速器資源時,可以使用調度算法,例如局部貪心算法等,為任務塊選擇合適的硬件加速器。進一步的,在選擇時,也可以使用調度算法進行優(yōu)先選擇或者差異化選擇,并不局限于某種特定選擇方式,系統(tǒng)可以根據cfd仿真計算的需要自定義設置。cpu可以根據在cfd任務的屬性映射表中查找對應cfd任務的屬性;cfd前處理工具可以預先配置在系統(tǒng)中,并存儲在nfs服務器上。s203、pbs模塊根據確定的cfd任務的屬性、cfd邊界條件以及gpu或fpga的性能參數,使用局部最優(yōu)算法為任務塊選擇合適的gpu或fpga,并將任務塊及cfd求解應用程序發(fā)送給選定的硬件加速器,其中:pbs模塊根據cfd任務1的屬性確定cfd任務1的優(yōu)化目標是計算時間,則為cfd任務1所劃分的全部任務塊:任務塊1、任務塊2、……、任務塊m,優(yōu)先選擇gpu進行計算,具體的:根據cfd的邊界條件(例如:對計算時間或能耗的要求),以及硬件加速器中處于空閑狀態(tài)的gpu的性能參數來為任務塊1、任務塊2、……、任務塊m選擇合適的gpu。pbs模塊統(tǒng)計任務塊1、任務塊2、……、任務塊m的點、面、網格及其他幾何屬性,并根據歷史數據確定計算任務,如具體的計算時間或者計算能耗。cpu可以根據cfd任務的屬性、cfd邊界條件以及gpu、fpga的性能參數使用局部貪心算法智能調度硬件加速器資源,為任務塊1、任務塊2、……、任務塊m分配具體硬件加速器。需要說明的是:在對不同的cfd任務進行劃分時,可以根據cfd前處理工具將不同的cfd任務劃分為不同或者相同的任務塊,具體劃分為多少個任務塊,可以根據cfd任務及cfd前置處理工具進行確定。在本步驟中,gpu/fpga的性能參數(如計算時間或者計算能耗)是已知的,在硬件加速器配置完成后,硬件加速器中全部gpu/fpga的性能參數可以存儲在nfs服務器中,pbs模塊還以從nfs服務器中將gpu/fpga的性能參數讀取出來,存儲在cpu的內存中。在本步驟中,cfd邊界條件在啟動cfd任務時也已經預設好,可以存儲在nfs服務器中,在具體計算時,可以從nfs服務器中獲取cfd邊界條件。cfd邊界條件包括cfd任務在計算時所需要的收斂時間、效能、計算步數等。cfd的邊界條件也可以根據歷史數據進行設置。在本步驟中,pbs模塊還可以從nfs服務器中獲取cfd任務求解應用程序,并將該cfd求解應用程序發(fā)送給硬件加速器,其中,硬件加速器可以包括至少一個gpu和/或至少一個fpga。在本步驟中,pbs模塊為任務塊選擇合適的硬件加速器的過程即為pbs模塊執(zhí)行智能調度硬件加速器資源的過程,也可以稱為pbs智能調度算法或者局部貪心算法;pbs模塊執(zhí)行智能調度算法所涉及到的軟硬件模塊可以統(tǒng)簡稱為pbs智能調度系統(tǒng)。在本發(fā)明實施例中,pbs模塊在為任務塊選擇硬件加速器資源時,可以使用調度算法,例如局部貪心算法等,為任務塊選擇合適的硬件加速器。進一步的,在選擇時,也可以使用調度算法進行優(yōu)先選擇或者差異化選擇,并不局限于某種特定的選擇方式,系統(tǒng)可以根據cfd仿真計算的需要自定義設置。s204、硬件加速器根據接收到的任務塊以及cfd任務求解應用程序對任務塊進行計算,并將結算結果反饋給pbs模塊;具體的:gpu/fpga在接收到任務塊及cfd求解應用程序后,根據cfd求解應用程序來對任務塊進行計算,并將結算結果發(fā)送給pbs模塊。s205、所述pbs模塊接收并合并硬件加速器反饋的計算結果,并將合并后的計算結果發(fā)送給nfs服務器進行存儲。在本發(fā)明實施例中,通過pbs智能調度系統(tǒng),將cfd任務劃分后通過局部貪心算法為每個任務塊尋找最優(yōu)的硬件加速器進行計算,提高了計算效率。實施例三:本發(fā)明實施例還提供了一種使用用于cfd仿真計算的異構集群系統(tǒng)來計算cfd的方法,包括:s300、構建集成cpu、gpu和fpga于一體的綜合軟硬件平臺(也即本發(fā)明實施例中的“用于cfd仿真計算的異構集群系統(tǒng)”),在該平臺上部署cfd應用軟件以及相關求解器,所有計算資源可以通過集成在cpu上的pbs模塊進行維護和調度;s301、初始化相關參數,根據輸入的數據,pbs模塊將cfd任務進行網格劃分以及任務分解,通過邊界條件處理,設置cfd的時間迭代步數和收斂條件。具體的:在本步驟中,cpu上的pbs模塊根據cfd前處理工具對cfd任務進行網格劃分,并根據預設的cfd任務的屬性,確定該cfd任務的優(yōu)化目標,例如優(yōu)先選擇gpu或者優(yōu)先選擇fpga計算。如預先在cpu上設置,對于高級別的cfd任務,其優(yōu)化目標是計算時間,因此優(yōu)先選用gpu進行計算,而對于低級別的cfd任務,其優(yōu)化目標是計算能耗,因此優(yōu)先選用fpga進行計算。s302、cpu僅負責cfd業(yè)務邏輯的執(zhí)行,計算任務交由gpu和fpga來完成,pbs模塊根據cfd任務的屬性、設置的邊界條件以及硬件加速器(gpu/fpga)的性能參數,自動優(yōu)化不同的目標函數,從剩余可取得的計算資源池中分配相應的gpu和fpga計算資源來執(zhí)行不同的任務塊計算。pbs模塊使用局部貪心算法來選擇任務塊所需要的gpu/fpga,也即pbs模塊根據cfd任務的屬性,在現有約束條件下選擇優(yōu)化不同目標,也即選用一組cs,k的集合達到目標函數的最優(yōu)值。具體優(yōu)化過程如下:s3021、對于高級別任務,盡量減少任務執(zhí)行時間,即優(yōu)化的目標函數為:t=twait+max{tk(blockk,cs,k)}………………………………(1)式中:ci——為每個計算運算資源的運算能力,i∈[0,n),n為所有的計算資源數目twait——表示等待時間blockk——第k個任務分塊,假設任務分為m塊,k∈[0,m)cs,k——表示選中執(zhí)行第k個任務分塊的計算資源;tk——表示在blockk的預估執(zhí)行時間,由blockk和cs,k兩者決定。根據公式(1)即可預估出每個gpu計算任務塊k的大致時間,根據設置的邊界條件(任務塊k所要求的計算時間)以及預估的計算時間,為任務塊k選擇合適的硬件加速設備進行計算。s3022、對于普通任務,盡量減低能耗,也即優(yōu)化的目標函數為:e=σ{ek(blockk,cs,k,es,k)}……………………(2)式中:e——表示任務需要消耗的能量;es,k——表示選中的執(zhí)行的第k個任務分塊的計算資源的能耗;ek——完成第k個任務分塊需要的能量,由blockk,cs,k以及es,k決定。根據公式(2)即可預估出每個fpga計算任務塊k的大致能耗,根據設置的邊界條件(計算任務塊k所需要的能耗)以及預估的能耗,為任務塊k選擇合適的硬件加速設備。s303、啟動數據存儲管理,cpu負責執(zhí)行過程中的數據交換、數據合并、數據緩存以及數據結果的輸出;在本步驟中,cpu負責執(zhí)行邏輯算法,即負責調用不同的模塊、與其他模塊之間進行數據交換,并進行數據緩存及數據結果的輸出等操作。s304、執(zhí)行cfd時間步推進模塊,根據時間步推進模塊的收斂條件,判斷運算是否完成,完成則繼續(xù)進入步驟s305,未完成則回到步驟s302;在本步驟中,根據預設的收斂條件及執(zhí)行的運算結果,判斷運算結果是否收斂,如果收斂,則執(zhí)行步驟s305,否則繼續(xù)轉到步驟s302繼續(xù)執(zhí)行。s305、cpu合并所有結果并且發(fā)送到存儲系統(tǒng)(例如nfs服務器)中進行存儲;在本步驟中,cpu接收硬件加速器的計算結果,并將計算結果合并后發(fā)送給nfs服務器進行存儲。s306、結束cfd軟件的運行。需要說明的是,在本發(fā)明實施例中,cpu所實現的邏輯處理功能可以由集成在cpu上的pbs模塊完成的,即cpu調用pbs程序即可實現前述邏輯處理功能。本發(fā)明實施例中所提供的cfd計算方法,使用用于cfd仿真計算的異構集群系統(tǒng)實現了gpu和fpga的資源動態(tài)調配,將cfd任務進行分塊,并根據cfd任務的屬性動態(tài)地把cfd任務中的任務塊分配給gpu或者fpga加速硬件,從而最大化地實現了計算資源的合理利用,節(jié)省運行時間,并提高運行效率。同時,利用gpu和fpga等新型硬件的強大運算能力,將cfd運算中的瓶頸部分轉換成gpu或fpga可執(zhí)行的格式進行運算,從而在性能上達到了一個數量級的提升。此外,本發(fā)明實施例將cfd工作流程進行科學地分解,采用分布式部署的方式,通過pbs模塊進行統(tǒng)一調度,有利于提高運維管理效率,降低研發(fā)成本。實施例四:本發(fā)明實施例還提供了一種用于cfd仿真計算的異構集群系統(tǒng),以模擬指定摩托車模型在自定義風速的風洞中各種物理量(例如壓強、速度、流場等)的變化為例進行描述,具體的:s400、為了模擬指定型號的摩托車在時速20m/s(72km/s)時各物理場的分布情況,摩托車模型被靜置于風洞中。在仿真過程中,速度初始條件設置為摩托車入口風速20m/s、初始壓強場設置為0pa(相對于標準壓強)。速度邊界條件設置為:入口速度20m/s;出口速度設置為:當空氣流出時速度為零梯度,回流時速度為0m/s;風洞底面速度設置為勻速20m/s,其他側面設置為滑移;摩托車表面速度考慮了粘性條件,設置為無滑移。壓強邊界條件除了壓強出口設置為0pa(相對于標準壓強),其他邊界均設置為零梯度壓強。本發(fā)明實施例所提供的硬件加速器中包括若干英偉達k40、k20系列的gpu,以及intelalteraarria10系列的fpga,其中k40型號的gpu單精度性能是4.5tflops,能耗在18.25gflops/watt;k20型號的gpu單精度性能是3.5tflops,能耗在16.80gflops/watt;alteraarria10型號的fpga的單精度性能是1.5tflops,能耗在50gflops/watt。s401、cpu接收摩托車模型的仿真請求,使用cfd前處理工具對摩托車模型進行網格劃分,將摩托車模型劃分為任務塊a和任務塊b,統(tǒng)計任務塊a和任務塊b的點、面及網格的數目,以及其他幾何屬性;根據任務塊a和任務塊b的點、面及網格的數目、其他幾何屬性,以及摩托車模型的cfd邊界條件,以及歷史數據預估任務塊a和任務塊b的計算量,例如計算時間及計算能耗;s402、cpu根據任務塊a和任務塊b的計算量、cfd任務(摩托車模型)的屬性以及gpu和fpga的參數來選擇計算資源;在本發(fā)明實施例中,如果該cfd任務(摩托車模型)的屬性是優(yōu)先計算性能,則該cfd任務(摩托車模型)的優(yōu)化目標是運算時間,因此通過調度算法為任務塊a和任務塊b選擇運算單精度性能高的gpu進行計算。進一步的,cpu在選擇硬件加速器時,還可以考慮當前硬件加速器的整體負載情況。在本發(fā)明實施例中,以cpu根據調度算法及當前gpu的負載情況,為任務塊a選擇k40系列的gpu、為任務塊b選擇k20系列的gpu進行計算為例進行描述。s403、cpu將任務塊a發(fā)送給k40系列的gpu進行計算,將任務塊b發(fā)送給k20系列的gpu進行計算。cpu上的pbs主節(jié)點(pbsmaster)會將任務塊a和任務塊b分配到計算資源相應的節(jié)點上,節(jié)點上的pbs代理(agent)收到任務之后,會將計算任務發(fā)送給相應的gpu進行計算。s404、cpu分別接收任務塊a和任務塊b的計算結果,并將計算結果合并后發(fā)送給nfs存儲服務器進行存儲。本發(fā)明實施例所提供的一種用于cfd仿真計算的異構集群系統(tǒng),模擬摩托車模型在風洞中的仿真數據,可以給后續(xù)的摩托車模型修改提供數據支持,以減小風阻,提升燃油效率。而且避免了真實風洞仿真中縮小模型帶來的雷諾系數改變,提升了經濟效益。實施例五:本發(fā)明實施例所提供的用于cfd仿真計算的異構集群系統(tǒng),可以布置在云端,也可以配置在本地端。本發(fā)明實施例所提供的cfd仿真計算方法的整體或者部分可以通過軟件代碼的方式進行執(zhí)行,其可以分為存儲器和處理器,其中存儲器可以存儲代碼,處理器用于執(zhí)行存儲器中的代碼,執(zhí)行存儲器中的代碼可以實施如實施例二、實施例三和實施例四所記載的各個方法步驟流程。應該理解,本發(fā)明的各種實施例中,上述各過程中序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應以其功能和內在邏輯確定,而不應對本發(fā)明實施例的實施過程構成任何限定。另外,本文中術語“系統(tǒng)”和“網絡”在本文中常被可互換使用。本文中術語“和/或”,僅僅是一種描述關聯對象的關聯關系,表示可以存在三種關系,例如,a和/或b,可以表示:單獨存在a,同時存在a和b,單獨存在b這三種情況。另外,本文中字符“/”,一般表示前后關聯對象是一種“或”的關系。本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟是以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發(fā)明的范圍。所屬領域的技術人員可以清楚了解到,為了描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其他的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅是一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或者組件可以結合或者可以繼承到一個系統(tǒng),或者一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的相互之間的耦合或者直接耦合或者通信連接可以是通過一些接口、裝置或單元的間接耦合或通信連接,也可以是電的,機械的或其他的形式連接。所述作為分離部件說明的單元可以是或者可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕嶋H的需要選擇其中的部分或者全部單元來實現本發(fā)明實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以是兩個或兩個以上單元集成在個單元中。上述集成的單元即可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發(fā)明可以用硬件實現,或者軟件實現,或它們的組合方式來實現。當使用軟件實現時,可以見上述功能存儲在計算機可讀介質中或作為計算機可讀介質上的一個或多個指令或代碼進行傳輸。計算機可讀介質包括計算機存儲介質和通信介質,其中通信介質包括便于從一個地方向另一個地方傳送計算機程序的任何介質。存儲介質可以是計算機能夠存取的任何介質。以此為例但不限于:計算機可讀介質可以包括ram、rom、eeprom、cd-rom或其他光盤存儲、磁盤介質或者其他磁存儲設備、或者能夠用于攜帶或存儲具有指令或數據結構形式的期望的程序代碼并能夠由計算機存取的任何其他介質。此外,任何連接可以適當的成為計算機可讀介質,例如,如果軟件是使用同軸電纜、光纖光纜、雙絞線、數字用戶線(sdl)或者諸如紅外線、無線電和微波之類的無線技術包括在所屬介質的定影中。如本發(fā)明所使用的盤(disk)和碟(disc)包括壓縮光碟(cd)、激光碟、光碟、數字通用光碟(dvd)、軟盤和藍光光碟,其中盤通常磁性的復制數據,而碟則用激光來光學的復制數據。上面的組合也應當包括在計算機可讀介質的保護范圍之內??傊?,以上所述僅為本發(fā)明技術方案的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。當前第1頁12當前第1頁12