午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種優(yōu)化Cache行為提升油藏?cái)?shù)值模擬效率的方法

文檔序號(hào):6443250閱讀:486來(lái)源:國(guó)知局
專利名稱:一種優(yōu)化Cache行為提升油藏?cái)?shù)值模擬效率的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種提升油藏?cái)?shù)值模擬效率的方法,尤其涉及一種優(yōu)化Cache行為提升油藏?cái)?shù)值模擬效率的方法。
背景技術(shù)
隨著計(jì)算機(jī)的發(fā)展,油藏?cái)?shù)值模擬逐步成為石油領(lǐng)域的一門(mén)成熟技術(shù)。該技術(shù)就是應(yīng)用數(shù)學(xué)模型再現(xiàn)實(shí)際油田生產(chǎn)動(dòng)態(tài)。在油藏?cái)?shù)值模擬過(guò)程中,數(shù)學(xué)模型是由偏微分方程與必要的初始和邊界條件一起構(gòu)成的,而該模型可用來(lái)近似預(yù)測(cè)油藏的動(dòng)態(tài)。在油藏中發(fā)生著一些最為重要的物理過(guò)程, 如流動(dòng)的流體分離成油、水、氣三相和不同相態(tài)之間的質(zhì)量轉(zhuǎn)移。數(shù)學(xué)模型中的那些方程式必須與這些最重要的物理過(guò)程相一致。在油藏?cái)?shù)值模擬中,經(jīng)有限元分析,物理區(qū)域被離散為非規(guī)則網(wǎng)格,求解每個(gè)網(wǎng)格的壓力等變量的問(wèn)題最終被歸結(jié)為采用共軛梯度法高效地求解大型稀疏線性方程組的問(wèn)題。其線性方程組的求解可以用A/二/表示,其中u表示未知數(shù)向量,A表示大型稀疏系數(shù)矩陣,/表示常量向量。在油藏?cái)?shù)值模擬領(lǐng)域,系數(shù)矩陣^中的非零元素所占總矩陣的容量通常小于1%。在利用共軛梯度法求解大型系數(shù)線性方程組的過(guò)程中,大量運(yùn)用了稀疏矩陣向量乘運(yùn)算。傳統(tǒng)的稀疏矩陣向量乘運(yùn)算為串行方法,該方法主要用于求解其中^是維度為η Χ m的稀疏矩陣,^是維度為m 的運(yùn)算向量,_7是維度為《的結(jié)果向量,即演算結(jié)果。傳統(tǒng)的串行方法使用基于三元組的存儲(chǔ)格式或其改進(jìn)CSR存儲(chǔ)格式作為基本數(shù)據(jù)結(jié)構(gòu),嚴(yán)格按照矩陣向量乘的算法流程進(jìn)行演算,并能夠得到正確的演算結(jié)果。然而由于其存儲(chǔ)格式本身的不足,油藏?cái)?shù)值模擬演算沒(méi)有很好地利用數(shù)據(jù)局部性的特點(diǎn),因而Cache命中率較低,從而導(dǎo)致整體性能表現(xiàn)平平。近年來(lái),隨著計(jì)算機(jī)硬件的不斷發(fā)展,越來(lái)越多的計(jì)算機(jī)采用了多核的平臺(tái)構(gòu)架, 傳統(tǒng)的油藏?cái)?shù)值模擬的演算流程不能有效地利用多核平臺(tái)的優(yōu)勢(shì),其對(duì)機(jī)器本身性能的利用也不充分。另外,傳統(tǒng)的存儲(chǔ)格式或其改進(jìn)657 存儲(chǔ)格式在運(yùn)算中較低的Cache命中率,制約了油藏?cái)?shù)值模擬演算的整體性能,故而亟需改進(jìn)。

發(fā)明內(nèi)容
針對(duì)油藏?cái)?shù)值模擬中利用共軛梯度法求解大型稀疏線性方程組存在的Cache命中率不高,硬件利用率不高的問(wèn)題。本發(fā)明提出一種優(yōu)化Cache行為提升油藏?cái)?shù)值模擬效率的方法,該方法在共軛梯度法中將稀疏矩陣轉(zhuǎn)化為四叉樹(shù)存儲(chǔ)格式。該格式能充分利用計(jì)算機(jī)硬件及性能,組織并進(jìn)行多線程計(jì)算的矩陣向量乘運(yùn)算方法,從而提升油藏?cái)?shù)值模擬的整體效率。該方法應(yīng)擁有自動(dòng)調(diào)優(yōu)的功能,使之能根據(jù)所部署計(jì)算機(jī)的特性進(jìn)行調(diào)整, 從而使并行運(yùn)算體現(xiàn)出更高的計(jì)算性能。通過(guò)利用多核平臺(tái)的優(yōu)勢(shì),提升稀疏矩陣向量的運(yùn)算效率,充分利用計(jì)算機(jī)硬件,進(jìn)行并行計(jì)算,基于四叉樹(shù)存儲(chǔ)結(jié)構(gòu),對(duì)稀疏矩陣進(jìn)行分塊,在運(yùn)算過(guò)程中大幅提升Cache命中率,解決傳統(tǒng)串行運(yùn)算中因數(shù)據(jù)結(jié)構(gòu)導(dǎo)致的Cache命中率低,資源利用不足,性能表現(xiàn)平平的問(wèn)題。本發(fā)明關(guān)注于油藏?cái)?shù)值模擬演算中極為活躍的計(jì)算熱點(diǎn)——稀疏矩陣向量乘,引入了一種基于四叉樹(shù)的稀疏矩陣向量乘方法,該方法的優(yōu)化工作包括讀入稀疏矩陣,并將之轉(zhuǎn)化為四叉樹(shù)存儲(chǔ)格式;采用預(yù)調(diào)優(yōu)算法確定子矩陣塊的最優(yōu)大?。贿\(yùn)算中集成向量化、軟件流水線與多線程優(yōu)化技術(shù)以提升共軛梯度解法器的性能,從而提高油藏?cái)?shù)值模擬演算的整體運(yùn)算效率。本發(fā)明方法包括以下步驟 步驟1.準(zhǔn)備數(shù)據(jù)
步驟1-1,首先判斷是否有計(jì)算任務(wù),若有,則轉(zhuǎn)入步驟1-2,否則演算結(jié)束; 步驟1-2,判斷是否指定進(jìn)行預(yù)調(diào)優(yōu),若是,則進(jìn)行步驟1-3的預(yù)調(diào)優(yōu),否則轉(zhuǎn)入步驟 1-4進(jìn)行數(shù)據(jù)格式化;
步驟1-3,讀取稀疏矩陣于文件中的記錄數(shù)據(jù),進(jìn)行預(yù)調(diào)優(yōu)過(guò)程,并將最佳劃分塊大小寫(xiě)入系統(tǒng);
步驟1-4,若稀疏矩陣數(shù)據(jù)不為四叉樹(shù)存儲(chǔ)格式,則依照系統(tǒng)內(nèi)的最佳劃分塊大小,對(duì)稀疏矩陣進(jìn)行四叉樹(shù)格式轉(zhuǎn)化,并將轉(zhuǎn)化結(jié)果寫(xiě)回?cái)?shù)據(jù)文件;
若設(shè)J為四叉樹(shù)存儲(chǔ)格式的劃分塊固定大小,運(yùn)算矩陣的維度為/PXG其中與C分別為對(duì)應(yīng)的行數(shù)與列數(shù),則步驟1-4所涉及的四叉樹(shù)格式轉(zhuǎn)化過(guò)程如下所述 1-4-1.劃分矩陣為四個(gè)區(qū)域大小大致相同的子矩陣區(qū)域塊; 1-4-2.判斷各子矩陣區(qū)域大小是否納入給定區(qū)域范圍若是,則該矩陣劃分結(jié)束; 1-4-3.否則,對(duì)子矩陣區(qū)域塊遞歸進(jìn)行劃分直到其所有子區(qū)域塊的劃分結(jié)束; 步驟1-3中的預(yù)調(diào)優(yōu)過(guò)程如下所述
1-3-1.枚舉"為數(shù)據(jù)集(2>€[1,1^410§2馬丄|>g2CU)]}內(nèi)的所有取值,并以之
為據(jù)對(duì)稀疏矩陣進(jìn)行四叉樹(shù)格式轉(zhuǎn)化;
1-3-2.對(duì)基于當(dāng)前劃分子塊大小的四叉樹(shù)結(jié)構(gòu)矩陣進(jìn)行稀疏矩陣向量乘運(yùn)算; 1-3-3.記錄運(yùn)算消耗時(shí)間最小的子塊劃分大小作為最佳劃分塊大??; 步驟2.部署
數(shù)據(jù)準(zhǔn)備完成后,通過(guò)部署算法進(jìn)行運(yùn)算部署,具體是
步驟2-1,檢測(cè)各行非零元素所占字節(jié),若所占字節(jié)不是向量化所需字節(jié)對(duì)齊數(shù)的整數(shù)倍,則進(jìn)行數(shù)據(jù)填充;
步驟2-2,開(kāi)啟軟件流水線支持,并進(jìn)行循環(huán)自動(dòng)展開(kāi);
步驟2-3,根據(jù)計(jì)算機(jī)CPU核數(shù),進(jìn)行運(yùn)算數(shù)據(jù)的平均分配,并將CPU核與運(yùn)算線程進(jìn)行綁定;
步驟3.演算
步驟3-1,讀取所需的迭代次數(shù),開(kāi)始迭代;
步驟3-2,基于步驟O)中部署算法的結(jié)果,進(jìn)行稀疏矩陣向量運(yùn)算; 步驟3-3,判斷是否結(jié)束迭代,若是返回結(jié)果結(jié)束演算,否則轉(zhuǎn)入步驟3-2。本發(fā)明的有益效果
1、本發(fā)明利用了數(shù)據(jù)局部性原理,采用靈活方便的四叉樹(shù)存儲(chǔ)結(jié)構(gòu)針對(duì)稀疏矩陣進(jìn)行分塊處理,降低計(jì)算時(shí)間復(fù)雜度中的常數(shù),通過(guò)提高Cache命中率的方式優(yōu)化Cache行為, 提高共軛梯度法解法器的性能,從而提升油藏?cái)?shù)值模擬效率。2、本發(fā)明充分利用了多核平臺(tái)的性能優(yōu)勢(shì),將計(jì)算中的熱點(diǎn)并行化處理,利用向量化、軟件流水線與多線程優(yōu)化技術(shù),以較小的開(kāi)銷換取較高的運(yùn)算效率,從而提升油藏?cái)?shù)值模擬效率。3、本發(fā)明對(duì)計(jì)算機(jī)硬件進(jìn)行性能上的自動(dòng)調(diào)優(yōu),保證了迭代運(yùn)算的高效性。


圖1為本發(fā)明進(jìn)行稀疏矩陣向量乘演算的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施方法對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。參照?qǐng)D1執(zhí)行步驟來(lái)說(shuō)明本發(fā)明實(shí)施過(guò)程 步驟1,準(zhǔn)備數(shù)據(jù)
步驟1-1,首先判斷是否有計(jì)算任務(wù),若有,則轉(zhuǎn)入步驟1-2,否則演算結(jié)束; 轉(zhuǎn)入步驟1-2,讀取系統(tǒng)變量,判斷是否指定進(jìn)行預(yù)調(diào)優(yōu),若是則進(jìn)行步驟1-3的預(yù)調(diào)優(yōu),否則轉(zhuǎn)入步驟1-4進(jìn)行數(shù)據(jù)格式化;
轉(zhuǎn)入步驟1-3讀取稀疏矩陣于文件中的記錄數(shù)據(jù),進(jìn)行預(yù)調(diào)優(yōu)過(guò)程,并將最佳劃分塊大小以環(huán)境變量的方式寫(xiě)入系統(tǒng)。此步驟之目的在于通過(guò)自動(dòng)調(diào)優(yōu)獲取一個(gè)適宜于當(dāng)前計(jì)算機(jī)硬件平臺(tái)的子塊劃分大小,進(jìn)而優(yōu)化Cache行為;
轉(zhuǎn)入步驟1-4,若稀疏矩陣數(shù)據(jù)不為四叉樹(shù)存儲(chǔ)格式,依照系統(tǒng)內(nèi)的最佳劃分塊大小, 對(duì)稀疏矩陣進(jìn)行四叉樹(shù)格式轉(zhuǎn)化,并將轉(zhuǎn)化結(jié)果寫(xiě)回?cái)?shù)據(jù)文件
若設(shè)J為四叉樹(shù)存儲(chǔ)格式的劃分塊固定大小,即存于系統(tǒng)內(nèi)的最佳劃分塊大小,運(yùn)算矩陣的維度為Χ G其中與C分別為對(duì)應(yīng)的行數(shù)與列數(shù)。則步驟1-4所涉及的四叉樹(shù)格式轉(zhuǎn)化過(guò)程如下所述
1-4-1.將待處理矩陣劃分為四個(gè)區(qū)域大小大致相同的子矩陣區(qū)域塊;
1-4-2.判斷各子矩陣區(qū)域大小是否納入給定區(qū)域范圍么若是,則該矩陣劃分結(jié)束;
1-4-3.否則,對(duì)子矩陣區(qū)域塊遞歸進(jìn)行劃分直到其所有子區(qū)域塊的劃分結(jié)束。上述格式轉(zhuǎn)化的優(yōu)勢(shì)在于,通過(guò)改變稀疏矩陣的存儲(chǔ)格式,提高稀疏矩陣向量乘運(yùn)算中的Cache命中率,從而優(yōu)化Cache行為,提升共軛梯度解法器的性能,從而提升油藏?cái)?shù)值模擬效率。步驟1-3中的預(yù)調(diào)優(yōu)過(guò)程如下所述
1-3-1.枚舉“為數(shù)據(jù)集伊丨!!印譯怨心‘為藥丄|>g2q」)]}內(nèi)的所有取值,并以之
為據(jù)對(duì)稀疏矩陣進(jìn)行四叉樹(shù)格式轉(zhuǎn)化;
1-3-2.對(duì)基于當(dāng)前劃分子塊大小的四叉樹(shù)結(jié)構(gòu)矩陣進(jìn)行稀疏矩陣向量乘運(yùn)算; 1-3-3.記錄各劃分子塊大小的四叉樹(shù)結(jié)構(gòu)進(jìn)行稀疏矩陣向量乘運(yùn)算的時(shí)間開(kāi)銷,取其時(shí)間開(kāi)銷最小的子塊劃分大小作為當(dāng)前系統(tǒng)的最佳劃分塊并返回相關(guān)數(shù)值;
步驟2.數(shù)據(jù)準(zhǔn)備完成后,通過(guò)部署算法進(jìn)行運(yùn)算部署整合優(yōu)化,以便進(jìn)行演算; 步驟2中的部署算法如下所述2-1.檢測(cè)各行非零元素所占字節(jié),若所占字節(jié)數(shù)不是向量化所需字節(jié)對(duì)齊數(shù)的整數(shù)倍則進(jìn)行數(shù)據(jù)填充。此步驟中的數(shù)據(jù)填充,一般為填充全零數(shù)據(jù)至當(dāng)前行;
2-2.開(kāi)啟軟件流水化支持,并進(jìn)行循環(huán)自動(dòng)展開(kāi)。此步驟亦可由編譯器自動(dòng)開(kāi)啟; 2-3.根據(jù)計(jì)算機(jī)CPU核數(shù),進(jìn)行運(yùn)算數(shù)據(jù)的平均分配,并將CPU核與運(yùn)算線程進(jìn)行綁定。此步驟需利用操作系統(tǒng)的相關(guān)API進(jìn)行硬件綁定,使得運(yùn)算線程不至于頻繁切換CPU 核,導(dǎo)致產(chǎn)生核間數(shù)據(jù)通訊的額外開(kāi)銷; 步驟3演算
轉(zhuǎn)入步驟3-1,讀取所需的迭代次數(shù),開(kāi)始迭代; 轉(zhuǎn)入步驟3-2,基于O)中部署算法的結(jié)果,進(jìn)行稀疏矩陣向量運(yùn)算; 轉(zhuǎn)入步驟3-3,判斷是否結(jié)束迭代,若是返回結(jié)果至上層的共軛梯度解法器并結(jié)束演算,否則轉(zhuǎn)入步驟3-2。
權(quán)利要求
1. 一種優(yōu)化Cache行為提升油藏?cái)?shù)值模擬效率的方法,其特征在于該方法包括以下步驟步驟1.準(zhǔn)備數(shù)據(jù),具體是步驟1-1.首先判斷是否有計(jì)算任務(wù),若有,則轉(zhuǎn)入步驟1-2,否則演算結(jié)束; 步驟1-2.判斷是否指定進(jìn)行預(yù)調(diào)優(yōu),若是,則進(jìn)行步驟1-3的預(yù)調(diào)優(yōu),否則轉(zhuǎn)入步驟 1-4進(jìn)行數(shù)據(jù)格式化;步驟1-3.讀取稀疏矩陣于文件中的記錄數(shù)據(jù),進(jìn)行預(yù)調(diào)優(yōu)過(guò)程,并將最佳劃分塊大小寫(xiě)入系統(tǒng);步驟1-4.若稀疏矩陣數(shù)據(jù)不為四叉樹(shù)存儲(chǔ)格式,則依照系統(tǒng)內(nèi)的最佳劃分塊大小,對(duì)稀疏矩陣進(jìn)行四叉樹(shù)格式轉(zhuǎn)化,并將轉(zhuǎn)化結(jié)果寫(xiě)回?cái)?shù)據(jù)文件;若設(shè)J為四叉樹(shù)存儲(chǔ)格式的劃分塊固定大小,運(yùn)算矩陣的維度為/PXG其中與C分別為對(duì)應(yīng)的行數(shù)與列數(shù),則步驟1-4所涉及的四叉樹(shù)格式轉(zhuǎn)化過(guò)程如下所述 1-4-1.劃分矩陣為四個(gè)區(qū)域大小大致相同的子矩陣區(qū)域塊; 1-4-2.判斷各子矩陣區(qū)域大小是否納入給定區(qū)域范圍若是,則該矩陣劃分結(jié)束; 1-4-3.否則,對(duì)子矩陣區(qū)域塊遞歸進(jìn)行劃分直到其所有子區(qū)域塊的劃分結(jié)束; 步驟1-3中的預(yù)調(diào)優(yōu)過(guò)程如下所述 1-3-1.枚舉J為數(shù)據(jù)集{2s |n € [ImaxCLlog2 ^J, LM2 G」)])內(nèi)的所有取值,并以之為據(jù)對(duì)稀疏矩陣進(jìn)行四叉樹(shù)格式轉(zhuǎn)化;1-3-2.對(duì)基于當(dāng)前劃分子塊大小的四叉樹(shù)結(jié)構(gòu)矩陣進(jìn)行稀疏矩陣向量乘運(yùn)算; 1-3-3.記錄運(yùn)算消耗時(shí)間最小的子塊劃分大小作為最佳劃分塊大小; 步驟2.數(shù)據(jù)準(zhǔn)備完成后,通過(guò)部署算法進(jìn)行運(yùn)算部署,具體是 步驟2-1.檢測(cè)各行非零元素所占字節(jié),若所占字節(jié)不是向量化所需字節(jié)對(duì)齊數(shù)的整數(shù)倍,則進(jìn)行數(shù)據(jù)填充;步驟2-2.開(kāi)啟軟件流水線支持,并進(jìn)行循環(huán)自動(dòng)展開(kāi);步驟2-3.根據(jù)計(jì)算機(jī)CPU核數(shù),進(jìn)行運(yùn)算數(shù)據(jù)的平均分配,并將CPU核與運(yùn)算線程進(jìn)行綁定;步驟3.演算,具體是步驟3-1.讀取所需的迭代次數(shù),開(kāi)始迭代;步驟3-2.基于步驟中部署算法的結(jié)果,進(jìn)行稀疏矩陣向量運(yùn)算; 步驟3-3.判斷是否結(jié)束迭代,若是返回結(jié)果結(jié)束演算,否則轉(zhuǎn)入步驟3-2。
全文摘要
本發(fā)明涉及一種優(yōu)化Cache行為提升油藏?cái)?shù)值模擬效率的方法。傳統(tǒng)的方法Cache命中率較低,導(dǎo)致整體性能表現(xiàn)平平。本發(fā)明引入了一種基于四叉樹(shù)的稀疏矩陣向量乘方法,該方法的優(yōu)化工作包括讀入稀疏矩陣,并將之轉(zhuǎn)化為四叉樹(shù)存儲(chǔ)格式;采用預(yù)調(diào)優(yōu)算法確定子矩陣塊的最優(yōu)大??;運(yùn)算中集成向量化、軟件流水線與多線程優(yōu)化技術(shù)以提升共軛梯度解法器的性能,從而提高油藏?cái)?shù)值模擬演算的整體運(yùn)算效率。
文檔編號(hào)G06F17/50GK102521463SQ20111044136
公開(kāi)日2012年6月27日 申請(qǐng)日期2011年12月26日 優(yōu)先權(quán)日2011年12月26日
發(fā)明者萬(wàn)健, 任永堅(jiān), 周麗, 莊立, 張紀(jì)林, 殷昱煜 申請(qǐng)人:杭州電子科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1