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