本發(fā)明涉及計算機數(shù)據(jù)處理技術(shù),尤其涉及一種并行網(wǎng)格處理器自適應(yīng)分配方法和系統(tǒng)。
背景技術(shù):
:格子boltzmann方法(lbm),是一種介于流體的微觀分子動力學模型和宏觀連續(xù)模型之間的介觀模型,兼具二者的優(yōu)點。該方法具有顯著的計算優(yōu)勢,其介觀背景使得流體內(nèi)部的相互作用以及流體與固體之間的相互作用在lbm中可以方便地描述,因此能夠在多組分、多相流以及滲流、氣固兩相流、流-固耦合等方面得到廣泛的應(yīng)用。而且,由于不受連續(xù)介質(zhì)假設(shè)的限制,因此在不適用微尺度流動與傳熱等連續(xù)方法的問題研究中也具有良好的應(yīng)用前景。格子boltzmann模型計算量大,為了實現(xiàn)并行計算,通常需要將模型較均衡地分配到多個處理器上,實現(xiàn)較為高效的模型計算過程。目前,格子boltzmann模型并行網(wǎng)格處理器分配方式有兩種:手動分配方法和輪盤分配方法。這兩種方法各自具有一定的弊端。手動分配方法的分配比較均衡,但過程繁瑣,適應(yīng)性差,一旦計算過程中處理器損壞或換計算機進行運算,都需要重新分析計算處理器的分配方式。輪盤分配方法步驟如下(引自sartajsahni著的《數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用——c++語言描述》):根據(jù)計算機處理器總數(shù)計算素數(shù)表;按邊長大小,依次將素數(shù)從大到小的順序分配給各邊長;分配多輪次直至素數(shù)分配完畢;將每個邊長下的素數(shù)加和,即為每個邊長分配的處理器個數(shù)。輪盤分配方法的適應(yīng)性強,但是分配不均衡,尤其是降低格子boltzmann模型的計算效率。技術(shù)實現(xiàn)要素:為了解決上述技術(shù)問題,本發(fā)明提供了一種新的并行網(wǎng)格處理器自適應(yīng)分配方法和系統(tǒng),用以保證網(wǎng)格運算中處理器分配的均勻性和合理性。本發(fā)明提供的并行網(wǎng)格處理器自適應(yīng)分配方法,其核心內(nèi)容為:求取處理器總數(shù)的素數(shù),并確定并行網(wǎng)格模型各方向的邊長;將最大素數(shù)分配給當前具有最大邊長的方向,然后將當前最大邊長除以所分配的最大素數(shù),并將結(jié)果與其它邊長進行比較,再將第二大素數(shù)分配給其中最大邊長的方向,如此類推直至所有素數(shù)分配完畢;然后對各方向下的素數(shù)分別求和,獲得的和為各方向應(yīng)當分配的處理器個數(shù);最后按照各方向應(yīng)當分配的處理器個數(shù)分配處理器,以便執(zhí)行網(wǎng)格運算。具體地,根據(jù)本發(fā)明的實施例,上述并行網(wǎng)格處理器自適應(yīng)分配方法可以包括以下步驟:s110,求取處理器總數(shù)的素數(shù)pi,i=1...n,n為素數(shù)個數(shù);s120,確定并行網(wǎng)格模型各方向的邊長lj,j=1...m,m為方向個數(shù);s130,判斷當前l(fā)j,j=1...m中的最大值lmax,將當前還未分配的最大素數(shù)pmax分配給具有最大值lmax的方向;s140,判斷是否還有未分配的素數(shù):若是,令具有最大值lmax的方向的lj=lmax/pmax,返回步驟s130;若否,執(zhí)行步驟s150;s150,分別將各方向下分配到的素數(shù)相加,獲得的sj,j=1...m為各方向分配的處理器的個數(shù)。根據(jù)本發(fā)明的實施例,上述并行網(wǎng)格處理器自適應(yīng)分配方法中的并行網(wǎng)格模型可以是例如二維的并行網(wǎng)格模型,也即m=2。根據(jù)本發(fā)明的實施例,上述并行網(wǎng)格處理器自適應(yīng)分配方法中的并行網(wǎng)格模型可以是例如三維的并行網(wǎng)格模型,也即m=3。具體地,三維的并行網(wǎng)格模型可以是格子boltzmann模型。此外,本發(fā)明還提供一種并行網(wǎng)格處理器自適應(yīng)分配系統(tǒng),其包括:啟動模塊,用于求取處理器總數(shù)的素數(shù),并確定并行網(wǎng)格模型各方向的邊長;分配模塊,用于將最大素數(shù)分配給當前具有最大邊長的方向,然后將當前最大邊長除以所分配的最大素數(shù),并將結(jié)果與其它邊長進行比較,再將第二大素數(shù) 分配給其中最大邊長的方向,如此類推直至所有素數(shù)分配完畢;統(tǒng)計模塊,用于對各方向下的素數(shù)分別求和,獲得的和為各方向應(yīng)當分配的處理器個數(shù),執(zhí)行模塊,用于按照各方向應(yīng)當分配的處理器個數(shù)分配處理器,以便執(zhí)行網(wǎng)格運算。根據(jù)本發(fā)明的實施例,并行網(wǎng)格模型可以是二維模型或三維模型。具體地,并行網(wǎng)格模型可以是格子boltzmann模型。與現(xiàn)有技術(shù)相比,本發(fā)明的一個或多個實施例可以具有如下優(yōu)點:本發(fā)明提供的并行網(wǎng)格處理器自適應(yīng)分配方法和系統(tǒng),用于實現(xiàn)并行計算中處理器的自動分配,基于“貪婪思想”提高了處理器分配的均衡性、合理性,減少了各方向的數(shù)據(jù)交換量,從而能夠有效改善并行網(wǎng)格模型的計算效率。本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。附圖說明附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:圖1是根據(jù)本發(fā)明一實施例的方法工作流程圖。具體實施方式本發(fā)明的并行網(wǎng)格處理器自適應(yīng)分配方法的核心思想是:求取處理器總數(shù)的素數(shù),并確定并行網(wǎng)格模型各方向的邊長;將最大素數(shù)分配給當前具有最大邊長的方向,然后將當前最大邊長除以所分配的最大素數(shù),并將結(jié)果與其它邊長進行比較,再將第二大素數(shù)分配給其中最大邊長的方向,如此類推直至所有素數(shù)分配完畢;然后對各方向下的素數(shù)分別求和,獲得的和為各方向應(yīng)當分配的處理器個數(shù);最后按照各方向應(yīng)當分配的處理器個數(shù)分配處理器,以便執(zhí)行網(wǎng)格運算。通過這種自適應(yīng)分配算法,能夠?qū)⑻幚砥骶夂侠淼胤峙浣o模型的各個方向,提高模型并行計算的效率。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合具體實施例以及附圖對本發(fā)明作進一步地詳細說明。第一實施例在一個120x100x80的格子boltzmann模型中,采用某集群進行計算,該集群有255個計算節(jié)點,每個節(jié)點有12個處理器。換言之,處理器總數(shù)為3060,其素數(shù)表為:17、5、3、3、2、2。采用傳統(tǒng)的輪盤分配方法分配處理器的過程如下表表1所示。表1輪盤分配方法實例通過本發(fā)明的并行網(wǎng)格處理器自適應(yīng)分配方法來分配處理器的過程如下表表2所示。表2并行網(wǎng)格處理器自適應(yīng)分配方法實例下面進行詳細說明:處理器總數(shù)3060,其素數(shù)表為:17、5、3、3、2、2;模型三個方向的邊長分別為120、100、80;在第一輪分配中,l1=120、l2=100、l3=80,其中最大值為120,故將最大素數(shù)17分配給具有最大值120的方向;然后,令具有最大值120的方向的l1=120/17=7,進入下一輪分配;在第二輪分配中,l1=7、l2=100、l3=80,其中最大值為100,故將還未分配的最大素數(shù)5分配給具有最大值100的方向;然后,令具有最大值100的方向的l2=100/5=20,進入下一輪分配;在第三輪分配中,l1=7、l2=20、l3=80,其中最大值為80,故將還未分配的最大素數(shù)3分配給具有最大值80的方向;然后,令具有最大80的方向的l2=80/3=26,進入下一輪分配;如此類推,直至所有素數(shù)分配完畢;最后分別將x、y、z三個方向下分配到的素數(shù)相加,獲得的17、20、9即為x、y、z三個方向分配的處理器的個數(shù)。進一步地,分析在實際運算中各方向需要交換的數(shù)據(jù)量。假設(shè),一個模型中當x方向的邊長為x,分配的處理器個數(shù)為a;y方向的邊長為y,分配的處理器個數(shù)為b,z方向的邊長為z,分配的處理器個數(shù)為c時,那么在實際運算中,這三個方向需要交換的數(shù)據(jù)量如下式所示。那么傳統(tǒng)的輪盤分配方法與本發(fā)明的并行網(wǎng)格處理器自適應(yīng)分配方法的交換數(shù)據(jù)量的差異如下表表3所示。表3各方向交換數(shù)據(jù)量方向輪盤分配方法發(fā)明的自適應(yīng)分配方法x408000136000y96000192000z72000108000合計576000436000通過對比輪盤分配方法與并行網(wǎng)格處理器自適應(yīng)分配方法的實施例,可以看出在輪盤分配方法中邊長與分配的處理器的比值的均方差為4.60,而在并行網(wǎng)格處理器自適應(yīng)分配方法中邊長與分配的處理器的比值的均方差為1.59,明顯小于前者。這說明,本發(fā)明提供并行網(wǎng)格處理器自適應(yīng)分配方法對于處理器的分配更 加地均衡。此外,輪盤分配方法的數(shù)據(jù)交換總量是并行網(wǎng)格處理器自適應(yīng)分配方法的數(shù)據(jù)交換總量的1.32倍。這說明并行網(wǎng)格處理器自適應(yīng)分配方法的數(shù)據(jù)交換總量也比輪盤分配方法的數(shù)據(jù)交換總量少很多,從而有效地提升了并行網(wǎng)格模型的運算速度。第二實施例在此需要說明的是,本發(fā)明提供的并行網(wǎng)格處理器自適應(yīng)分配方法并不是只適用于例如格子boltzmann模型的三維并行網(wǎng)格模型,它還可以用于為二維模型分配處理器,其工作原理相同,在此不再贅述。以上所述,僅為本發(fā)明的具體實施案例,本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)的技術(shù)人員在本發(fā)明所述的技術(shù)規(guī)范內(nèi),對本發(fā)明的修改或替換,都應(yīng)在本發(fā)明的保護范圍之內(nèi)。當前第1頁12