在執(zhí)行eos計(jì)算的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算的制作方法
【專利摘要】本發(fā)明提供一種用于在執(zhí)行EOS計(jì)算的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算的系統(tǒng)和方法。該方法包括將與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)矩陣分成數(shù)個(gè)區(qū)塊,其中該區(qū)塊大小是非均勻的或均勻的。與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)向量可以被分成數(shù)個(gè)條帶。區(qū)塊和條帶可以被存儲(chǔ)在主存儲(chǔ)器、高速緩存或寄存器中,并且與逐次代換和牛頓迭代相關(guān)的矩陣和向量運(yùn)算可以使用區(qū)塊和條帶并行執(zhí)行。
【專利說明】在執(zhí)行EOS計(jì)算的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算
[0001]相關(guān)申請(qǐng)的交叉參考
[0002]本申請(qǐng)要求美國(guó)臨時(shí)專利申請(qǐng)61/535,131的利益,該申請(qǐng)?zhí)峤挥?011年9月15 日,標(biāo)題為 OPTIMIZED MATRIX AND VECTOR OPERATIONS IN INSTRUCTION LIMITEDALGORITHMS THAT PERFORM EOS CALCULATIONS,在此通過引用將其全文合并于此。
【技術(shù)領(lǐng)域】
[0003]本技術(shù)涉及具有最優(yōu)化矩陣和向量運(yùn)算的指令受限算法。具體地,本技術(shù)的示范實(shí)施例涉及用于執(zhí)行狀態(tài)方程(EOS )計(jì)算的系統(tǒng)和方法。
【背景技術(shù)】
[0004]本節(jié)意圖介紹可以與所披露技術(shù)的實(shí)施例相關(guān)的現(xiàn)有技術(shù)的各種方面。本討論相信可以有助于提供框架從而促進(jìn)更優(yōu)理解所披露技術(shù)的具體方面。因此應(yīng)理解本節(jié)從這點(diǎn)閱讀,而不必認(rèn)可現(xiàn)有技術(shù)。
[0005]指令受限算法可以在各種工業(yè)中發(fā)生。例如指令受限算法可以在領(lǐng)域例如3D圖形分析、加密、數(shù)據(jù)挖掘、壓縮、信號(hào)處理、圖像處理、鏈?zhǔn)椒▌t評(píng)估、數(shù)值法例如有限元和有限體積分析、地震模式識(shí)別和狀態(tài)方程(EOS)計(jì)算中發(fā)生。
[0006]EOS計(jì)算可以用來模擬可以對(duì)儲(chǔ)層性能具有顯著效果的相行為。石油混合物可以流過多孔介質(zhì)的速率受相態(tài)數(shù)、每個(gè)相態(tài)的粘度和每個(gè)相態(tài)的密度影響。一般地,相行為和相性質(zhì)是溫度、壓力和成分的函數(shù)。在一些情況下,與相行為相關(guān)的成分效果是微弱的并可以忽略。這可以伴隨稱為黑油的石油流體發(fā)生。模擬含黑油的儲(chǔ)層可以稱為黑油仿真。
[0007]在其他情況下,成分效果可以被解釋。為解釋成分效果,石油工業(yè)通常使用狀態(tài)方程(E0S)。將具有成分效果的儲(chǔ)層建模可以稱為成分仿真。數(shù)個(gè)先進(jìn)開采機(jī)制可以依靠相行為的成分效果。
[0008]EOS計(jì)算可以使成分仿真比黑油仿真可觀地更低。EOS計(jì)算通常涉及確定相態(tài)數(shù)和每個(gè)相態(tài)的成分。盡管單個(gè)EOS計(jì)算執(zhí)行的消耗低廉,但其可以在儲(chǔ)層仿真的過程中重復(fù)數(shù)十億次。因此EOS計(jì)算可以消耗總仿真時(shí)間的多于50%。此外EOS計(jì)算是計(jì)算密集的并且其成本可以隨著混合物中組分?jǐn)?shù)目增加而迅速提高。
[0009]為改進(jìn)計(jì)算速度,并行儲(chǔ)層仿真器可以使用。當(dāng)使用并行化時(shí),巨大問題被分成較小子問題,并然后在數(shù)個(gè)處理核心之間分配。子問題可以不是獨(dú)立的,并且核心可以通信從而將其工作同步。核心可以通過共享存儲(chǔ)器或通過高速網(wǎng)絡(luò)同步。在并行計(jì)算環(huán)境中,存儲(chǔ)器帶寬和網(wǎng)絡(luò)通信通常是速度限制因素。
[0010]D.Voskov 和 H.Tchelepi, “Tie-Simplex Based Mathematical Framework forThermodynamical Equilibrium Computation of Mixtures with an Arbitrary Number ofPhases”,F(xiàn)luid Phase Equilibria,第 283 卷,2009,pp.1-11 陳述基于連結(jié)線的并行化方法在成分流仿真中改進(jìn)相行為表示的準(zhǔn)確度和狀態(tài)方程(EOS)計(jì)算的效率。對(duì)于不能融合的成分仿真,陳述該技術(shù)試驗(yàn)成分空間自適應(yīng)列表以避免多余EOS計(jì)算中的大部分。然而,矩陣和向量運(yùn)算沒有最優(yōu)化。
[0011]C.Rasmussen 等 人,“Increasing the Computational Speed of FlashCalculations with Applications for Compositional, Transient Simulations,,, SPEReservoir Evaluation and Engineering,第 9 卷第 I 冊(cè),2009, pp.32-38 陳述在常規(guī)閃存計(jì)算中,仿真時(shí)間的大部分花費(fèi)在穩(wěn)定性分析上。陳述該技術(shù)判定在其調(diào)整時(shí)繞過穩(wěn)定性分析,并且不在執(zhí)行EOS計(jì)算的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算。
[0012]E.Hendriks 和 A.Van Bergen, “Application of a Reduction Method toPhase-Equilibria Calculations,,,Fluid Phase Equilibria,第 74 卷,1992,pp.17-34 陳述對(duì)于特定熱動(dòng)力模型,求解涉及混合物相平衡的一組非線性方程的方程數(shù)可以減少。問題大小和計(jì)算工作可以通過變量變換來減小。另外,適當(dāng)描述混合物相行為的減少變量的最小數(shù)目可以確定。然而在執(zhí)行EOS計(jì)算的指令受限算法中的矩陣和向量運(yùn)算沒有被最優(yōu)化。
【發(fā)明內(nèi)容】
[0013]本技術(shù)的示范實(shí)施例提供在執(zhí)行EOS計(jì)算的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算的方法。與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)矩陣可以被分成數(shù)個(gè)非均勻或均勻大小區(qū)塊。與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)向量可以被分成數(shù)個(gè)條帶。區(qū)塊和條帶可以在主存儲(chǔ)器、高速緩存或寄存器中組織,并且與逐次代換和牛頓迭代相關(guān)的矩陣和向量運(yùn)算可以使用區(qū)塊和條帶并行執(zhí)行。
[0014]本技術(shù)的示范實(shí)施例提供系統(tǒng),其包括處理器和存儲(chǔ)用于由處理器執(zhí)行的機(jī)器可讀指令的有形機(jī)器可讀存儲(chǔ)介質(zhì),該機(jī)器可讀指令包括在由處理器執(zhí)行時(shí)被適配為使處理器將與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)矩陣分成數(shù)個(gè)區(qū)塊的指令,其中該區(qū)塊大小是均勻的或非均勻的。代碼在由處理器執(zhí)行時(shí)可以被適配為使處理器將與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)向量分成數(shù)個(gè)條帶,并且在主存儲(chǔ)器、高速緩存或寄存器中存儲(chǔ)區(qū)塊和條帶。另外,代碼在由處理器執(zhí)行時(shí)可以被適配為使處理器使用區(qū)塊和條帶并行執(zhí)行與逐次代換和牛頓迭代相關(guān)的矩陣和向量運(yùn)算。
[0015]本技術(shù)的示范實(shí)施例提供非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其包括經(jīng)配置引導(dǎo)處理器將與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)矩陣分成數(shù)個(gè)區(qū)塊的代碼,其中該區(qū)塊大小是非均勻的或均勻的。與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)向量分成數(shù)個(gè)條帶。區(qū)塊和條帶可以在主存儲(chǔ)器、高速緩存或寄存器中存儲(chǔ),并且與逐次代換和牛頓迭代相關(guān)的矩陣和向量運(yùn)算可以使用區(qū)塊和條帶并行執(zhí)行。
【專利附圖】
【附圖說明】
[0016]本技術(shù)的優(yōu)點(diǎn)可以緊接著瀏覽實(shí)施例的非限制示例的以下詳細(xì)描述和附圖變得更明顯,在該附圖中:
[0017]圖1是過程流程圖,其概述根據(jù)本技術(shù)的實(shí)施例在執(zhí)行EOS計(jì)算的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算的方法;
[0018]圖2是示出根據(jù)本技術(shù)的實(shí)施例的存儲(chǔ)器層次的圖示;
[0019]圖3是圖解根據(jù)本技術(shù)的實(shí)施例的如何使用三個(gè)不同存儲(chǔ)格式將二維矩陣映射到線性存儲(chǔ)器的圖示;
[0020]圖4是示出根據(jù)本技術(shù)的實(shí)施例的均勻區(qū)塊和非均勻區(qū)塊的圖示;
[0021]圖5是圖解根據(jù)本技術(shù)的實(shí)施例的指令的數(shù)目如何可以通過SMD/SMT向量化被減少的圖不;
[0022]圖6是概述根據(jù)本技術(shù)的實(shí)施例的執(zhí)行EOS計(jì)算的方法的過程流程圖;
[0023]圖7是概述根據(jù)本技術(shù)的實(shí)施例的用于EOS計(jì)算的穩(wěn)定性和分相算法的迭代性質(zhì)的過程流程圖;
[0024]圖8是概述根據(jù)本技術(shù)的實(shí)施例的執(zhí)行逐次代換和牛頓算法的方法的過程流程圖;
[0025]圖9是概述根據(jù)本技術(shù)的實(shí)施例的成分如何可以在牛頓迭代內(nèi)被更新的方法的過程流程圖;
[0026]圖10是根據(jù)本技術(shù)的實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖,該計(jì)算機(jī)系統(tǒng)可以用來在指令受限算法中最優(yōu)化矩陣和向量計(jì)算。
【具體實(shí)施方式】
[0027]在以下詳細(xì)描述節(jié)中,具體實(shí)施例作為示例描述。然而,就以下描述對(duì)具體實(shí)施例或特別使用特定來說,其意圖僅用于示范目的并簡(jiǎn)單提供示范實(shí)施例的描述。因此本技術(shù)不限于在下面描述的實(shí)施例,但相反這樣的技術(shù)包括落入附加權(quán)利要求的精神和保護(hù)范圍內(nèi)的全部替換、修改和等效。
[0028]起初,并為容易參考,闡述用于本申請(qǐng)的某些術(shù)語(yǔ)及其用于該上下文的意義。就本文使用的術(shù)語(yǔ)不在下面定義來說,應(yīng)給予其如在至少一個(gè)印刷出版物或已提交專利中反映的本領(lǐng)域技術(shù)人員給予的最廣泛定義。
[0029]術(shù)語(yǔ)“單元”指代面的集合,或暗示地定義面的節(jié)點(diǎn)的集合,其中該面一起形成封閉體積。另外術(shù)語(yǔ)“面”指代形成表面的點(diǎn)的任意集合。
[0030]術(shù)語(yǔ)“通信受限”指代算法執(zhí)行速度由速度限制的時(shí)候,處理核心能夠通過共享處理器或高速網(wǎng)絡(luò)在該速度通信并將處理核心的工作同步。
[0031]術(shù)語(yǔ)“存儲(chǔ)器受限”指代算法執(zhí)行速度由速率限制的時(shí)候,數(shù)據(jù)在存儲(chǔ)器和CPU之間在該速率移動(dòng)。
[0032]術(shù)語(yǔ)“指令受限”指代算法執(zhí)行速度由速率限制的時(shí)候,指令由CPU在該速率處理。
[0033]術(shù)語(yǔ)“成分儲(chǔ)層仿真”指代用來仿真需要獲知儲(chǔ)層的至少一部分中成分改變的開采過程的仿真。例如,成分仿真可以有助于研究(I)易揮發(fā)油或氣體冷凝物儲(chǔ)層的耗盡,其中相成分和性質(zhì)隨著壓力低于氣泡壓力或露點(diǎn)壓力顯著變化,(2)非平衡氣體(干燥或富集的)噴射到黑油儲(chǔ)層,從而由蒸發(fā)成更可移動(dòng)的氣相或由通過徹底的(單接觸)或動(dòng)態(tài)的(多接觸)混溶性將油移動(dòng),以及(3)將C02噴射到油儲(chǔ)層,從而由混溶驅(qū)動(dòng)(miscibledisplacement)并由油粘度減小和油溶脹(oil swelling)將油移動(dòng)。
[0034]由于大量迭代相平衡計(jì)算和大量流動(dòng)方程求解,因此使用EOS描述多組分流體混合物的相行為的成分儲(chǔ)層仿真可以是耗時(shí)的。在EOS計(jì)算中求解的方程的數(shù)目與流體中組分?jǐn)?shù)目成比例。由于儲(chǔ)層流體可以含有數(shù)百種純組分,因此執(zhí)行其中所有儲(chǔ)層組分在計(jì)算中使用的成分仿真可以是不實(shí)際的。因此希望將在描述流體混合物中使用的組分的數(shù)目保
持最小。
[0035]術(shù)語(yǔ)“計(jì)算機(jī)部件”指代計(jì)算機(jī)相關(guān)實(shí)體、硬件、固件、軟件、其組合,或執(zhí)行中的軟件。例如,計(jì)算機(jī)部件可以是但不限于在處理器上運(yùn)行的過程、處理器、對(duì)象、可執(zhí)行過程、執(zhí)行的線程、程序和計(jì)算機(jī)。一個(gè)或多個(gè)計(jì)算機(jī)部件可以位于執(zhí)行的過程或線程內(nèi),并且計(jì)算機(jī)部件可以定位在一臺(tái)計(jì)算機(jī)上或在兩臺(tái)或更多臺(tái)計(jì)算機(jī)之間分布。
[0036]術(shù)語(yǔ)“狀態(tài)方程”或“E0S”指代方程,該方程代表包括烴的任何流體的相行為。在儲(chǔ)層仿真中,狀態(tài)方程可以僅用于烴相,并且經(jīng)驗(yàn)關(guān)系式可以用來描述液相。EOS可以在基于計(jì)算機(jī)的建模和仿真技術(shù)中用來創(chuàng)造模型,以便估計(jì)所關(guān)注儲(chǔ)層中烴流體的性質(zhì)和/或行為。一旦EOS模型定義,則其可以用來計(jì)算儲(chǔ)層的石油流體的廣泛的一系列性質(zhì),例如氣-油比(GOR)或冷凝物-氣體比(CGR)、每個(gè)相態(tài)的密度、體積因數(shù)和壓縮率、熱容量和飽和壓力(泡點(diǎn)或露點(diǎn))。因此EOS模型可以經(jīng)求解獲得在給定溫度的飽和壓力。此外G0R、CGR、相密度和體積因數(shù)是EOS模型的副產(chǎn)物。輸送性質(zhì)例如傳導(dǎo)率、擴(kuò)散率或粘度可以從性質(zhì)例如流體成分推導(dǎo),該性質(zhì)從EOS模型獲得。
[0037]術(shù)語(yǔ)“非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)”、“有形機(jī)器可讀介質(zhì)”等指代參與向處理器提供指令以便執(zhí)行的任何有形存儲(chǔ)。這樣的介質(zhì)可以采取許多形式,包括但不限于非易失性介質(zhì)和易失性介質(zhì)。非易失性介質(zhì)包括例如NVRAM或磁或光盤。易失性介質(zhì)包括動(dòng)態(tài)存儲(chǔ)器例如主存儲(chǔ)器。計(jì)算機(jī)可讀介質(zhì)可以包括例如軟盤、軟磁盤、硬盤、磁帶,或任何其他磁介質(zhì)、CD-ROM、任何其他光介質(zhì)、RAM、PROM和EPROM、FLASH-EPR0M、固態(tài)介質(zhì)如全息存儲(chǔ)器、存儲(chǔ)器卡或任何其他存儲(chǔ)器芯片或盒式磁帶,或計(jì)算機(jī)可以從其讀取的任何其他介質(zhì)。在計(jì)算機(jī)可讀介質(zhì)配置為數(shù)據(jù)庫(kù)時(shí),理解數(shù)據(jù)庫(kù)可以是任何類型的數(shù)據(jù)庫(kù),例如關(guān)系的、分層的、面向?qū)ο蟮?,等等。因此本技術(shù)的示范實(shí)施例可以認(rèn)為包括有形存儲(chǔ)介質(zhì)或有形分布介質(zhì)和現(xiàn)有技術(shù)認(rèn)可的等效與后繼介質(zhì),實(shí)施本技術(shù)的軟件實(shí)施在這些介質(zhì)中存儲(chǔ)。
[0038]術(shù)語(yǔ)“等待時(shí)間”指代在系統(tǒng)中經(jīng)歷的時(shí)延的測(cè)量值。
[0039]術(shù)語(yǔ)“相行為”指代流體混合物如何將作為壓力、溫度和成分的函數(shù)分成兩個(gè)或更多個(gè)相態(tài)?;旌衔锏南鄳B(tài)可以是固體、蒸汽、液體或超臨界。
[0040]術(shù)語(yǔ)“相態(tài)”指代可以從非均勻混合物機(jī)械地分離的物質(zhì)的化學(xué)或物理統(tǒng)一量。其可以由單種物質(zhì)或多種物質(zhì)的混合物構(gòu)成。一般地,物質(zhì)的四相是固體、液體、氣體和等離子體。然而術(shù)語(yǔ)“相態(tài)”也用來描述物質(zhì)的其他性質(zhì)或狀態(tài),例如非混溶液體的分離層、膠體物質(zhì)或混合物,以及無定形固體。在烴生產(chǎn)中,含水的(水)、液體(油)和蒸汽(氣體)相經(jīng)
常存在。
[0041]術(shù)語(yǔ)“性質(zhì)”指代數(shù)據(jù),該數(shù)據(jù)表示與基于每一元素的不同拓?fù)湓叵嚓P(guān)的特性。一般地,性質(zhì)可以是包括整數(shù)和浮點(diǎn)數(shù)型等的任何計(jì)算值類型。此外,性質(zhì)可以包括值向量類型。性質(zhì)可以僅對(duì)幾何對(duì)象的元素的子組有效。性質(zhì)可以用來將對(duì)象的幾何形狀著色。術(shù)語(yǔ)“性質(zhì)”也可以指代涉及對(duì)象的特性或已存儲(chǔ)信息。適當(dāng)定義的應(yīng)用對(duì)計(jì)算機(jī)科學(xué)領(lǐng)域技術(shù)人員是直觀的。
[0042]術(shù)語(yǔ)“特化”指代為一組特定輸入?yún)?shù)計(jì)算機(jī)程序或算法的版本。
[0043]術(shù)語(yǔ)“線程”一般指代使用特別輸入數(shù)據(jù)執(zhí)行特別程序的實(shí)例。并行線程可以使用不同處理引擎同時(shí)執(zhí)行,允許處理工作在給定量的時(shí)間內(nèi)完成。[0044]總述
[0045]盡管為解釋簡(jiǎn)便,圖解方法學(xué)示出并描述為一系列方框,但認(rèn)識(shí)到由于一些方框可以在不同順序中發(fā)生和/或與源自示出并描述的其他方框同時(shí)發(fā)生,因此方法學(xué)不受方框的順序限制。此外,少于全部的圖解方框可以需要實(shí)施例子方法學(xué)。方框可以組合或分離為多個(gè)組成。此外,另外和/或可替換的方法學(xué)可以采用另外的未圖解方框。盡管附圖圖解各種串行發(fā)生的行為,但認(rèn)識(shí)到各種行為可以連續(xù)發(fā)生、基本并行發(fā)生和/或在時(shí)間中基本不同點(diǎn)發(fā)生。
[0046]實(shí)施例提供用于在任意硬件體系結(jié)構(gòu)上的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算的方法。計(jì)算機(jī)算法可以含有各種矩陣和向量運(yùn)算。任何計(jì)算機(jī)算法的速度由三個(gè)可能瓶頸限制:指令吞吐量、存儲(chǔ)器吞吐量和在集群情況下的通信吞吐量。最科學(xué)的算法由在其上處理它們的硬件來存儲(chǔ)器或通信限制。然而EOS計(jì)算通常是指令受限的,意味著EOS算法的最終速度可以由硬件能夠在其執(zhí)行單個(gè)運(yùn)算的速率確定。結(jié)果,最優(yōu)化可以涉及在其中計(jì)算發(fā)生的高速緩存和硬件寄存器之間有效移動(dòng)數(shù)據(jù)。該數(shù)據(jù)可以包括矩陣和向量數(shù)據(jù)。
[0047]圖1是過程流程圖,其概述根據(jù)本技術(shù)實(shí)施例在執(zhí)行EOS計(jì)算的指令受限算法中優(yōu)化矩陣和向量運(yùn)算的方法100。在方框102處,每個(gè)矩陣被劃分成多個(gè)區(qū)塊(tile)。區(qū)塊通??梢员幻枋鰹閺脑嫉妮^大矩陣形成的較小子矩陣。圖3進(jìn)一步描述將矩陣分成區(qū)塊。此外,每個(gè)矩陣可以與具有非均勻或均勻區(qū)塊大小的EOS穩(wěn)定性方程或EOS分相方程相關(guān)。在方框104處,每個(gè)向量都被分成多個(gè)條帶(strip)。與區(qū)塊類似,條帶通??梢员幻枋鰹閺脑嫉妮^大向量形成的較小子向量。每個(gè)向量可以與EOS穩(wěn)定性方程或EOS分相方程相關(guān)。
[0048]在方框106處,區(qū)塊和條帶可以被組織在計(jì)算機(jī)存儲(chǔ)例如主存儲(chǔ)器、高速緩存或寄存器中。在區(qū)塊和條帶中含有的數(shù)據(jù)可以被操作之前,運(yùn)算數(shù)(operand)中的至少一個(gè)被傳遞到硬件寄存器。非必需的數(shù)據(jù)傳遞可能減慢CPU執(zhí)行速度。為使數(shù)據(jù)傳遞更加有效,由于高速緩存存儲(chǔ)器與主存儲(chǔ)器相比可以更快并且具有更低的等待時(shí)間,因此現(xiàn)代硬件體系結(jié)構(gòu)可以在主存儲(chǔ)器和寄存器之間使用高速緩存存儲(chǔ)器作為緩沖器。在方框108處,可以使用區(qū)塊和條帶并行執(zhí)行矩陣和向量計(jì)算,其中所有矩陣和向量計(jì)算以區(qū)塊運(yùn)算和條帶運(yùn)算的術(shù)語(yǔ)來表述。進(jìn)一步地,在EOS計(jì)算中,可以使用區(qū)塊和條帶來并行執(zhí)行與逐次代換和牛頓迭代相關(guān)的矩陣和向量運(yùn)算。圖6-9進(jìn)一步描述逐次代換和牛頓迭代。并行化可以用來加速單個(gè)區(qū)塊單條帶運(yùn)算或同時(shí)執(zhí)行多個(gè)區(qū)塊多條帶運(yùn)算。
[0049]圖2是示出根據(jù)本技術(shù)的實(shí)施例的存儲(chǔ)器層次的圖示200。如圖示200所說明的,現(xiàn)代CPU通常具有多級(jí)高速緩存層次202。圖示200具有在204的等級(jí)1、在206的等級(jí)2和在208的等級(jí)3這三個(gè)高速緩存的等級(jí)。在204的高速緩存等級(jí)I最接近寄存器210,并且高速緩存等級(jí)3最接近主存儲(chǔ)器212。因此,越接近存儲(chǔ)數(shù)據(jù)的寄存器210,速度214將提高并且等待時(shí)間216降低。在主存儲(chǔ)器212和多級(jí)高速緩存層次202之間、在多級(jí)高速緩存層次202自身內(nèi)或者在多級(jí)高速緩存層次202和寄存器210之間的每次數(shù)據(jù)傳遞花費(fèi)有限量的時(shí)間。非必需的數(shù)據(jù)傳遞可能導(dǎo)致硬件浪費(fèi)若干計(jì)算機(jī)時(shí)鐘循環(huán)來等待數(shù)據(jù)從而進(jìn)行處理。在現(xiàn)代CPU上,與小問題例如EOS計(jì)算相關(guān)的數(shù)據(jù)可以完全容納在高速緩存存儲(chǔ)器級(jí)內(nèi)。因此在現(xiàn)代CPU上的數(shù)據(jù)傳遞問題通常在高速緩存存儲(chǔ)器級(jí)和寄存器之間發(fā)生。相反,現(xiàn)代GPU通常具有顯著較小量的可用高速緩存存儲(chǔ)器。因此在現(xiàn)代GPU上的數(shù)據(jù)傳遞問題通常在高速緩存存儲(chǔ)器級(jí)和主存儲(chǔ)器之間發(fā)生。
[0050]最優(yōu)化技術(shù)
[0051]致力于指令吞吐量的最優(yōu)化技術(shù)包括區(qū)塊化、每區(qū)塊最優(yōu)化、特化、條帶化和向量化。因?yàn)楸M管矩陣是二維數(shù)據(jù)結(jié)構(gòu),但矩陣通常被存儲(chǔ)在一維存儲(chǔ)器中,所以有效實(shí)施這些最優(yōu)化技術(shù)可能是挑戰(zhàn)性的。矩陣在存儲(chǔ)器中所依照存儲(chǔ)的方式影響執(zhí)行矩陣運(yùn)算所需要的數(shù)據(jù)傳遞的數(shù)目。如上面討論,非必需的數(shù)據(jù)傳遞可能導(dǎo)致硬件浪費(fèi)若干計(jì)算機(jī)時(shí)鐘循環(huán)來等待有待處理的數(shù)據(jù)。
[0052]一般具有兩類的可用計(jì)算機(jī)體系結(jié)構(gòu),標(biāo)量和向量。標(biāo)量體系結(jié)構(gòu)可以每次對(duì)單個(gè)數(shù)據(jù)元素運(yùn)算,而向量體系結(jié)構(gòu)可以同時(shí)對(duì)若干數(shù)據(jù)元素運(yùn)算。在各種計(jì)算機(jī)和移動(dòng)裝置中發(fā)現(xiàn)的中央處理單元(CPU)是標(biāo)量硬件體系結(jié)構(gòu)的示例。在計(jì)算機(jī)顯卡上發(fā)現(xiàn)的圖形處理單元(GPU)是向量硬件體系結(jié)構(gòu)的示例。兩類體系結(jié)構(gòu)都由工作可以在其間劃分的若干核心構(gòu)成。工作的劃分可以通過將工作分成稱為線程的較小子任務(wù)來實(shí)現(xiàn)。
[0053]圖3是示出根據(jù)本技術(shù)的實(shí)施例的二維矩陣304-308如何使用三個(gè)不同存儲(chǔ)格式映射到線性存儲(chǔ)器302的圖示300。存儲(chǔ)矩陣的一個(gè)普遍方法是將數(shù)據(jù)行相互挨靠放置。這稱為行優(yōu)先存儲(chǔ)格式并在行優(yōu)先矩陣304中示出??商鎿Q地,人們可以將數(shù)據(jù)列相互挨靠放置,從而獲得在列優(yōu)先矩陣304示出的列優(yōu)先存儲(chǔ)格式。這兩種存儲(chǔ)格式在應(yīng)用到各種計(jì)算時(shí)可能在硬件寄存器和高速緩存存儲(chǔ)器之間產(chǎn)生大量非必需的數(shù)據(jù)傳遞。數(shù)據(jù)傳遞問題可以通過將矩陣分成稱為區(qū)塊的較小子矩陣來解決,這些區(qū)塊在區(qū)塊化矩陣308示出。單個(gè)區(qū)塊310的大小被選擇用于確保每個(gè)算術(shù)運(yùn)算中的至少一個(gè)運(yùn)算數(shù)以及與區(qū)塊運(yùn)算相關(guān)的中間結(jié)果保留在寄存器中。這樣,在寄存器和高速緩存之間的數(shù)據(jù)傳遞可以最小化,結(jié)果,CPU循環(huán)的較大部分可能花費(fèi)在計(jì)算上。矩陣可以被再分成均勻或非均勻區(qū)塊。使用非均勻區(qū)塊可以允許任何大小的矩陣使用區(qū)塊化存儲(chǔ)格式。
[0054]圖4是示出根據(jù)本技術(shù)的實(shí)施例的均勻區(qū)塊和非均勻區(qū)塊的圖示400。矩陣402含有每個(gè)是相同大小的在參考號(hào)404處的區(qū)塊。因此矩陣402的區(qū)塊是均勻區(qū)塊。矩陣406含有在參考號(hào)408處的區(qū)塊、在參考號(hào)410處的區(qū)塊和在參考號(hào)412處的區(qū)塊。在參考號(hào)408處的區(qū)塊、在參考號(hào)410處的區(qū)塊和在參考號(hào)412處的區(qū)塊大小不同。因此矩陣402的區(qū)塊是非均勻區(qū)塊。具有均勻區(qū)塊的矩陣和具有非均勻區(qū)塊的矩陣可以被使用在本技術(shù)中。此外,區(qū)塊可以按照順序或交錯(cuò)的形式被組織或存儲(chǔ)在主存儲(chǔ)器、高速緩存或寄存器中。如本文所討論的條帶也可以按照順序或交錯(cuò)形式被組織或存儲(chǔ)在主存儲(chǔ)器、高速緩存或寄存器中。進(jìn)一步地,可以使用標(biāo)量硬件體系結(jié)構(gòu)或向量硬件體系結(jié)構(gòu)來實(shí)現(xiàn)區(qū)塊。
[0055]無論均勻或非均勻,區(qū)塊的大小都可以被選擇以便最小化單個(gè)硬件體系結(jié)構(gòu)內(nèi)的存儲(chǔ)器層次的不同等級(jí)之間的數(shù)據(jù)傳遞。當(dāng)區(qū)塊是均勻的時(shí),矩陣大小可以被約束到區(qū)塊大小的整數(shù)倍。通過用偽元素將矩陣填充至允許使用均勻區(qū)塊的大小,可以為任何矩陣實(shí)現(xiàn)整數(shù)倍的矩陣大小。然而,除非矩陣大小顯著大于區(qū)塊大小,否則填充矩陣可能顯著增加矩陣運(yùn)算的計(jì)算時(shí)間。在此情況下,因?yàn)榭梢圆皇褂锰畛鋵⒕仃嚪殖蓞^(qū)塊,所以使用非均勻區(qū)塊可以消除這種計(jì)算時(shí)間上的增加。
[0056]使用區(qū)塊允許基于每區(qū)塊的最優(yōu)化。換言之,每個(gè)區(qū)塊最優(yōu)化促進(jìn)使用分治途徑,其中最優(yōu)化矩陣運(yùn)算可以被減少到運(yùn)算少數(shù)區(qū)塊運(yùn)算。例如,EOS特定區(qū)塊運(yùn)算可以被用來計(jì)算逸度導(dǎo)數(shù)并用于在牛頓算法中構(gòu)建雅可比矩陣。牛頓算法也使用線性求解器。在EOS計(jì)算中,雅可比矩陣是稠密的使得大多數(shù)元素非零。求解具有稠密雅可比矩陣的線性方程組的兩個(gè)普遍算法是均可以按照區(qū)塊運(yùn)算表述的高斯消去和上-下(UL)分解。每區(qū)塊最優(yōu)化可以減小循環(huán)開銷和跳躍開銷。循環(huán)開銷指代與每個(gè)循環(huán)相關(guān)的計(jì)算開銷。該循環(huán)開銷可以是在循環(huán)的每個(gè)迭代期間必須被估計(jì)從而確定循環(huán)的隨后迭代是否發(fā)生的狀況的結(jié)果。同樣,跳躍開銷指代在計(jì)算機(jī)程序遇到告訴其從代碼中的一行跳躍到另一行的指令時(shí)的相關(guān)的計(jì)算開銷。跳躍開銷通常作為函數(shù)調(diào)用、循環(huán)迭代的結(jié)果發(fā)生,或在執(zhí)行路徑取決于一些測(cè)試的輸出結(jié)果(分支)時(shí)發(fā)生。這樣的跳躍指令可以可觀地減慢執(zhí)行速度,除非跳躍開銷小于執(zhí)行跳躍之間的代碼花費(fèi)的時(shí)間。
[0057]為了減小循環(huán)開銷和跳躍開銷,現(xiàn)代編譯器如可能則可以“展開”循環(huán)。當(dāng)展開循環(huán)時(shí),編譯器可以估計(jì)控制循環(huán)迭代的數(shù)目的狀況,并將循環(huán)轉(zhuǎn)變成相應(yīng)的非循環(huán)指令。例如,在EOS運(yùn)算中,循環(huán)迭代的數(shù)目可以由混合物中的組分的數(shù)目來控制。通常,混合物中的組分的數(shù)目對(duì)于編譯器來說是不可用的,從而防止循環(huán)展開發(fā)生。相反地,與EOS計(jì)算相關(guān)的區(qū)塊可以具有預(yù)定大小,并且已經(jīng)與區(qū)塊運(yùn)算相關(guān)并且基于區(qū)塊大小的每個(gè)循環(huán)可以被完全地展開。相似地,在EOS計(jì)算中,已經(jīng)與條帶相關(guān)并且基于條帶大小的每個(gè)循環(huán)可以被完全地展開。
[0058]另一最優(yōu)化技術(shù)可以使用寄存器變量。在使用數(shù)據(jù)結(jié)構(gòu)例如向量和矩陣時(shí)的普遍編程實(shí)踐是使用指向結(jié)構(gòu)中的第一數(shù)據(jù)元素的地址的指針。使用該地址作為參考,算法獲知如何訪問其他數(shù)據(jù)元素。按照這種方式使用指針,尤其是在編譯器采用多個(gè)指針可以指向相同的數(shù)據(jù)地址時(shí),可能導(dǎo)致硬件寄存器和高速緩存存儲(chǔ)器之間的非必需的數(shù)據(jù)傳遞。為了避免數(shù)據(jù)不一致,在寄存器中修改的任何數(shù)據(jù)元素可以被拷貝到高速緩存存儲(chǔ)器從而確保每個(gè)指針具有到最近更新的訪問。相似地,數(shù)據(jù)元素每當(dāng)有待運(yùn)算時(shí)其可以從高速緩存存儲(chǔ)器中被拷貝,從而確保寄存器變量更新。過量的數(shù)據(jù)傳遞可以通過為中間計(jì)算使用寄存器變量或者保存輸入數(shù)據(jù)的拷貝來避免。因此寄存器變量中的數(shù)據(jù)不可由指針訪問,并且數(shù)據(jù)不必再在寄存器和高速緩存存儲(chǔ)器之間被拷貝。
[0059]用特化來最優(yōu)化涉及做出最優(yōu)化算法的若干版本從而調(diào)節(jié)取決于未知區(qū)塊數(shù)目的展開循環(huán),其與取決于區(qū)塊大小的循環(huán)相反。如本文所討論的,由于區(qū)塊大小是編譯器已知的,因此基于區(qū)塊大小的循環(huán)可以被展開。然而,區(qū)塊的數(shù)目可以是未知的。因此,取決于區(qū)塊的數(shù)目的循環(huán)不可以被展開。特化為所關(guān)注的每個(gè)數(shù)目的區(qū)塊提供算法。每個(gè)算法版本具有已知數(shù)目的區(qū)塊,該已知數(shù)目的區(qū)塊允許循環(huán)基于區(qū)塊的數(shù)目被展開。特化還應(yīng)用到與向量運(yùn)算相關(guān)的循環(huán)并可以是自動(dòng)使用模板。例如,通過特化展開循環(huán)可以在為具有不同數(shù)目組分的混合物生成數(shù)個(gè)不同EOS算法時(shí)發(fā)生。
[0060]由于向量是一維數(shù)據(jù)結(jié)構(gòu),因此區(qū)塊化不應(yīng)用到向量。為了減少與向量相關(guān)的循環(huán)和跳躍開銷,向量可以被分成條帶。使用條帶促進(jìn)循環(huán)展開并且促進(jìn)按照與區(qū)塊相同的方式使用寄存器變量。例如,循環(huán)可以基于條帶大小被展開。如本文所討論的,條帶利用涉及向量運(yùn)算、從向量化分離并且不同于向量化的各種算法。
[0061]單指令多數(shù)據(jù)(SMD)和單指令多線程(SMT)向量化也可以最優(yōu)化指令受限算法。SMD指令對(duì)多個(gè)數(shù)據(jù)元素同時(shí)運(yùn)算。大多數(shù)現(xiàn)代CPU實(shí)施經(jīng)常稱為向量擴(kuò)展的SMD指令。然而關(guān)于GPU,具有SMD和SMT兩種體系結(jié)構(gòu)。SMD指令可以由單處理核心執(zhí)行,而SMT指令由多處理核心執(zhí)行。SMD和SMT指令都可以用來加速指令受限算法。[0062]圖5是示出根據(jù)本技術(shù)的實(shí)施例的如何可以通過SMD/SMT向量化來減少指令的數(shù)目的圖示500。每個(gè)陣列502-508代表可以對(duì)其運(yùn)算的數(shù)據(jù)段。數(shù)目鑒別對(duì)單個(gè)數(shù)據(jù)元素運(yùn)算的指令。雙精度標(biāo)量指令在參考號(hào)502處示出,并且雙精度向量指令在參考號(hào)504處示出。單精度標(biāo)量指令在參考號(hào)506處示出,并且單精度向量指令在參考號(hào)508處示出。例如,假設(shè)每個(gè)向量的大小是128位。相同運(yùn)算可以被執(zhí)行在陣列中的每個(gè)元素上。使用雙精度向量,每個(gè)運(yùn)算對(duì)兩個(gè)數(shù)據(jù)元素運(yùn)算,將指令數(shù)減少到原來的二分之一。單精度向量含有數(shù)據(jù)元素?cái)?shù)目的兩倍,并且指令數(shù)減少到原來的四分之一。因此數(shù)據(jù)元素的單精度、雙精度或混合精度向量化可以與SMD或SMT向量指令一起使用。進(jìn)一步地,單精度、雙精度或混合精度向量化可以被用來并行執(zhí)行EOS計(jì)算,其中每個(gè)EOS計(jì)算可以對(duì)應(yīng)于不同混合物。
[0063]在指令受限的算法中,從雙精度切換到單精度不會(huì)加速計(jì)算。盡管數(shù)據(jù)元素的大小被減小,但指令的數(shù)目保持相同。利用單精度涉及使用向量指令。因?yàn)閱尉认蛄吭谂c雙精度向量比較時(shí)保存兩倍之多的元素,所以加速隨著單精度向量指令發(fā)生。因此每個(gè)指令對(duì)兩倍數(shù)目的數(shù)據(jù)元素運(yùn)算。
[0064]SMD/SMT向量化可以被用來加速單個(gè)區(qū)塊和條帶運(yùn)算。在該情況中,區(qū)塊和條帶可以是SMD/SMT向量長(zhǎng)度的整數(shù)倍。因此,該方法用于短SMD/SMT向量。可替換地,SIMD/SIMT向量化可以被用于并行執(zhí)行若干區(qū)塊和條帶運(yùn)算。在該情況中,區(qū)塊和條帶可以被交錯(cuò)以使每個(gè)SIMD/SIMT向量指令訪問源自每個(gè)區(qū)塊或條帶的單個(gè)元素。因?yàn)橛擅總€(gè)SMD/SMT向量指令訪問的數(shù)據(jù)元素屬于分離的區(qū)塊或條帶,因此SMD/SMT向量化與并行的區(qū)塊和條帶運(yùn)算不會(huì)對(duì)向量或條帶大小添加任何約束,并可以與任意長(zhǎng)度的SIMD/SIMT向量一起使用。這樣,與EOS計(jì)算相關(guān)的區(qū)塊和條帶或者與EOS計(jì)算相關(guān)的區(qū)塊和條帶內(nèi)的數(shù)據(jù)元素的單精度、雙精度或混合精度向量化可以使用單指令多數(shù)據(jù)或單指令多線程向量指令。大多數(shù)現(xiàn)代CPU的向量寄存器可以保存兩個(gè)雙精度或四個(gè)單精度元素,或者甚至可以保存四個(gè)雙精度或八個(gè)單精度元素。
[0065]示例
[0066]本文所描述的各種最優(yōu)化可以用不同方式來組合,并可以針對(duì)算法可以在其上運(yùn)行的具體硬件被制定。為了描述的目的,三個(gè)示例被說明。然而,這些示例用于描述目的并非意在限制本技術(shù)。同樣,第一示例可以為沒有SIMD指令的硬件而設(shè)計(jì),第二示例可以為具有短SMD向量的硬件而設(shè)計(jì),并且第三示例可以為具有任意長(zhǎng)度的SMD向量的硬件而設(shè)計(jì)。
[0067]1.在第一示例中,硬件可以不支持SMD指令。所有矩陣可以被組織成區(qū)塊,并且區(qū)塊內(nèi)的數(shù)據(jù)可以使用如本文所描述的行優(yōu)先、列優(yōu)先或區(qū)塊化存儲(chǔ)格式。矩陣內(nèi)的區(qū)塊可以被順序地組織或存儲(chǔ)在主存儲(chǔ)器、高速緩存或寄存器中。區(qū)塊大小可以用盡可能有效地使用寄存器的方式來選擇。當(dāng)前,通常的臺(tái)式和工作站CPU可以具有16個(gè)寄存器,因此三乘三和四乘四是合理的區(qū)塊大小。使用均勻區(qū)塊大小在組分的數(shù)目中引入粒度。例如,使用每η個(gè)的區(qū)塊大小可以將組分的數(shù)目驅(qū)動(dòng)到η的倍數(shù)。對(duì)于其中組分?jǐn)?shù)目不是η的倍數(shù)的混合物,添加痕量的偽組分可以允許組分總體是η的倍數(shù)。為避免過多填充,即使在使用具有大量寄存器的硬件時(shí),區(qū)塊大小仍可以保持較小。
[0068]可替換地,通過將矩陣分成不同大小的區(qū)塊,填充可以完全地被避免。執(zhí)行的區(qū)塊運(yùn)算可以包括線性代數(shù)運(yùn)算如矩陣-矩陣乘法、矩陣-向量乘法和矩陣求逆。此外,基于最優(yōu)化區(qū)塊運(yùn)算使用線性求解器可以求解各種線性方程組。
[0069]此外,在沒有SMD指令的硬件上使用時(shí),向量可以被組織成條帶。條帶長(zhǎng)度可以匹配區(qū)塊大小。例如,使用每η個(gè)的區(qū)塊大小意味著使用η的條帶長(zhǎng)度。向量運(yùn)算可以被表達(dá)為一系列條帶運(yùn)算。這允許如本文所描述的部分展開對(duì)應(yīng)的循環(huán)。其他循環(huán)可以使用特化來展開。然而在線性求解器內(nèi),一些循環(huán)可以對(duì)于編譯器來說過于復(fù)雜而難以展開。這些循環(huán)可以被人工展開或通過使用模板而展開。
[0070]I1.在第二示例中,硬件可以支持在短向量上的SMD指令。因此SMD指令可被用來通過如本文所討論的向量化來加速單個(gè)區(qū)塊和條帶運(yùn)算。這意味著涉及若干數(shù)據(jù)元素的計(jì)算可以被并行執(zhí)行,并且單精度SMD向量和雙精度SMD向量都可以被使用。所有矩陣可以被組織成區(qū)塊,并且區(qū)塊內(nèi)的數(shù)據(jù)可以使用行優(yōu)先或列優(yōu)先存儲(chǔ)格式??梢园凑毡M可能有效地使用寄存器的方式來選擇區(qū)塊大小。由于向量化用來加速單個(gè)區(qū)塊運(yùn)算,因此即使區(qū)塊大小是非均勻的,區(qū)塊大小仍可以經(jīng)選擇是向量長(zhǎng)度的整數(shù)倍。實(shí)施SMD向量的通常臺(tái)式和工作站CPU可以保持兩個(gè)雙精度元素或四個(gè)單精度元素,或者甚至是四個(gè)雙精度元素或八個(gè)單精度 元素。此外,條帶長(zhǎng)度也可以是向量長(zhǎng)度的整數(shù)倍并可以被選擇用于而匹配區(qū)塊大小。
[0071]在第二示例中,區(qū)塊運(yùn)算可以被重設(shè)計(jì)為按照SIMD指令工作。除了矩陣-矩陣乘法,矩陣向量乘法和矩陣求逆運(yùn)算以外,計(jì)算矩陣轉(zhuǎn)置的算法也可以被實(shí)施。除了使用基于SMD的區(qū)塊運(yùn)算以外,線性求解器可以與第一示例幾乎相同。然而對(duì)于第二示例,一個(gè)主要區(qū)別是在每個(gè)區(qū)塊內(nèi)的SMD向量對(duì)齊必須被考慮。水平SMD向量對(duì)齊意味著SMD向量中的所有數(shù)據(jù)元素屬于區(qū)塊中的相同行。相似地,垂直SIMD向量對(duì)齊意味著SIMD向量中的所有數(shù)據(jù)元素屬于區(qū)塊中的相同列。單個(gè)區(qū)塊運(yùn)算采用特定SMD向量對(duì)齊,并且偶然地,區(qū)塊內(nèi)的SMD向量對(duì)齊必須倒轉(zhuǎn)。這可以通過使用矩陣轉(zhuǎn)置運(yùn)算來完成??梢园凑誗MD指令來表達(dá)條帶運(yùn)算,并且特化可以使用人為展開的循環(huán)或者通過使用模板展開的循環(huán)來發(fā)生。
[0072]在第二示例的部分實(shí)施中,最優(yōu)化算法通過對(duì)二十組分混合物執(zhí)行EOS計(jì)算并為各種子算法記錄平均執(zhí)行時(shí)間來測(cè)試。不包括涉及使用條帶的最優(yōu)化。表1示出針對(duì)穩(wěn)定性和分相算法獲得的執(zhí)行時(shí)間。實(shí)施的最優(yōu)化導(dǎo)致2.2倍的平均加速。
[0073]表1:用于穩(wěn)定性和分相算法的執(zhí)行時(shí)間
[0074]
算法之前之后加速
穩(wěn)定性 107 μ s 42.5μ s 2.51χ
分相 60.6 μ s 32.8 μ s 1.85χ
總計(jì) 168 μ s 75.9 μ s 2.21χ
[0075]加速主要由在穩(wěn)定性和分相算法中執(zhí)行的牛頓算法中的顯著性能改進(jìn)而引起。表2示出在應(yīng)用到穩(wěn)定性和分相算法時(shí)關(guān)于逐次代換和牛頓算法兩者所見的性能改進(jìn)。
[0076]表2:用于逐次代換和牛頓算法的執(zhí)行時(shí)間[0077]
【權(quán)利要求】
1.一種在執(zhí)行EOS計(jì)算的指令受限算法中最優(yōu)化矩陣和向量運(yùn)算的方法,其包括: 將與EOS穩(wěn)定性方程或EOS分相方程相關(guān)的每個(gè)矩陣分成數(shù)個(gè)區(qū)塊,其中所述區(qū)塊的大小是非均勻的或均勻的; 將與所述EOS穩(wěn)定性方程或所述EOS分相方程相關(guān)的每個(gè)向量分成數(shù)個(gè)條帶; 在主存儲(chǔ)器、高速緩存或寄存器中存儲(chǔ)所述區(qū)塊和條帶;以及 使用所述區(qū)塊和條帶并行執(zhí)行與逐次代換和牛頓迭代相關(guān)的所述矩陣和向量運(yùn)算。
2.根據(jù)權(quán)利要求1所述的方法,包括在主存儲(chǔ)器、高速緩存或寄存器中順序或交錯(cuò)存儲(chǔ)區(qū)塊或條帶。
3.根據(jù)權(quán)利要求1所述的方法,其中為了最小化單個(gè)硬件體系結(jié)構(gòu)內(nèi)的不同等級(jí)的存儲(chǔ)器之間的數(shù)據(jù)傳遞而選擇所述區(qū)塊的大小。
4.根據(jù)權(quán)利要求1所述的方法,包括基于與所述EOS計(jì)算相關(guān)的區(qū)塊或條帶大小展開循環(huán)。
5.根據(jù)權(quán)利要求1所述的方法,包括將每個(gè)矩陣分成數(shù)個(gè)區(qū)塊,其中所述矩陣被填充為允許使用均勻區(qū)塊的大小。
6.根據(jù)權(quán)利要求1所述的方法,包括通過特化展開循環(huán),其中數(shù)個(gè)不同EOS算法針對(duì)具有不同的數(shù)個(gè)組分的混合物被生成。
7.根據(jù)權(quán)利要求1所述的方法,包括EOS計(jì)算或與EOS計(jì)算相關(guān)的所述區(qū)塊和所述條帶內(nèi)數(shù)據(jù)元素的單精度、雙精度或混合精度向量化使用單指令多數(shù)據(jù)或單指令多線程向量指令。
8.一種被適配用于在執(zhí)行EOS計(jì)算的指令受限算法中的最優(yōu)化矩陣和向量運(yùn)算的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括: 處理器;以及 有形機(jī)器可讀存儲(chǔ)介質(zhì),所述有形機(jī)器可讀存儲(chǔ)介質(zhì)存儲(chǔ)用于由所述處理器執(zhí)行的機(jī)器可讀指令,所述機(jī)器可讀指令包括: 代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器將與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)矩陣分成數(shù)個(gè)區(qū)塊,其中所述區(qū)塊大小是非均勻的或均勻的; 代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器將與所述EOS穩(wěn)定性方程和所述EOS分相方程相關(guān)的每個(gè)向量分成數(shù)個(gè)條帶; 代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器在主存儲(chǔ)器、高速緩存或寄存器中存儲(chǔ)所述區(qū)塊和條帶;以及 代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器使用所述區(qū)塊和條帶并行執(zhí)行與逐次代換和牛頓迭代相關(guān)的所述矩陣和向量運(yùn)算。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述處理器形成標(biāo)量硬件體系結(jié)構(gòu)或矢量硬件體系結(jié)構(gòu)。
10.根據(jù)權(quán)利要求8所述的系統(tǒng),包括順序或交錯(cuò)存儲(chǔ)區(qū)塊或條帶的主存儲(chǔ)器、高速緩存或寄存器。
11.根據(jù)權(quán)利要求8所述的系統(tǒng),包括代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器基于與所述EOS計(jì)算相關(guān)的區(qū)塊或條帶大小展開循環(huán)。
12.根據(jù)權(quán)利要求8所述的系統(tǒng),包括代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器將每個(gè)矩陣分成數(shù)個(gè)區(qū)塊,其中所述矩陣被填充為允許使用均勻區(qū)塊的大小。
13.根據(jù)權(quán)利要求8所述的系統(tǒng),包括代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器為具有不同的數(shù)個(gè)組分的混合物生成數(shù)個(gè)不同EOS算法。
14.根據(jù)權(quán)利要求8所述的系統(tǒng),包括代碼,所述代碼在由所述處理器執(zhí)行時(shí)被適配為使所述處理器使用單指令多數(shù)據(jù)或單指令多線程向量指令,執(zhí)行單精度、雙精度或混合精度EOS計(jì)算或與EOS計(jì)算相關(guān)的所述區(qū)塊和所述條帶內(nèi)的數(shù)據(jù)元素的向量化。
15.一種包括代碼的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),所述代碼被配置為引導(dǎo)處理器: 將與EOS穩(wěn)定性方程和EOS分相方程相關(guān)的每個(gè)矩陣分成數(shù)個(gè)區(qū)塊,其中所述區(qū)塊大小是非均勻的或均勻的; 將與所述EOS穩(wěn)定性方程和所述EOS分相方程相關(guān)的每個(gè)向量分成數(shù)個(gè)條帶; 在主存儲(chǔ)器、高速緩存或寄存器中存儲(chǔ)所述區(qū)塊和條帶;以及 使用所述區(qū)塊和條帶并行執(zhí)行與逐次代換和牛頓迭代相關(guān)的所述矩陣和向量運(yùn)算。
16.根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),包括在主存儲(chǔ)器、高速緩存或寄存器中順序或交錯(cuò)存儲(chǔ)區(qū)塊或條帶。
17.根據(jù)權(quán)利要求 15所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),包括基于與所述EOS計(jì)算相關(guān)的區(qū)塊或條帶大小展開循環(huán)。
18.根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),包括將每個(gè)矩陣分成數(shù)個(gè)區(qū)塊,其中所述矩陣被填充為允許使用均勻區(qū)塊的大小。
19.根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),包括通過特化展開循環(huán),其中數(shù)個(gè)不同EOS算法針對(duì)具有不同的數(shù)個(gè)組分的混合物被生成。
20.根據(jù)權(quán)利要求15所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),包括EOS計(jì)算或與EOS計(jì)算相關(guān)的所述區(qū)塊和所述條帶內(nèi)的數(shù)據(jù)元素的單精度、雙精度或混合精度向量化使用單指令多數(shù)據(jù)或單指令多線程向量指令。
【文檔編號(hào)】G06F7/60GK103959233SQ201280045166
【公開日】2014年7月30日 申請(qǐng)日期:2012年7月23日 優(yōu)先權(quán)日:2011年9月15日
【發(fā)明者】K·豪根 申請(qǐng)人:??松梨谏嫌窝芯抗?br>