專利名稱:方程的線性系統的處理的制作方法
技術領域:
本發明一般涉及方程的線性系統的處理。提供用于方程的線性系統的混合精度處理以生成高精度解的設備和計算機程序。
背景技術:
現代的處理器典型地能夠以高精度和低精度執行處理操作。精度確定可以用于表示浮點數的小數部分的位數。此處的術語“高”和“低”簡單地用于區分兩種不同的精度等級(以及由此確定“小數位”的數量),一個等級比另一等級要高,但是并不暗示在各個精度等級上進行任意特定的限制。因此,在低和高精度中使用的小數位的實際數量可能從一個系統到另一系統進行實質上的變化。例如,當前的IEEE標準為低精度(也稱為“單精度”) 處理指定32位,等于在小數點之后具有8個小數位,以及為高精度(或“雙精度”)處理指定64位,等于在小數點之后具有16個小數位。然而,許多嵌入式系統使用不同的規范,例如8位和16位,或10和20位。根據處理器的類型,由專用處理邏輯或由相同處理器硬件的適當軟件控制來實現低精度和高精度操作。任意一種方式,低精度操作不太復雜并且顯著地快于高精度操作。在復雜任務需要高精度結果時,因此可以使用“混合-精度”方法。通過混合精度處理,可以按低精度執行任務的一些部分,并且按高精度執行其他部分,而獲得高精度的整體結果。作為多種科學和工程應用的基礎的這種處理任務的實例是方程的線性系統的解。這個任務需要處理器生成與維度nX 1的向量χ的元素相對應的η個高精度數據元素,使得Ax = b其中A是維度nXn的對稱正定矩陣并且b是維度nX 1的向量。通過必須被存儲在存儲器中并且在需要處理操作時被存取的nXn高精度數據元素來定義矩陣A。右側向量 b類似地由存儲在系統存儲器中的η個高精度數據元素來定義。當矩陣A是稠密的,生成與解向量χ相對應的高精度數據元素的任務是高度處理器密集的。特別地,當系數矩陣A的所有元素非零,任務需要處理器中的多個算術操作,其隨著矩陣A的維度η立方地增長。此外,上述任務的混合精度方法已經基于矩陣的分解(變換)。處理操作的基本步驟如下。首先,必須通過nXn高精度數據元素來構建矩陣A并且矩陣A必須存儲在系統存儲器中。于是降級(四舍五入)矩陣A在系統存儲器中產生低精度拷貝Ap這是通過適當的四舍五入處理將矩陣A的高精度數據元素轉換成各個低精度數據元素來完成的。接下來,處理器實現分解過程,其中矩陣A1被分解為A1 = LLT其中L是下三角矩陣并且Lt表示其移相。通過喬列斯基(Cholesky)分解來執行變換。這種技術是現有技術中公知的并且不需要在此處詳細地討論。重要的是要注意,當可以通過低精度硬件來實現分解時,這種分解的成本隨著維度η的立方來增長。為生成具有系數矩陣L和Lt的線性系統的向量解的數據元素的下面的處理于是需要隨著矩陣維度η 二次方增長的成本。這是通過使用如下的迭代細化方法來完成的。
最初,通過求解L(LtX1) = bx來獲得用于Ax = b的低精度合適解向量X1,其中ID1 是具有與低精度向量b的nxl數據元素相對應的元素的nxl向量。通過適當的轉換過程向各個高精度數據元素促進向量xl的低精度數據元素,以獲得當前解向量X。這可以通過多種方式來完成,例如通過在每個例子中選擇最接近的高精度值。于是,對應于當前nxl的剩余(誤差)向量r,生成η個高精度數據元素,使得r = b-Ax處理器于是執行迭代處理直到收斂(1)生成與線性系統L(LtZ) = rx中的nxl向量ζ相對應的低精度數據元素,其中 rx對應于轉換為低精度的當前誤差向量r ;(2)將向量ζ的數據元素轉換成高精度元素以獲得高精度向量ζ ;(3)更新當前高精度解向量χ的數據元素使得χ = x+zh ;(4)更新當前高精度誤差向量r的數據元素使得r = b-Ax ;(5)重復步驟1到4直到檢測到收斂(典型地,當r足夠或不進行處理)。在上面的過程中,喬列斯基分解需要在外部的存儲器中形成的矩陣A。然后,在接下來的操作中每次計算高精度誤差向量r時由處理器從存儲器提取這個矩陣。在典型的應用中,矩陣A可以非常大,例如維度η = 10,000或甚至更大,導致在處理器和存儲器子系統之間的相當大的業務量。由于所要求的處理器協作等級以及現有技術中沒有很好的等級, 矩陣變換過程難以在并行處理環境中實現。如上面注意的之外,整體復雜度仍然與矩陣A 的維度η成立方關系。這些和其它問題限制整體處理效率并且會限制能夠處理許多應用的處理要求的硬件類型。實際上,僅立方復雜度就限制了通過基于當前單個和并行處理器的計算系統可以處理的問題的大小。
發明內容
本發明的一個方面提供了一種設備,用于生成與滿足Ax = b的ηΧ 1向量χ相對應的η個高精度數據元素,其中A是與ηΧη個預定的高精度數據元素相對應的對稱的、正定ηΧη矩陣并且b是與η個預定的高精度數據元素相對應的nXl向量。設備包括存儲器,用于存儲定義所述矩陣A和向量b的數據元素的輸入數據,以及控制邏輯,適用于(a)實現用于從所述輸入數據生成與滿足Ap1 = bx WnXl向量X1相對應的η個低精度數據元素的第一迭代處理;其中A1是與矩陣A的ηΧη個數據元素相對應的低精度 ηΧη矩陣并且1 是與向量b的ηΧ 1個數據元素相對應的低精度ηΧ 1向量,在出現第一收斂條件時控制邏輯終止第一迭代處理;(b)將向量&的數據元素轉換成高精度數據元素以獲得當前的解向量X ;(c)實現用于生成與基于向量b和向量積Ax之間的差異的nXl糾正向量相對應的η個低精度數據元素的第二迭代處理,在出現第二收斂條件時控制邏輯終止第二迭代處理;(d)從所述糾正向量的η個低精度數據元素產生nX 1更新向量u的各個高精度數據元素;(e)更新所述當前解向量χ的數據元素,使得χ = x+u ;以及(f)執行步驟(C)到(e),直到出現第三收斂條件。
替代現有方法的基于喬列斯基分解的技術,本發明的實施方式實現用于在步驟 (a)中生成解向量&的低精度數據元素的迭代處理,并且還實現用于生成糾正向量(步驟 (C))的低精度數據元素的迭代處理,其用于更新當前高精度解向量X。在這個過程中不需要矩陣變換,但是優勢是仍然可以獲得低精度處理的加速性能。每個迭代細化步驟引起對于矩陣大小η的平方成本,僅在與現有系統的立方成本相比較的具有矩陣大小η的平方的最壞的方式時,處理操作的整體成本增加。此外,可以僅使用矩陣A與另一向量(步驟(a) 中的&和步驟(c)中的糾正矢量)的矩陣矢量積來實現整個處理操作。這樣避免了與上面討論的基于變換的處理相關聯的并行處理問題。實際上,基于矩陣向量積的操作特別愿意并行實現,其中本發明的實施方式可以按大規模并行的實現方式來實現。除了這樣之外, 矩陣A的形成并不是處理設備的操作的前提條件。如上所解釋的,在現有技術中,矩陣A必須首先被構建在存儲器中并且然后在每次迭代中為生成誤差向量r而從存儲器中獲取矩陣A。相對的,甚至在不形成矩陣A的情況,也可以生成下本方面實施方式中所需要的向量積。特別地,常見的做法是將矩陣A定義為某個函數,其中具有A的矩陣向量積的計算是簡單的且計算便宜的。這將在下面進行進一步介紹,但是由于可以避免在每次迭代中從存儲器裝載所執行的矩陣,效果是實質上簡化處理并且顯著地降低存儲子系統的業務量。通過使用步驟(a)和(C)中的迭代處理進一步增強操作效率。在之前的系統中, 獲得對于迭代處理中每個路徑中的特定精度的基于分解LLt的線性系統的解。例如,用于ζ 的L(Ltz) = rx的解涉及固定數量的步驟并且產生定義的精度的向量z,即具有與可用于低精度處理的比特的數量而計算的值相應的數據元素。這樣增加了比迭代細化要求的理論屬性更多的限制精度要求。在出現預定的收斂條件時,控制邏輯終止上述步驟(a)和(c)的每個迭代處理,并且這樣允許本發明的實施方式自動地適應所需要的精度。收斂條件典型地定義為預定的最大數量的解的收斂或迭代的完成(實現了根據預定公差的解,或檢測迭代之間沒有進展)。因此,不僅是迭代處理能夠使用快速、低精度的邏輯,還實現這些過程立即終止所需要的精度的解。這樣是無法利用標準的基于矩陣因素分解的系統來實現的。雖然控制邏輯可能適于以各種方式執行步驟(C)和(d),這些步驟優選地基于誤差向量r,其依賴于向量b和向量積Ax之間的差異,并且特別地基于具有A的矩陣向量積依賴于誤差向量r的糾正向量的迭代生成。因此,在優選的實施方式中,控制邏輯適于在步驟(b)中生成當前解向量χ之后,生成與指示向量b和向量積Ax之間的差異的當前nX 1誤差向量r相對應的η個數據元素;執行步驟(c),使得具有所述糾正向量的矩陣A1的向量積依賴于誤差向量r ;以及在步驟(d),通過將糾正向量的數據元素轉換成高精度數據元素來生成更新向量 u的數據元素。優選地,通過控制邏輯以高精度生成誤差向量!·的數據元素使得r = b-Ax,以及于是將誤差向量r的數據元素轉換成各個低精度數據元素以獲得低精度誤差向量Γι。這樣于是可以用于步驟(c)的第二迭代處理,使得具有糾正向量的矩陣A1的向量積等于低精度誤差向量IV于是,在步驟(e),在更新了當前解向量χ的數據元素之后,控制邏輯可以更新當前誤差向量r的數據元素,使得r = b-Ax。在這種實施方式中,第三收斂條件方便地依賴于當前誤差向量r。還可以設想替代方式,在優選的實施方式中,第一和第二迭代處理中的每一個包括已知的共軛梯度方法。一般地,各種收斂條件可以被設置為給定應用所需要的,但是這些條件優選地依賴于在考慮中的預定數量的迭代處理的路徑的完成和/或檢測的結果解的收斂(實現向量對預定公差的解,或者在過程的連續路徑中沒有檢測進展)。可以在系統存儲器中各自預定矩陣A和向量b的預定數據元素,或者可以由輸入數據按任意傳統方式來定義。例如,如之前所提及的,定義了矩陣A的數據元素的輸入數據可以包括定義在任意nX 1向量上的矩陣A的應用函數F,其中1彡i彡η并且1彡j彡η 分別是矩陣A元素的行和列索引。在這種情況下,控制單元適于使用所述函數F來執行步驟 (a)到(e),用于特別快速地和計算廉價地生成與A的矩陣向量積。特別地,涉及矩陣元素 a(i,j)的處理操作可以典型地完全在處理器高速緩存器中完成,并且通過生成利用A的矩陣向量積獲得的存儲器業務可以比之前的系統顯著地減少。這將會在下面進一步地介紹。使用共享的和/或各自分配的存儲器資源,體現本發明的設備可以通過一個或多個處理器來實現。為了更有效率的操作,以及特別是在復雜的操作中,控制邏輯理想地包括多個處理器,其被并行地安排以全部并行地實現步驟(a)到(e)。一般來說,處理器可以使用專用的低和高精度硬件或使用可被軟件配置以用于低和高精度操作的通用硬件。在使用多個處理器的情況下,它們可以被集成到單個芯片或分布在基于單一處理器和/或多處理器的計算系統的不同芯片上,例如,在分布式計算系統的多個計算機上。類似地,在體現本發明的設備的操作中使用的存儲器可以包括一個或多個類型的存儲器的一個或多個組件, 從本地處理器高速緩存器到主存儲器(諸如硬盤或備份存儲媒介),以及所述存儲器或組件可以全部或部分地通過控制邏輯的不同處理器來共享。本發明的第二方面提供了一種計算機程序,用于使計算機生成與滿足Ax = b的 nX 1向量χ相對應的η個高精度數據元素,其中A是與ηΧη個預定的高精度數據元素相對應的對稱的、正定ηΧη矩陣并且b是與η個預定的高精度數據元素相對應的nX 1向量。 計算機程序包括程度代碼裝置,用于促使計算機訪問輸入數據,其存儲于計算機的存儲器中并且定義所述矩陣A和向量b的數據元素,以及(a)實現用于從所述輸入數據生成與滿足A1X1 = Id1的nXl向量X1相對應的η個低精度數據元素的第一迭代處理;其中A1是與矩陣A的ηΧη個數據元素相對應的低精度 ηΧη矩陣并且、是與向量b的nXl個數據元素相對應的低精度nXl向量,在出現第一收斂條件時終止第一迭代處理;(b)將向量&的數據元素轉換成高精度數據元素以獲得當前的解向量χ ;(c)實現用于生成與基于向量b和向量積Ax之間的差異的nX 1糾正向量相對應的η個低精度數據元素的第二迭代處理,在出現第二收斂條件時終止第二迭代處理;(d)從所述糾正向量的η個低精度數據元素產生nX 1更新向量u的各個高精度數據元素;(e)更新所述當前解向量χ的數據元素,使得χ = x+u ;以及(f)執行步驟(C)到(e),直到出現第三收斂條件。應當理解的是,術語“計算機”用于大部分通用場景并且包括具有用于實現計算機程序的數據處理能力的任意設備、組件或系統,并且因此可以包括如上所述的單個設備一個或多個處理器或設備的分布式系統。此外,體現本發明的計算機程序可以構成獨立的程序或程序集、或者可以是大規模程序或程序集的一部分,以及可以提供例如,體現為計算機刻度媒介,例如用于載入計算機的磁盤或電子傳輸。計算機程序的程序代碼裝置可以包括按照任意語言、代碼或符號的旨在促使計算機執行正在考慮的方法的指令集的任意表達式,直接地或在(a)與另一語言、代碼或符號的會話之后,以及(b)以不同的材料形式進行復制。通常來說,此處介紹的通過參考本發明的一個方面的實施方式的特征的情況下, 相應特征可以提供在本發明的另一方面的實施方式中。
現在將通過實例的方式,參照附圖來介紹本發明的優選實施方式,其中圖1是體現本發明的處理設備的示例性框圖;圖2是示出了圖1的設備的操作的流程圖;圖3示出了體現本發明的設備的示例性實現方式;圖4是將本發明實施方式的運行時間與現有技術系統進行比較的示意圖;圖5是示出了本方面實施方式和現有技術系統中使用的存儲器的表格。
具體實施例方式圖1是體現本發明的處理設備的簡化示意圖,其指示要被介紹的操作中涉及的主要組件。設備1包括在圖中表示為控制器2的控制邏輯,以及此處以簡化形式由高速緩存存儲器4和主存儲器5表示的存儲器3。控制器2的控制邏輯包括高和低精確邏輯,其中控制器2可以按高和低精度來執行處理操作。一般來說,可以在硬件或軟件或它們的結合中實現控制器的控制邏輯。在本實施方式中,然而,由執行所介紹的功能的軟件配置的一個或多個處理器核心來執行邏輯。通過此處的說明所屬領域的技術人員容易了解合適的軟件。 雖然一般來說,要介紹的高和低精度操作可以由設備1的不同處理器來執行,在本實例中, 我們假設控制器1的處理器在軟件的控制下單獨地操作以按高或低精度執行操作。此處的高速緩存存儲器4代表控制器2的主要工作存儲器,例如級別1高速緩存存儲器。主存儲器5代表控制器2可存取的存儲器子系統的剩余者并且可以包括各種類型的存儲器,例如, 附加的高速緩存級別、硬盤和備份存儲媒體。設備1適于實現與nxl向量χ相應的用于生成η個高精度數據元素的過程,由下面的定義來表示方程的線性系統Ax = b此處,A是維度為nXn的對稱正定稠密矩陣并且b是nXl的向量。由存儲器5 中存儲的輸入數據來定義與矩陣A的元素相對應的nXn高精度數據元素以及與向量b的元素相對應的η個高精度數據元素。更為具體地,此處直接通過標量函數F() =a(i, j) 來定義矩陣A的高精度數據元素,其中a(i,j)表示具有行索引i(l < i Sn)和列索引 j (1 ^ j ^ η)的元素。在本實例中,我們假設在存儲器5中直接地定義向量b的數據元素。存儲器5還保持指定定義在處理操作中使用的三個收斂條件的參數的數據C1Gc1, (I1)、 C2 (k2, d2)和C3 (p,c)。這些參數將在下面進行解釋。在圖2的流程圖中示出了由設備1執行的生成解向量χ的高精度數據元素的關鍵步驟。操作在步驟10處開始,典型地以響應于通過設備的1/0(輸入/輸出)接口(未示
9出)的操作提示符或來自另一應用的請求,是運行在控制器2的處理器上還是在與控制器2 進行通信的遠程處理器上。在步驟11,控制器2訪問主存儲器1以獲取高精度函數FO并且在高速緩存存儲器4中創建低精度拷貝F1O。這可以通過降級、或四舍五入等已知方式來完成高精度函數到低精度的表示。類似地,控制器1獲取向量b的高精度數據元素并且將這些降級為各個低精度元素以生成低精度向量b”基于存儲容量和維度n,可以在高速緩存器4中保留或在主存儲器5中預存儲向量Id1的數據元素。接下來,在步驟12中,控制器1執行用于生成與最初的、近似的nX 1解向量&相對應的η個低精度數據元素的第一迭代處理的一個路徑,滿足
此處,A1是函數F1O所定義的nXn低精度矩陣。在本實施方式中,為第一迭代處理使用的技術是共軛梯度(CG)處理。CG處理是用于方程的線性系統的解的公知技術,并且不需要在此處進一步介紹。控制器2僅使用函數F1O和向量Id1的元素來執行必要的計算, 可以根據需要從主存儲器5向高速緩存器4回調向量Id1的元素。在CG處理的一個路徑之后獲得的向量A的低精度元素存儲在存儲器3中,并且操作前進到步驟13,其中控制器2對路徑計數器Px進行加1。在判斷步驟14,控制器2檢查當前路徑計數Px是否等于預設的參數h,其指示第一迭代處理的允許路徑的最大數量。假設不是(在步驟14決定“否” (N)), 控制器2于是在判斷步驟15判斷解&的收斂是否已經出現。如果兩個事件中的任一個出現,則此處檢測為收斂。第一事件是已經到達為&預設的下降公差屯。S卩,控制器2通過數量> Cl1檢查用于&的當前解是否與第一路徑中獲得的解不同,其中,下降公差Cl1典型地指百分數改變。第二事件是在過程的這個路徑中沒有實現進展,即,X1的解與之前路徑中獲得的解沒有改變。假設在步驟15沒有檢測到收斂,操作返回到步驟12用于解處理的另一路徑。所述處理因此迭代直到出現定義為如在步驟14中完成的Ic1路徑的第一次出現的第一收斂條件C1或在步驟15處識別的收斂為止。在檢測收斂條件C1 (在步驟14或步驟15處判斷“是”⑴),控制器2終止第一迭代處理。在完成第一迭代處理時,操作前進到步驟16,其中控制器2創建第一迭代處理所輸出的解向量^c1的高精度拷貝。這可以通過將向量&的低精度數據元素轉換成各個高精度數據元素以獲得存儲器3中存儲的當前的、高精度解向量χ的已知方式來完成。接下來, 在步驟17,控制器2生成滿足如下條件的與當前nxl誤差向量r相對應的η個高精度數據元素r = b-Ax根據需要可以使用函數F ()和可以向高速緩存器4回調的向量χ和b的元素來執行上述操作。誤差向量r的結果高精度元素與這個誤差向量的低精度拷貝Γι 一起存儲在存儲器3中,其在步驟18通過將向量r的元素轉換為各個低精度數據元素來生成。在步驟19,控制器2于是執行用于生成滿足如下公式的與nxl糾正向量ζ相對應的η個低精度數據元素的第二迭代處理的第一路徑A1Z = T1再次,在本實例中共軛梯度技術用于第二迭代處理,并且控制器2可以使用函數 F1O來執行必要的計算。將過程的一個路徑之后獲得的向量ζ的低精度元素存儲在存儲器 3中,并且操作前進到步驟20,其中控制器2對路徑計數器Ρζ進行加1。在判斷步驟21,控
10制器2檢查當前路徑技術Pz是否等于預設參數1 ,其指示第二迭代處理的允許路徑的最大數量。如果否,控制器2在判斷步驟22確定解ζ的收斂是否已經出現。如果(1)已經到達用于ζ的預設下降公差4,或者(2)在處理的這個路徑中沒有實現進展,即由于之前的路徑未改變用于ζ的解,則這里再次檢測到收斂。假設在步驟22沒有檢測到收斂,操作返回到步驟19用于解處理的另一路徑。處理因此迭代,直到定義為在步驟21處完成的1 路徑的第一次出現的第二收斂條件的出現或者在步驟22處識別到收斂。在檢測到收斂條件C2 (在步驟21或步驟22的Y)時,控制器2終止第二迭代處理。在完成第二迭代處理時,操作前進到步驟M,其中控制器2將糾正向量ζ的數據元素轉換成各個高精度數據元素,以產生存儲在存儲器3中的高精度更新向量U。接下來,在步驟25,控制器2更新當前高精度解向量χ的數據元素,使得χ = x+u并且在存儲器3中存儲更新的解X。在更新了解向量χ之后,控制器2在步驟沈中更新當前高精度誤差向量r,使得r = b-Ax,其中,使用定義矩陣A的函數FO再次執行計算。在存儲器3中存儲新向量r的高精度元素,并且操作前進到步驟27,其中控制器2對用于第三迭代處理的路徑計數器& 增加1。在判斷步驟觀,控制器2檢查當前路徑計數ρ,是否等于預設參數p,其指示第三迭代處理的允許路徑的最大數量。如果否,控制器2在判斷步驟四判斷解r的收斂是否已經出現。如前,如果(1)已經達到用于r的預設公差,或者(2)從處理的前述路徑以來用于 r的解沒有實現進展,則檢測到收斂。在這種情況下,公差c指定誤差閾值,其中歐幾里得 (Euclidean)規范小于c的誤差向量r被視為其所要求的公差內。假設在步驟四沒有檢測到收斂,操作返回到步驟18用于第三迭代處理的另一路徑,再次要求用于新誤差向量r的第二迭代處理的執行。步驟18至四的處理因此迭代直到出現被定義為在步驟觀處完成的ρ路徑的第一次出現的第三收斂條件C3或者在步驟四處被識別的誤差向量r的解的收斂。在檢測到收斂條件C3 (在步驟觀或四的是)時,控制器2終止第三迭代處理。在步驟30,將對應于最終解向量χ的高精度數據元素輸出到發起所述處理的運算器或應用,并且處理操作完成。前述設備為方程的線性系統的解提供優良的操作效率,甚至在矩陣A是稠密的并且維度η非常大的情況下。設備利用快速、低精度處理并且處理操作的復雜度僅是0(kn2), 對于kl = k2 = k。這與之前介紹的引發成本ο (η3)現有系統有明顯的對照。注意到,在上述處理中所有的涉及矩陣A或A1的計算僅要求具有另一向量的A或 A1的矩陣向量積。這些計算不要求矩陣A的先有信息,但是可以由控制器2僅適當地使用函數FO或&()和根據需要可以從主處理器5向高速緩存器5回調的正在考慮的向量元素來執行。那就是,涉及矩陣A(或A1)必要的處理操作可以全部在處理器高速緩存器中執行。與之前介紹的先有方法相比,這樣顯著地降低了控制器2的處理器和存儲子系統之間的業務量。特別地,在上面的實施方式中,具有A(或A1)的矩陣向量積的計算僅需要0(kn) 次存儲移動,其中通過相比較k典型地小于維度η。相對的,現有方案要求在分解之前在系統存儲器中形成矩陣Α。這個矩陣被分解為A = LLt,其中L是具有Ο(ηΛ)個元素的下三角矩陣。以低精度存儲的矩陣L用于所有的解實例。高精度的原始矩陣A適用于誤差的計算。因此,在現有系統中,0(n2)個數據需要在所述過程的每個迭代細化步驟中從主存儲器移動到處理器。定義三個收斂條件C1Gi1, Cl1KC2(I^d2) *C3(p,c)的參數可以被設置為根據在給定應用中所需要的準確度的要求。在優選的實施方式中,為了實現的便利選擇& = k2 = k, 其中在第一和第二迭代處理中路徑的最大數量是相同的。注意到,與現有系統中計算誤差的過程不同,這些過程不需要完全地朝向誤差向量r來解決,但是可以自動地適應所要求的準確度。如之前所介紹的,可以有并行操作的多個處理器來實現設備1,這些處理器一起實現上面介紹的處理操作。圖3示出了這種實施方式的簡單實例。此處,通過多個處理器來實現控制器2的功能,在具有各個級別一個(Li)高速緩存器的情況下,通過總線接口(I/F) 與共享存儲器子系統繼續通信。由于處理操作是基于矩陣向量積的,所使用的處理器數量可以使較大的。這種大量的并行實現方式提供優良的操作效率。圖4用兩個不同的矩陣維度η的值和各種數量的并行處理器來比較上面介紹的現有系統和本發明實施方式的運行時間。垂直軸對應于運行時間并且水平軸對應于使用的處理器的數量。矩陣大小η的兩個值為32768和49152。以實線示出的上面的軌跡對與現有方案對應,并且以虛線示出的下面的軌跡對與本發明的實施方式相對應。注意到,垂直軸的量度是對數的。直接清楚地是,本發明的實施方式提供實質上的改進,減少運行時間至少一個量級。本發明的實施方式還提供明顯的存儲器使用和帶寬改進。圖5的表格指示了使用如上所述的現有方案和本發明的實施方式的、用于矩陣A的各種大小的、誤差向量r的迭代細化的每個步驟的按G字節的存儲器使用(所要求的帶寬)。所述表格中頂部行給出利用不同值η的現有系統的結果。下面的四行給出所介紹的實施方式中Ic1 = 1 = k的不同值的結果。通過本發明的實施方式所實現的顯著改進是非常明顯的。應當明白的是,可以對上面介紹的示例性實施方式做出許多改變和改進。通過實例的方式,用于迭代處理的收斂條件會依賴于那些指定的不同集合的事件并且可以按各種方式依賴于這些事件的組合。然而,優選的實施方式總是指定用于每個過程的最大迭代數量。其中為收斂條件指定公差,這將會以給定應用所需要的各種方式來定義。同樣,當在上面的第一和第二迭代處理中使用共軛梯度方法時,如果需要此處可以使用用于方程的線性系統的其它迭代解決技術。在不脫離本發明范圍的情況下,可以對所介紹實施方式做出許多其它的改變和改進。
權利要求
1.一種設備(1),用于生成與滿足々1 = 13的11\1向量χ相對應的η個高精度數據元素,其中A是與ηΧη個預定的高精度數據元素相對應的對稱的、正定ηΧη矩陣并且b是與 η個預定的高精度數據元素相對應的nXl向量,設備(1)包括存儲器(3),用于存儲定義所述矩陣A和向量b的數據元素的輸入數據,以及控制邏輯O),適用于(a)實現用于從所述輸入數據生成與滿足A1X1= I3l的nX 1向量X1相對應的η個低精度數據元素的第一迭代處理;其中A1是與矩陣A的ηΧη個數據元素相對應的低精度ηΧη 矩陣并且h是與向量b的ηΧ 1個數據元素相對應的低精度ηΧ 1向量,在出現第一收斂條件時控制邏輯( 終止第一迭代處理;(b)將向量X1的數據元素轉換成高精度數據元素以獲得當前的解向量χ;(c)實現用于生成與基于向量b和向量積Ax之間的差異的nX1糾正向量相對應的η 個低精度數據元素的第二迭代處理,在出現第二收斂條件時控制邏輯終止第二迭代處理;(d)從所述糾正向量的η個低精度數據元素產生ηX 1更新向量u的各個高精度數據元素;(e)更新所述當前解向量χ的數據元素,使得χ= x+u ;以及(f)執行步驟(c)到(e),直到出現第三收斂條件。
2.根據權利要求1所述的設備(1),其中所述控制邏輯⑵適于在步驟(b)中生成當前解向量χ之后,生成與指示向量b和向量積Ax之間的差異的當前nX 1誤差向量r相對應的η個數據元素;執行步驟(c),使得具有所述糾正向量的矩陣A1的向量積依賴于誤差向量r ;以及在步驟(d),通過將糾正向量的數據元素轉換成高精度數據元素來生成更新向量u的數據元素。
3.根據權利要求2所述的設備(1),其中所述控制邏輯(2)適于 生成高精度的誤差向量r的數據元素,使得r = b-Ax ;將誤差向量r的數據元素轉換成各個低精度數據元素以獲得低精度誤差向量Γι ; 執行步驟(c),使得具有所述糾正向量的矩陣~的向量積等于低精度誤差向量。;以及在步驟(e),在更新當前解向量χ的數據元素之后,更新當前誤差向量r的數據元素使得 r = b-Ax ;其中第三收斂條件依賴于當前誤差向量r。
4.根據前述權利要求中任意一項所述的設備(1),其中第一收斂條件依賴于以下內容的至少一個,或第一次出現完成預定數量的第一迭代處理的路徑; 實現向量X1對預定公差的解;以及第一迭代處理的連續路徑中未檢測到用于向量X1的解的改變。
5.根據前述權利要求中任意一項所述的設備(1),其中第二收斂條件依賴于以下內容的至少一個,或第一次出現完成預定數量的第二迭代處理的路徑; 實現糾正向量對預定公差的解;以及第一迭代處理的連續路徑中未檢測到用于糾正向量的解的改變。
6.根據前述權利要求中任意一項所述的設備(1),其中第三收斂條件依賴于以下內容的至少一個,或第一次出現完成預定數量的步驟(c)到(e)的路徑;實現用于基于當前解向量χ的向量對預定公差的解;以及步驟(c)到(e)的連續路徑中未檢測到用于依賴于當前解向量χ的所述向量的解的改變。
7.根據權利要求6和3所述的設備(1),其中依賴于當前解向量χ的所述向量包括當前誤差向量r。
8.根據前述權利要求中任意一項所述的設備(1),其中定義矩陣A的數據元素的所述輸入數據包括定義在任意nXl向量的元素上每個矩陣A元素a(i,j)的應用的函數F,其中1 < i < η并且1 < j < η分別是矩陣A元素的行和列索引,控制單元(2)適于使用所述函數F來執行步驟(a)到(e)。
9.根據前述權利要求中任意一項所述的設備(1),其中第一迭代處理包括共軛梯度方法。
10.根據前述權利要求中任意一項所述的設備(1),其中第二迭代處理包括共軛梯度方法。
11.根據前述權利要求中任意一項所述的設備(1),其中控制邏輯( 包括多個處理器,其被安排共同地并行操作以實現步驟(a)到(e)。
12.—種計算機程序,用于使計算機生成與滿足Ax = b的nXl向量χ相對應的η個高精度數據元素,其中A是與ηΧη個預定的高精度數據元素相對應的對稱的、正定ηΧη矩陣并且b是與η個預定的高精度數據元素相對應的ηΧ 1向量,計算機程序包括程序代碼裝置,用于促使計算機訪問輸入數據,其存儲于計算機的存儲器( 中并且定義所述矩陣A和向量b的數據元素;以及(a)實現用于從所述輸入數據生成與滿足A1X1=Id1 WnXl向量X1相對應的η個低精度數據元素的第一迭代處理;其中A1是與矩陣A的ηΧη個數據元素相對應的低精度ηΧη 矩陣并且h是與向量b的ηΧ 1個數據元素相對應的低精度ηΧ 1向量,在出現第一收斂條件時終止第一迭代處理;(b)將向量X1的數據元素轉換成高精度數據元素以獲得當前的解向量χ;(c)實現用于生成與基于向量b和向量積Ax之間的差異的nX1糾正向量相對應的η 個低精度數據元素的第二迭代處理,在出現第二收斂條件時終止第二迭代處理;(d)從所述糾正向量的η個低精度數據元素產生ηX 1更新向量u的各個高精度數據元素;(e)更新所述當前解向量χ的數據元素,使得χ= x+u ;以及(f)執行步驟(c)到(e),直到出現第三收斂條件。
13.根據權利要求12所述的計算機程序,包括程序代碼裝置,用于促使計算機 在步驟(b)中生成當前解向量χ之后,生成與指示向量b和向量積Ax之間的差異的當前nX 1誤差向量r相對應的η個數據元素;執行步驟(c),使得具有所述糾正向量的矩陣Al的向量積依賴于誤差向量r ;以及在步驟(d),通過將糾正向量的數據元素轉換成高精度數據元素來生成更新向量u的數據元素。
14.根據權利要求13所述的計算機程序,包括程序代碼裝置,用于促使計算機 生成高精度的誤差向量r的數據元素,使得r = b-Ax ;將誤差向量r的數據元素轉換成各個低精度數據元素以獲得低精度誤差向量Γι ; 執行步驟(c),使得具有所述糾正向量的矩陣4工的向量積等于低精度誤差向量。;以及在步驟(e),在更新當前解向量χ的數據元素之后,更新當前誤差向量r的數據元素使得 r = b-Ax ;其中第三收斂條件依賴于當前誤差向量r。
15.根據權利要求12到14中任意一項所述的計算機程序,其中第一收斂條件依賴于以下內容的至少一個,或第一次出現完成預定數量的第一迭代處理的路徑;實現向量X1對預定公差的解;以及第一迭代處理的連續路徑中未檢測到用于向量&的解的改變。第二收斂條件依賴于以下內容的至少一個,或第一次出現完成預定數量的第二迭代處理的路徑;實現糾正向量對預定公差的解;以及第一迭代處理的連續路徑中未檢測到用于糾正向量的解的改變。第三收斂條件依賴于以下內容的至少一個,或第一次出現完成預定數量的步驟(C) 到(e)的路徑;實現用于基于當前解向量χ的向量對預定公差的解;以及步驟(c)到(e)的連續路徑中未檢測到用于依賴于當前解向量χ的所述向量的解的改變。
全文摘要
提供用于生成與滿足Ax=b的n×1向量x相對應的n個高精度數據元素的設備和計算機程序,其中A是與n×n個預定的高精度數據元素相對應的對稱的、正定n×n矩陣并且b是與n個預定的高精度數據元素相對應的n×1向量。設備(1)包括存儲器(3),用于存儲定義所述矩陣A和向量b的數據元素的輸入數據,以及控制邏輯(2)。在第一處理步驟(a),控制邏輯(2)實現用于通過所述輸入數據生成與滿足A1x1=b1的n×1向量x1相對應的n個低精度數據元素的第一迭代處理。此處,A1是與矩陣A的n×n數據元素相對應的低精度n×n矩陣并且b1是與向量b的n×1個數據元素相對應的低精度n×1向量。控制邏輯(2)在出現第一收斂條件時控制邏輯(2)終止第一迭代處理。在步驟(b)控制邏輯將向量x1的數據元素轉換成高精度數據元素以獲得當前的解向量x。在步驟(c),控制邏輯(2)實現用于生成與基于向量b和向量積Ax之間的差異的n×1糾正向量相對應的n個低精度數據元素的第二迭代處理。控制邏輯(2)在出現第二收斂條件時控制邏輯終止第二迭代處理。在步驟(d),控制邏輯(2)從所述糾正向量的n個低精度數據元素產生n×1更新向量u的各個高精度數據元素,并且于是在步驟(4),更新所述當前解向量x的數據元素,使得x=x+u。控制邏輯(2)執行步驟(c)到(e),直到出現第三收斂條件。
文檔編號G06F17/12GK102362274SQ201080013417
公開日2012年2月22日 申請日期2010年3月3日 優先權日2009年3月24日
發明者A·庫利奧尼, K·貝卡斯 申請人:國際商業機器公司