国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于在并行處理器上再因式分解方形矩陣的系統(tǒng)和方法

      文檔序號:6526740閱讀:160來源:國知局
      用于在并行處理器上再因式分解方形矩陣的系統(tǒng)和方法
      【專利摘要】一種用于在并行處理器上再因式分解方形輸入矩陣的系統(tǒng)和方法。在一個實(shí)施例中,該系統(tǒng)包括:(1)矩陣生成器,其可操作為在下和上三角矩陣組合的歸零稀疏模式中嵌入一個置換形式的輸入矩陣,以便產(chǎn)生中間矩陣,其中所述下和上三角矩陣源于對在先矩陣的在先LU因式分解,所述在先矩陣與所述輸入矩陣具有相同的稀疏模式,并且通過重排序處理而將填充和樞紐策略最小化,以及(2)與矩陣生成器關(guān)聯(lián)的再因式分解器,其可操作為使用并行線程來將用零填充的不完全LU因式分解應(yīng)用于所述中間矩陣。
      【專利說明】用于在并行處理器上再因式分解方形矩陣的系統(tǒng)和方法
      【技術(shù)領(lǐng)域】
      [0001]本申請主要涉及并行處理器(也就是具有至少兩個能夠通過協(xié)作來執(zhí)行并行處理的處理器的計算機(jī)),尤其涉及的是用于在并行處理器上將方形矩陣因式分解(refactorizing)成下和上三角矩陣的系統(tǒng)和方法。
      【背景技術(shù)】
      [0002]如果可以有效地對圖形處理器(GPU)之類的并行處理器進(jìn)行編程,那么它們有可能會非常擅于處理數(shù)值算法,尤其是用于直接求解大型稀疏線性系統(tǒng)的算法。
      [0003]稀疏線性系統(tǒng)是具有系數(shù)系數(shù)矩陣的線性方程系統(tǒng)。在計算力學(xué)、地球物理學(xué)、生物學(xué)、電路仿真的上下文以及計算科學(xué)和工程領(lǐng)域的其他眾多的上下文中都會出現(xiàn)此類系統(tǒng)。
      [0004]用于求解稀疏線性系統(tǒng)的最常見的通用直接的技術(shù)是將其系數(shù)矩陣分解成下三角矩陣L和上三角矩陣U的乘積,這種處理被稱為“因式分解”。然后,通過使用常規(guī)的前向和反向替換技術(shù),可以使用L和U三角矩陣來求解該線性系統(tǒng),并且由此獲取稀疏線性系統(tǒng)的解。

      【發(fā)明內(nèi)容】

      [0005]這里的一個方面提供的是一種用于在并行處理器上再因式分解方形輸入矩陣的系統(tǒng)。在一個實(shí)施例中,該系統(tǒng)包括:(I)矩陣生成器,其可操作為在下和上三角矩陣組合的歸零稀疏模式中嵌入一個置換形式的輸入矩陣,以便產(chǎn)生中間矩陣,其中所述下和上三角矩陣源于對在先矩陣的LU因式分解,所述在先矩陣與所述輸入矩陣具有相同的稀疏模式,并且通過重排序處理而將填充和樞紐策略最小化,以及(2)與矩陣生成器關(guān)聯(lián)的再因式分解器(refactorizer),其可操作為使用并行線程來將用零填充的不完全LU因式分解(ILUO)應(yīng)用于所述中間矩陣。
      [0006]這里的另一個方面提供了一種在并行處理器上再因式分解方形矩陣的方法。在一個實(shí)施例中,該方法包括:(1)在下和上三角矩陣組合的歸零稀疏模式中嵌入一個置換形式的輸入矩陣,以及通過重排序來將作為輸入矩陣的填充和樞紐策略最小化,從而產(chǎn)生中間矩陣,其中所述下和上三角矩陣源于對具有相同稀疏模式的在先矩陣的LU因式分解,以及(2)使用并行線程來將用零填充的不完全LU因式分解(ILUO)應(yīng)用于所述中間矩陣。
      [0007]這里的另一個方面提供了一種SIMD(單指令多數(shù)據(jù))處理器。在一個實(shí)施例中,SIMD處理器包括:(I)可操作為處理并行線程的通道,(2)管線控制單元系統(tǒng),其可操作為控制通道中的線程處理,以及(3)通過使用通道和管線控制單元來再因式分解方形輸入矩陣的系統(tǒng),該系統(tǒng)具有:(3a)矩陣生成器,其可操作為在下和上三角矩陣組合的歸零稀疏模式中嵌入一個置換形式的輸入矩陣,并且通過重排序來將作為輸入矩陣的填充和樞紐策略最小化,從而產(chǎn)生中間矩陣,其中所述下和上三角矩陣源于對具有相同稀疏模式的在先矩陣所進(jìn)行的LU因式分解,以及(3b)與矩陣生成器關(guān)聯(lián)的再因式分解器(refactorizer),其可操作為使用并行線程來將用零填充不完全LU因式分解(ILUO)的應(yīng)用于所述中間矩陣。
      【專利附圖】

      【附圖說明】
      [0008]現(xiàn)在將結(jié)合附圖來參考以下描述,其中:
      [0009]圖1是可操作為包含或者執(zhí)行用于在并行處理器上將方形矩陣再因式分解成下和上三角矩陣的系統(tǒng)或方法的SMD處理器的框圖。
      [0010]圖2是用于在并行處理器上將方形矩陣再因式分解成下和上三角矩陣的系統(tǒng)的一個實(shí)施例的流程圖。
      [0011]圖3是用于在并行處理器上將方形矩陣再因式分解成下和上三角矩陣的方法的一個實(shí)施例的框圖。
      【具體實(shí)施方式】
      [0012]如上所述,用于求解稀疏線性系統(tǒng)的最常見的通用方法是將其系數(shù)矩陣分解因式分解成下和上三角矩陣L和U的乘積。在這里可以認(rèn)識到,現(xiàn)有技術(shù)并不適合利用GPU之類的并行處理器的架構(gòu)。[0013]相應(yīng)地,在這里引入了用于將方形矩陣再因式分解成下和上三角矩陣的系統(tǒng)和方法的不同實(shí)施例。通常,這里的不同實(shí)施例可用于加速用于求解如下形式的稀疏線性系統(tǒng)集合的應(yīng)用:
      [0014]Ai xi=fi for i=l,...,k,
      [0015]其中系數(shù)矩陣Ai,右側(cè)的f i,并且解Xi。
      [0016]這里的系統(tǒng)和方法的某些實(shí)施例是當(dāng)(I)系數(shù)矩陣Ai的稀疏模式,(2)用于最小化填充的重排序處理以及(3)用在因數(shù)分解過程中的樞紐策略在所有線性系統(tǒng)中全都保持相同的時候適用的。在這種情況下,所產(chǎn)生的用于每個線性系統(tǒng)的下(Li)和上(Ui)三角因數(shù)的稀疏模式同樣會保持相同。在使用眾所周知的重點(diǎn)應(yīng)用于集成電路的仿真程序(SPICE)來仿真集成電路的過程中,這些狀況將會頻繁出現(xiàn)。
      [0017]在這些特定的實(shí)施例中,LU因式分解僅僅需要在第一次(i=l)執(zhí)行。隨后(i=2,……,k),所要執(zhí)行的僅僅是LU因式分解。由于將LU因式分解應(yīng)用于Li和Ui因數(shù)的稀疏模式不會產(chǎn)生附加填充,因此可以靜態(tài)地分配所述再因式分解所需要的存儲器。由此,LU再因式分解通常要遠(yuǎn)遠(yuǎn)快于LU因式分解。在一些實(shí)施例中,在現(xiàn)代的SMD處理器中可以在數(shù)十秒或數(shù)分鐘的時間里執(zhí)行再因式分解,而因數(shù)分解則有可能需要花費(fèi)好多個小時。
      [0018]由此,在這里可以認(rèn)識到,對于i=2,……,k,在源自第一(i=l)因式分解的歸零下和上三角因數(shù)的稀疏模式中可以嵌入系數(shù)矩陣Ai,SP
      [0019]Mi=Ll (z)+Ul (z)+Ai,
      [0020]其中LI (Z)=Ll以及Ul (Z)=Ul是用零填充的。由于將LU因式分解應(yīng)用于矩陣Li和Ui的處理不會產(chǎn)生附加填充,因此,在這里可以認(rèn)識到,在這個新產(chǎn)生的中間矩陣Mi中可以應(yīng)用ILU0,以便產(chǎn)生系數(shù)矩陣Ai的LU再因式分解。
      [0021]在某些實(shí)施例中,通過嵌入置換矩陣而不是系數(shù)矩陣,可以說明用于將填充和樞紐減至最少的重排序處理,由此:[0022]Mi=Ll (z) +Ul (z) +PT*Ai*Q,
      [0023]其中PT和Q是與用于將第一(i=l) LU因式分解中使用的填充和樞紐減至最少的重排序處理相對應(yīng)的置換矩陣。
      [0024]由此,關(guān)于系數(shù)矩陣Ai的LU再因式分解的問題被改寫成了對于中間矩陣Mi的ILUO的再因式分解,其中i=2,……,k??梢哉J(rèn)識到的是,后者可以在諸如GPU之類的并行處理器上得到有效執(zhí)行。在更詳細(xì)地描述新穎的系統(tǒng)和方法之前,現(xiàn)在將對包含GPU的典型計算系統(tǒng)進(jìn)行描述。
      [0025]圖1是可操作為包含或執(zhí)行用于在并行處理器上將方形矩陣再因式分解成下和上三角矩陣的系統(tǒng)或方法的SMD處理器100的框圖。SMD處理器100包括被組織成線程組104或“包(wrap)”的多線程處理器或核心106。SIMD處理器100包括J個線程組104-1到104-J,其中每一個線程組都具有K個核心106-1到106-K。在某些實(shí)施例中,線程組104-1到104-J可以進(jìn)一步被組織成一個或多個線程塊102。在一個具體的實(shí)施例中,每一個線程組104具有32個核心106。其他實(shí)施例可以在線程組中只包含4個核心以及包含多達(dá)數(shù)萬個核心。某些實(shí)施例將核心106組織成單個線程組104,而其他實(shí)施例則可以具有數(shù)百乃至數(shù)千個線程組104。關(guān)于SMD處理器100的替換實(shí)施例可以僅僅將核心106組織成線程組104,由此忽略線程塊組織等級。
      [0026]SMD處理器100還包括管線控制單元108,共享存儲器110以及與線程組104_1到104-J相關(guān)聯(lián)的邏輯存儲器陣列112-1到112-J。線程運(yùn)行控制單元108通過數(shù)據(jù)總線114來將任務(wù)分發(fā)給不同的線程組104-1到104-J。線程組內(nèi)部的核心106以相互并行的方式運(yùn)行。線程組104-1到104-J通過存儲器總線116來與共享存儲器110進(jìn)行通信。所述線程組104-1到104-J分別通過本地總線118-1到118-J來與本地存儲器112-1到112-J進(jìn)行通信。作為示例,線程組104-J是通過在本地總線118-J上進(jìn)行通信來使用本地存儲器112-J的。關(guān)于SMD處理器的某些實(shí)施例將共享存儲器110的共享部分分配給了每一個線程塊102,并且允許線程塊102內(nèi)部的所有線程組104訪問共享存儲器110的共享部分。某些實(shí)施例包括只使用本地存儲器112的線程組104。很多其他的實(shí)施例包括用于平衡本地存儲器112和共享存儲器110的使用的線程組104。
      [0027]在描述了包含GPU的典型計算系統(tǒng)之后,現(xiàn)在將更詳細(xì)地描述關(guān)于這里的新穎系統(tǒng)和方法的不同實(shí)施例。所述系統(tǒng)和方法的不同實(shí)施例使用了不同的新穎技術(shù)。
      [0028]圖2是用于在并行處理器上將方形矩陣再因式分解成下和上三角矩陣的系統(tǒng)的一個實(shí)施例的框圖。在很多實(shí)施例中,因式分解器210并不是系統(tǒng)的一部分,所述因式分解器可操作為接收作為輸入矩陣的方形矩陣Al,并且通過對該矩陣執(zhí)行LU因式分解來產(chǎn)生下三角矩陣LI和上三角矩陣Ul,此外它還執(zhí)行用于將因式分解中使用的填充和樞紐置換P和Q減至最少的重排序處理。
      [0029]矩陣生成器220與因式分解器210相關(guān)聯(lián),并且可操作為通過在源于第一 LU因式分解的下和上三角矩陣組合的歸零稀疏模式LI (z)+Ul (z)中嵌入置換輸入矩陣PT*Ai*Q來產(chǎn)生中間矩陣Mi,其中i=2,...,k。再因式分解器230與矩陣生成器220相關(guān)聯(lián),其可操作為使用并行線程來對所產(chǎn)生的中間矩陣Mi應(yīng)用ILU0,其中i=2,...,k。
      [0030]在這里應(yīng)該認(rèn)識到,行更新本質(zhì)上是一個高斯消去步驟,其中參考(樞紐)行被用一個乘數(shù)縮放并添加至當(dāng)前行中,以便創(chuàng)建低于主對角線的零值。這些乘數(shù)是代替該更新創(chuàng)建的零值而被計算和保存的。在關(guān)于新穎系統(tǒng)和方法的一些實(shí)施例中,為了探測可用的并行性,列被分組成了等級而不是行。在這里應(yīng)該認(rèn)識到,將行分組成等級的常規(guī)方法不但更為直觀,而且還會使發(fā)現(xiàn)數(shù)據(jù)依存性的處理更為簡單。然而,在這里應(yīng)該認(rèn)識到,將行分組成等級的處理極大阻礙了處理速度。尤其應(yīng)該認(rèn)識到的是,與其他的行相比,接近矩陣底部的行往往具有多出很多的非零元素,由此會使這些行的更新相對較慢。相比之下,如果將列分組成行,那么往往允許我們通過將與底部的行相關(guān)聯(lián)的計算均勻分布在多個列上來實(shí)現(xiàn)更好的工作負(fù)載平衡。通過將列分組成等級,可以顯著提升處理速度,并且有可能將其提升好幾個數(shù)量級。
      [0031]通過將列分組成等級,還可以產(chǎn)生另一個潛在的優(yōu)點(diǎn)。矩陣的右下角可以封裝到密集存儲中,并且可以使用密集LU因式分解(沒有樞紐)來對其進(jìn)行處理。在一個實(shí)施例中,只有在右下角的每一行都包含了足以證明采用密集格式的額外計算的正當(dāng)性的元素的情況下,所述封裝處理才會發(fā)生。
      [0032]在系統(tǒng)和方法的其他實(shí)施例中,矩陣是用合并的壓縮稀疏行/壓縮稀疏列(CSR-CSC)的格式保持的。所合并的CSR-CSC格式同時包含了標(biāo)準(zhǔn)的CSR和CSC格式。其中,CSR格式是常規(guī)格式,并且包含了矩陣值陣列。CSC格式也是常規(guī)格式,但其包含的是指向CSR格式中包含的值的指針,而不是實(shí)際矩陣值。合并的CSR-CSC格式允許在ILUO期間的適當(dāng)位置對采用CSR格式的單個數(shù)值陣列進(jìn)行更新。而CSC格式指針則不需要更新。
      [0033]在系統(tǒng)和方法的其他實(shí)施例中,由于矩陣Mi中的每一行的元素的數(shù)量在早期和晚期會發(fā)生很大變化,因此,分析階段會為每一個等級計算單獨(dú)的網(wǎng)格和塊啟動參數(shù)。
      [0034]在系統(tǒng)和方法的其他實(shí)施例中,所述分析可以在每一級調(diào)度兩個內(nèi)核啟動,而不是使用單個內(nèi)核啟動來處理一個等級(在每一行的X維度具有單個線程塊)。如果啟動兩個內(nèi)核,那么第一內(nèi)核可以更新乘數(shù)(在每一行的X維度上具有單個線程塊),并且第二內(nèi)核可以更新行中的剩余元素(每一行的X維度中具有多個線程塊)。
      [0035]在某些實(shí)施例中,在LU再因式分解的行更新期間會在當(dāng)前行中搜索參考(樞紐)行的元素,而不是在參考(樞紐)行中搜索當(dāng)前行的元素。以這種方式進(jìn)行的搜索將會產(chǎn)生兩個潛在的優(yōu)點(diǎn)。第一,在給出了 Mi的構(gòu)造的情況下,如果參考(樞紐)行中的元素的數(shù)量為“n”,并且當(dāng)前行中的元素的數(shù)量為“m”,那么m≥η。由此,前一種和后一種方法分別包括0(m*log(n))和0(n*log(m))個步驟。由此,后一種方法包含較少的步驟,并且計算成本相對較低。此外,通過構(gòu)造Mi,可以知道當(dāng)前行中始終存在參考(樞紐)行中的元素,由此可以將線程分散度減至最小。
      [0036]圖3是用于在并行處理器上將方形矩陣再因式分解成下和上三角矩陣的方法的一個實(shí)施例的流程圖。該方法始于開始步驟310。在步驟320,對輸入矩陣Al執(zhí)行LU因式分解,以便產(chǎn)生下三角矩陣LI和上三角矩陣U1,以及通過對其執(zhí)行重排序處理來將因式分解中使用的填充和樞紐置換P和Q最小化。在步驟330,對于i=2,……,k,通過在源自在先LU因式分解的下和上三角矩陣組合的歸零稀疏模式LI (z) +Ul (z)中嵌入置換形式的輸入矩陣PT*Ai*Q來產(chǎn)生一個中間矩陣Mi。在步驟340,通過使用并行線程來將ILUO應(yīng)用于所產(chǎn)生的中間矩陣Mi。在結(jié)束步驟350,該方法結(jié)束。
      [0037]本申請的領(lǐng)域的技術(shù)人員將會認(rèn)識到,針對所描述的實(shí)施例的其他更進(jìn)一步的補(bǔ)充、刪除、替換和修改都是可行的。
      【權(quán)利要求】
      1.一種用于在并行處理器上再因式分解方形輸入矩陣的系統(tǒng),包括: 矩陣生成器,其可操作為在下和上三角矩陣的組合的歸零稀疏模式中嵌入所述輸入矩陣的置換形式,以便產(chǎn)生中間矩陣,其中所述下和上三角矩陣源自對在先矩陣的LU因式分解,所述在先矩陣與所述輸入矩陣具有相同的稀疏模式,并且通過重排序處理而將填充和樞紐策略最小化;以及 與所述矩陣生成器關(guān)聯(lián)的再因式分解器,其可操作為使用并行線程來將用零填充的不完全LU因式分解應(yīng)用于所述中間矩陣。
      2.如權(quán)利要求1所述的系統(tǒng),其中所述中間矩陣生成器可操作為將所述置換形式嵌入所述稀疏模式。
      3.如權(quán)利要求1所述的系統(tǒng),其中所述再因式分解器還可操作為對所述輸入矩陣執(zhí)行符號分析,以便將代表其列的獨(dú)立節(jié)點(diǎn)分組成代表所述節(jié)點(diǎn)之間的數(shù)據(jù)依存性的等級。
      4.如權(quán)利要求1所述的系統(tǒng),其中所述再因式分解器還可操作為使用合并的壓縮稀疏行-壓縮稀疏列格式來執(zhí)行所述用零填充的不完全LU因式分解。
      5.如權(quán)利要求1所述的系統(tǒng),其中所述再因式分解器還可操作為在定義所述并行線程的配置中計算特別針對每一個等級的網(wǎng)格和塊啟動參數(shù)。
      6.如權(quán)利要求1所述的系統(tǒng),其中所述再因式分解器還可操作為啟動所述并行線程,以此作為所述后續(xù)矩陣的每等級中的兩個同時內(nèi)核,其中一個所述內(nèi)核可操作為更新所述等級中的乘數(shù),并且另一個所述內(nèi)核可操作為更新所述等級中的剩余元素。
      7.如權(quán)利要求6所述的系統(tǒng),其中所述再因式分解器還可操作為使用SMD處理器來啟動所述并行線程。
      8.一種SMD處理器,包括: 可操作為處理并行線程的通道; 可操作為控制所述通道中的線程處理的管線控制單元系統(tǒng);以及 通過使用所述通道和所述管線控制單元來再因式分解方形輸入矩陣的系統(tǒng),包括: 矩陣生成器,其可操作為在下和上三角矩陣組合的歸零稀疏模式中嵌入所述輸入矩陣的置換形式,以便產(chǎn)生中間矩陣,其中所述下和上三角矩陣源于對在先矩陣的LU因式分解,所述在先矩陣與所述輸入矩陣具有相同的稀疏模式,并且通過重排序處理而將填充和樞紐策略最小化;以及 與所述矩陣生成器關(guān)聯(lián)的再因式分解器,其可操作為將并行線程傳送到所述管線控制單元,以便將用零填充的不完全LU因式分解應(yīng)用于所述中間矩陣。
      9.如權(quán)利要求8所述的處理器,其中所述中間矩陣生成器可操作為將所述置換形式嵌入所述稀疏模式。
      10.如權(quán)利要求8所述的處理器,其中所述再因式分解器還可操作為對所述方形矩陣執(zhí)行符號分析,以便將代表其列的獨(dú)立節(jié)點(diǎn)分組成代表所述節(jié)點(diǎn)之間的數(shù)據(jù)依存性的等級。
      【文檔編號】G06F17/16GK103914433SQ201310746800
      【公開日】2014年7月9日 申請日期:2013年12月30日 優(yōu)先權(quán)日:2013年1月9日
      【發(fā)明者】馬克西姆·瑙莫夫, 莎蘭彥·柴特勒爾, 簡龍升, 羅伯特·斯特佐得卡, 菲利普·范德爾莫爾斯赤 申請人:輝達(dá)公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1