用于分布式稀疏線性系統(tǒng)中改進(jìn)的并行ilu分解的系統(tǒng)和方法
【專利說明】用于分布式稀疏線性系統(tǒng)中改進(jìn)的并行ILU分解的系統(tǒng)和方法
[0001]本申請是申請日為2009年11月5日,申請?zhí)枮?00980145215.X,發(fā)明名稱為“用于分布式稀疏線性系統(tǒng)中改進(jìn)的并行ILU分解的系統(tǒng)和方法”的專利申請的分案申請。
技術(shù)領(lǐng)域
[0002]本發(fā)明大體涉及用于分布式稀疏線性系統(tǒng)的并行ILU分解。更為具體地,本發(fā)明涉及一種用于在分布稀疏線性系統(tǒng)中求解系統(tǒng)之前,使用并行ILU分解預(yù)條件算子對方程的基本節(jié)點(diǎn)進(jìn)行排序的方法。
【背景技術(shù)】
[0003]許多類型的物理過程,包括石油油藏內(nèi)的流體流動,是由偏微分方程控制的。通常使用有限差、有限體積或者有限元方法來求解這些可能非常復(fù)雜的偏微分方程。所有這些方法將物理模型劃分為被稱為網(wǎng)格塊、單元格或者元素的單元。在這些物理單元的每一個(gè)中,通過一個(gè)或更多的求解變量或未知量給出解。與每個(gè)物理單元相關(guān)的是一組用于控制這些未知量的特性的方程,方程的數(shù)量等于未知量的數(shù)量。這些方程還包含來自相鄰的物理單元的未知量。
[0004]因此,方程存在結(jié)構(gòu),同時(shí),給定物理單元的方程含有來自該物理單元和來自相鄰物理單元的未知量。最合宜地,使用節(jié)點(diǎn)和連接的組合對其進(jìn)行描繪,其中節(jié)點(diǎn)是由小圓圈描繪的,而連接是由兩個(gè)節(jié)點(diǎn)之間的線條描繪的。節(jié)點(diǎn)處的方程含有該節(jié)點(diǎn)處的未知量和連接至其上的相鄰節(jié)點(diǎn)處的未知量。
[0005]所有節(jié)點(diǎn)處的方程集合成單個(gè)的矩陣方程。通常,獲得所期望的偏微分方程的解的關(guān)鍵任務(wù)是求解該矩陣方程。實(shí)現(xiàn)該任務(wù)的最有效的方式之一是通過使用不完全LU分解法或者ILU,其中原始矩陣被近似分解為兩個(gè)矩陣L和U的乘積。矩陣L和U為下三角矩陣和上三角矩陣而且分別具有與原始矩陣的下部和上部類似的非零結(jié)構(gòu)。使用這種分解,通過前向和后向替換迭代地獲得了解。
[0006]一直存在對獲得更好的求解準(zhǔn)確性的需求。實(shí)現(xiàn)該需求的一種方式是將物理模型劃分成更小的物理單元,或者換句話講,使用更多的節(jié)點(diǎn),可能是百萬計(jì)數(shù)量的節(jié)點(diǎn)。當(dāng)然,為完成其而所需進(jìn)行的計(jì)算的時(shí)間增加了。避免這種時(shí)間增加的一種方式是在多個(gè)處理器上以并行方式執(zhí)行計(jì)算。
[0007]存在兩種類型的并行式計(jì)算機(jī),即:使用共享式內(nèi)存和使用分布式內(nèi)存的計(jì)算機(jī)。共享式內(nèi)存計(jì)算機(jī)只使用少量的處理器,其限制了可能的運(yùn)行時(shí)間減少。常見的是使用數(shù)十個(gè)處理器的分布式內(nèi)存計(jì)算機(jī),但是也存在一些使用數(shù)千個(gè)處理器的分布式內(nèi)存計(jì)算機(jī)。期望使用分布式內(nèi)存并行處理。
[0008]當(dāng)使用分布式內(nèi)存時(shí),通過將物理模型劃分成域而使計(jì)算并行化,同時(shí),域的數(shù)量等于同時(shí)使用的處理器的數(shù)量。每個(gè)域被分配給一個(gè)特定的處理器,其執(zhí)行與該域相關(guān)的計(jì)算。每個(gè)域包含特定的節(jié)點(diǎn)組,且每個(gè)節(jié)點(diǎn)設(shè)置在域內(nèi)。
[0009]整個(gè)建模過程涉及很多計(jì)算,幾乎所有的計(jì)算都是逐個(gè)節(jié)點(diǎn)進(jìn)行的。節(jié)點(diǎn)處的一些這樣的計(jì)算只需要節(jié)點(diǎn)的本地信息。當(dāng)信息被完全包含在與節(jié)點(diǎn)相同的域內(nèi)時(shí),該信息對于節(jié)點(diǎn)是本地的。這種計(jì)算有時(shí)被稱作密集并行,因?yàn)樗鼈儾恍枰獮榱瞬⑿袑?shí)施而執(zhí)行特殊處理。其它的計(jì)算需要節(jié)點(diǎn)處和其相鄰節(jié)點(diǎn)處的信息。如果節(jié)點(diǎn)在自己的域與另一個(gè)域的邊界上,其一個(gè)或更多的相鄰節(jié)點(diǎn)將位于另一個(gè)域內(nèi)。為了實(shí)施需要邊界節(jié)點(diǎn)處相鄰信息的計(jì)算,必須從這些相鄰節(jié)點(diǎn)所屬的域內(nèi)獲得關(guān)于這些相鄰節(jié)點(diǎn)的信息。如果所需的信息事先已知,其可以容易地通過“消息傳遞”獲得,而且該計(jì)算易于并行進(jìn)行。重要的是信息事先要已知,這是因?yàn)橄⒌膫鬟f將花費(fèi)時(shí)間。具體地,與通常的計(jì)算時(shí)間相比,存在一個(gè)較長的延遲;換句話講,消息的第一元素需要花費(fèi)有限的時(shí)間到達(dá)其接受方。如果該信息是事先已知的,在另一個(gè)處理需要該信息之前,含有該信息的消息能夠被發(fā)送。以這種方式,在需要該信息之前,其已經(jīng)到達(dá)另一個(gè)處理。
[0010]遺憾的是,在分解計(jì)算中,所需的信息事先是不知道的。正相反,其是在分解期間產(chǎn)生的。計(jì)算是具有“固有順序”的。計(jì)算的一般流程如下:
[0011]1、以在其已被分解的相鄰節(jié)點(diǎn)處實(shí)施的計(jì)算為基礎(chǔ),更新當(dāng)前的節(jié)點(diǎn)方程。
[0012]2、在當(dāng)前節(jié)點(diǎn)處對所得到的修改過的方程進(jìn)行分解。
[0013]3、將與當(dāng)前節(jié)點(diǎn)的分解相關(guān)的信息提供給其還未被分解的相鄰節(jié)點(diǎn)。
[0014]“相鄰節(jié)點(diǎn)”不必為最接近的節(jié)點(diǎn)。它們可以是在幾個(gè)節(jié)點(diǎn)之外的節(jié)點(diǎn)。
[0015]如果只存在一個(gè)域,這些計(jì)算的順序性就不成問題。如果存在多于一個(gè)的域,這些計(jì)算的順序性將成為問題。信息必須從一個(gè)處理發(fā)送到另一個(gè)處理。如果直到其馬上要被另一個(gè)處理需要之前才知道該信息,則當(dāng)含有該信息的消息被發(fā)送時(shí),存在一個(gè)延遲。如果對計(jì)算進(jìn)行排序使得任何將發(fā)送到另一個(gè)處理的信息在其被該處理需要之前是充分已知的,則可以避免這些延遲。
[0016]進(jìn)一步考慮這一點(diǎn),假設(shè)有兩個(gè)域。每個(gè)域具有內(nèi)部節(jié)點(diǎn)和邊界節(jié)點(diǎn),該內(nèi)部節(jié)點(diǎn)只與在同一域內(nèi)的節(jié)點(diǎn)通信,并且該邊界節(jié)點(diǎn)與兩個(gè)域內(nèi)的節(jié)點(diǎn)都通信??砂聪旅娴捻樞蜻M(jìn)行處理:
[0017]1、處理域1中的內(nèi)部節(jié)點(diǎn)。
[0018]2、處理域1中的邊界節(jié)點(diǎn)。
[0019]3、從域1發(fā)送邊界節(jié)點(diǎn)信息至域2。
[0020]4、處理域2中的邊界節(jié)點(diǎn)。
[0021]5、處理域2中的內(nèi)部節(jié)點(diǎn)。
[0022]如果使用這一順序,直到域1全部結(jié)束,域2才能開始其處理。根本不存在并行化計(jì)算。
[0023]如下是一個(gè)更好的處理順序:
[0024]1、以并行方式處理域1中的內(nèi)部節(jié)點(diǎn)和域2中的內(nèi)部節(jié)點(diǎn)。
[0025]2、處理域1中的邊界節(jié)點(diǎn)。
[0026]3、從域1發(fā)送邊界節(jié)點(diǎn)信息至域2。
[0027]4、處理域2中的邊界節(jié)點(diǎn)。
[0028]使用這一順序,內(nèi)部節(jié)點(diǎn)的計(jì)算是并行實(shí)施的。這是意義重大的,因?yàn)閮?nèi)部節(jié)點(diǎn)多于邊界節(jié)點(diǎn)。但是,邊界節(jié)點(diǎn)仍是按順序處理的。一般地,全部節(jié)點(diǎn)的20%-40%為邊界節(jié)點(diǎn)。
[0029]存在相當(dāng)多的用于ILU分解的并行算法。2003年,工業(yè)與應(yīng)用數(shù)學(xué)協(xié)會,YousefSaad編寫(“Saad”)的“用于稀疏線性系統(tǒng)的迭代方法(第二版)(Iterative Methodsfor Sparse Linear Systems (second edit1n))”一書中介紹了兩種算法。其中之一是 295頁-392頁描述的多級篩選算法,該算法利用了稀疏線性系統(tǒng)中存在的獨(dú)立集的優(yōu)勢。然而該算法可能不適用于分布式數(shù)據(jù)結(jié)構(gòu)。396頁-399頁描述的第二種算法是在每個(gè)處理器上同時(shí)對內(nèi)部節(jié)點(diǎn)進(jìn)行分解,然后以某種順序處理邊界節(jié)點(diǎn)。該第二種算法的缺點(diǎn)是當(dāng)?shù)却齺碜云渌幚砥鞯臄?shù)據(jù)時(shí),一些處理器保持閑置。George Karypis和Vipin Kumar于1998年刊載在技術(shù)報(bào)告(Technical Report) #96-061上的“基于平行閾值的ILU分解(ParallelThreshold-based ILU Factorizat1n) ”中描述了第三種算法,除了對邊界節(jié)點(diǎn)著色然后對每種顏色的節(jié)點(diǎn)進(jìn)行分解之外,其類似于第二種算法。然而,其可能需要一些顏色。由于需要更多的顏色,必須在處理器之間傳遞更多的消息,因此通常消弱了求解器的總體性能。
[0030]因此,存在對于改進(jìn)的并行ILU分解算法的需求,該算法應(yīng)能適用于分布式稀疏線性系統(tǒng)并且減少處理時(shí)間。
【發(fā)明內(nèi)容】
[0031]本發(fā)明通過提供用于分布式稀疏線性系統(tǒng)中并行ILU分解的系統(tǒng)和方法,滿足了上述需求并克服了現(xiàn)有技術(shù)中的一個(gè)或更多缺陷,該系統(tǒng)和方法采用了對系統(tǒng)內(nèi)方程的基本節(jié)點(diǎn)排序的獨(dú)特方法并且減少了處理時(shí)間。
[0032]在一個(gè)實(shí)施例中,本發(fā)明包含用于對分布式稀疏線性系統(tǒng)中方程的多個(gè)基本節(jié)點(diǎn)進(jìn)行排序的方法,其包括i )指定不具有跨越分區(qū)界面的連接的節(jié)點(diǎn)為內(nèi)部節(jié)點(diǎn);? )指定具有跨越分區(qū)界面的連接的節(jié)點(diǎn)為邊界節(jié)點(diǎn);iii)指定不多于三個(gè)的代碼,以區(qū)分邊界節(jié)點(diǎn);和~)通過:a)分配第一代碼至每個(gè)代表第一邊界節(jié)點(diǎn)的邊界節(jié)點(diǎn),其中每個(gè)第一邊界節(jié)點(diǎn)連接不能跨越分區(qū)界面以連接兩個(gè)第一邊界節(jié)點(diǎn);b)分配第二代碼至每個(gè)代表第二邊界節(jié)點(diǎn)的邊界節(jié)點(diǎn),其中每個(gè)第二邊界節(jié)點(diǎn)連接不能跨越分區(qū)界面以連接兩個(gè)第二邊界節(jié)點(diǎn);和c)分配第三代碼至每個(gè)代表第三邊界節(jié)點(diǎn)的邊界節(jié)點(diǎn),其中每個(gè)第三邊界節(jié)點(diǎn)連接不能跨越分區(qū)界面以連接一個(gè)內(nèi)部節(jié)點(diǎn);在計(jì)算機(jī)系統(tǒng)上處理每個(gè)邊界節(jié)點(diǎn)。
[0033]在另一個(gè)實(shí)施例中,本發(fā)明包含用于攜載用于在分布式稀疏線性系統(tǒng)中對方程的多個(gè)基本節(jié)點(diǎn)進(jìn)行排序的計(jì)算機(jī)可執(zhí)行指令的程序載體裝置。所述指令是可執(zhí)行的,用于實(shí)施:i )指定不具有跨越分區(qū)界面的連接的節(jié)點(diǎn)為內(nèi)部節(jié)點(diǎn);? )指定具有跨越分區(qū)界面的連接的節(jié)點(diǎn)為邊界節(jié)點(diǎn);iii)指定不多于三個(gè)的代碼,以區(qū)分所述邊界節(jié)點(diǎn);iv)分配第一代碼至每個(gè)代表第一邊界節(jié)點(diǎn)的邊界節(jié)點(diǎn),其中每個(gè)第一邊界節(jié)點(diǎn)連接不能跨越分區(qū)界面以連接兩個(gè)第一邊界節(jié)點(diǎn);V )分配第二代碼至每個(gè)代表第二邊界節(jié)點(diǎn)的邊界節(jié)點(diǎn),其中每個(gè)第二邊界節(jié)點(diǎn)連接不能跨越分區(qū)界面以連接兩個(gè)第二邊界節(jié)點(diǎn);和“)分配第三代碼至每個(gè)代表第三邊界節(jié)點(diǎn)的邊界節(jié)點(diǎn),其中每個(gè)第三邊界節(jié)點(diǎn)連接不能跨越分區(qū)界面以連接一個(gè)內(nèi)部節(jié)點(diǎn)。
[0034]從下面對不同實(shí)施例的描述和有關(guān)附圖中,本發(fā)明的其它方面、優(yōu)勢和實(shí)施例對于本領(lǐng)域技術(shù)人員來說會變得顯而易見。
【附圖說明】
[0035]下面參考所附附圖對本發(fā)明進(jìn)行描述,其中同樣的元素引用同樣的附圖標(biāo)記,并且其中:
[0036]圖1為例示了用于實(shí)施本發(fā)明的系統(tǒng)的框圖。
[0037]圖2A為例示了用于實(shí)施本發(fā)明的方法的一個(gè)實(shí)施例的流程圖。
[0038]圖2B為圖2A中所例示的方法的延續(xù)。
[0039]圖2C為圖2B中所例示的方法的延續(xù)。
[0040]圖2D為圖2C中所例示的方法的延續(xù)。
當(dāng)前第1頁
1 
2 
3 
4