技術(shù)報告基于GPU的疊前逆時偏移混合粒度數(shù)據(jù)分割與存儲優(yōu)化_第1頁
技術(shù)報告基于GPU的疊前逆時偏移混合粒度數(shù)據(jù)分割與存儲優(yōu)化_第2頁
技術(shù)報告基于GPU的疊前逆時偏移混合粒度數(shù)據(jù)分割與存儲優(yōu)化_第3頁
技術(shù)報告基于GPU的疊前逆時偏移混合粒度數(shù)據(jù)分割與存儲優(yōu)化_第4頁
技術(shù)報告基于GPU的疊前逆時偏移混合粒度數(shù)據(jù)分割與存儲優(yōu)化_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、計劃類別 項目編號 項目技術(shù)報告課題名稱 項目主持人 承擔(dān)單位 題目:基于GPU的疊前逆時偏移混合粒度數(shù)據(jù)分割與存儲優(yōu)化為提高疊前逆時偏移計算效率,本文采用MPI+CUDA混合粒度相結(jié)合的并行模式,對地震數(shù)據(jù)進行數(shù)據(jù)分割,合理劃分并行任務(wù)??偨Y(jié)出MPI+CUDA并行編程模型,提出疊前逆時偏移的混合粒度并行算法。根據(jù)CUDA特有的存儲方式,對疊前逆時偏移算法提出存儲優(yōu)化方案,更高效的利用GPU上各類存儲器,以進一步降低數(shù)據(jù)訪問所造成的時間延遲。關(guān)鍵詞:圖形處理器;疊前逆時偏移;混合粒度;并行計算;存儲優(yōu)化Abstract:To improve the computational efficien

2、cy of prestack reverse-time migration,this paper adopts the MPI + CUDA parallel model to divide seismic data and parallel tasks.The MPI + CUDA parallel programming model is summarized and the hybrid granularity parallel algorithm of prestack reverse-time migration is proposed.Based on the special st

3、orage model of CUDA,we propose the storage optimization scheme for prestack reverse-time migration algorithm so as to reduce time delay caused by the data access with higher involvements of all kinds of memories on GPU.Keywords:GPU;prestack RTM;hybrid granularity;parallel computing;storage optimizat

4、ion1 引言(Introduction)高性能計算技術(shù)在飛速發(fā)展,從微處理器由單核發(fā)展到多核,從并行機的出現(xiàn)到集群計算技術(shù)的飛速發(fā)展,無不證明計算機技術(shù)的飛速進步。當(dāng)擁有多核處理器的GPU出現(xiàn)1,代替CPU處理大規(guī)模并行問題時,更是將高性能計算推向了一個新的高峰。目前,GPU已經(jīng)廣泛應(yīng)用于各個領(lǐng)域,并大大提高了計算密集問題的計算效率。GPU在石油地球物理勘探領(lǐng)域有著廣泛應(yīng)用。美國休斯頓的Headwave公司專門從事地學(xué)數(shù)據(jù)分析2,充分利用GPU的并行計算潛力,支撐實時工作流程、實時可視化和實時計算,支持疊前地震數(shù)據(jù)的分析與解釋。目前,GPU已在疊前逆時偏移中逐漸展開應(yīng)用。因逆時偏移計算量且存

5、儲量巨大,無法適應(yīng)工業(yè)生產(chǎn)的需要,一直沒有在工業(yè)界得到廣泛應(yīng)用,如何提高逆時偏移的計算效率成為逆時偏移能否大規(guī)模應(yīng)用的重要環(huán)節(jié)3。如何合理地劃分計算任務(wù),對計算數(shù)據(jù)進行合理存儲,提高存儲速度,成為我們首要研究的內(nèi)容。本文采用粗、細(xì)粒度混合的數(shù)據(jù)分割方式劃分并行任務(wù),給出疊前逆時偏移算法下MPI+CUDA的混合計算模型,研究了基于GPU疊前逆時偏移的并行算法。根據(jù)CUDA特有的存儲方式,對逆時偏移算法的存儲提出優(yōu)化方案。2 疊前逆時偏移原理(The principle of prestack reverse time migration)疊前逆時深度偏移求解兩次波動方程,即從源點以時間正方向正演

6、出空間所有點的波場及從檢波點位置以時間逆序推出所有空間反射點的波場;利用相應(yīng)成像條件對兩個波場進行成像。逆時偏移是全波場的雙程波動方程偏移方法4。可以對復(fù)雜速度體成像,不受成像傾角限制(可達(dá)到180);能對所有波動現(xiàn)象(如反射波、折射波、繞射波、回轉(zhuǎn)波、棱柱波和多次波等)進行成像。此過程中波的傳播是相對完整的,因而所用偏移速度模型無論如何復(fù)雜都不需要平滑處理,但對于常規(guī)Kirchhoff偏移是很難做到的。首先,給出該方法的具體實施流程:(1)以時間正方向正演計算震源波場;(2)以時間逆方向逆推接收點波場;(3)利用成像條件,對兩波場成像;(4)所有炮集成像結(jié)果疊加得到最后成像結(jié)果。震源波場正演

7、計算采用的聲波方程表示為式(1)對于式(2)和式(3)的數(shù)值求解方法較多,如有限差法分、有限元和偽譜法等,每種方法都有各自的優(yōu)缺點。本文采用的數(shù)值求解方法是時間方向為四階差分精度的偽譜法。通過數(shù)值計算得到震源波場pF和接收點波場pB后,然后利用相應(yīng)成像條件對兩個波場進行成像。那么,不同成像條件的應(yīng)用,將直接影響成像的振幅、分辨率及其保幅性。所以,成像條件的選擇比較關(guān)鍵,對保幅性的疊前深度偏移更是至關(guān)重要?;ハ嚓P(guān)成像條件式(4),由正演得到的震源波場S(x,y,z,t)和由逆時延拓得到的接收點波場R(x,y,z,t),利用互相關(guān)成像:3 CPU/GPU協(xié)同架構(gòu)(CPU/GPU collabora

8、tive architecture)CUDA是一種將GPU作為數(shù)據(jù)并行計算設(shè)備的軟硬件體系,目前已廣泛應(yīng)用。在運算過程中GPU(設(shè)備)是作為CPU(主機)的協(xié)處理器來執(zhí)行操作的,主機和設(shè)備均有自己的存儲器。CPU-GPU并行編程模型如圖1所示5。4 混合粒度數(shù)據(jù)并行算法(Hybrid-grained data parallel algorithm)粒度是對一個并行計算任務(wù)中計算量大小和通信量大小比值的度量。將問題分解為多個子問題,根據(jù)并行計算任務(wù)的大小,可以分為粗粒度并行、細(xì)粒度并行和中粒度并行。本文采取粗粒度并行與細(xì)粒度并行兩種并行方式設(shè)計算法。4.1 粗粒度數(shù)據(jù)并行4.1.1 粗粒度數(shù)據(jù)分

9、割粗粒度是將一個任務(wù)分解為含有較多計算量的多個子問題,這些子問題可以獨立地并行解決問題。本文采用MPI粗粒度并行方式對地震數(shù)據(jù)進行數(shù)據(jù)分割。首先由主節(jié)點(Master node)根據(jù)有效節(jié)點數(shù)Nn和地震數(shù)據(jù)總炮數(shù)Ns進行節(jié)點間作業(yè)任務(wù)分配。為了提高讀取數(shù)據(jù)的速度,采用多節(jié)點并行讀取數(shù)據(jù),能大大提高數(shù)據(jù)輸入輸出效率。每個節(jié)點單炮偏移完后,返回主節(jié)點判斷是否所有炮集數(shù)據(jù)都計算處理完畢,若沒完成進入下一次循環(huán),直至所有炮集資料都偏移完為止。粗粒度數(shù)據(jù)分割如圖2所示。4.1.2 粗粒度數(shù)據(jù)并行利用多GPUs和多核CPU協(xié)同加速計算逆時偏移,主要思想:因逆時偏移是按照炮集一炮一炮進行偏移,采用MPI啟動

10、多進程,每個進程讀取一炮地震數(shù)據(jù),將一炮地震數(shù)據(jù)發(fā)送到一塊GPU上進行運算,在GPU上啟動多線程并行執(zhí)行一炮地震數(shù)據(jù)的偏移過程。通過調(diào)度實現(xiàn)在多GPUs上并行,將讀取文件和其他步驟設(shè)計成串行過程。充分利用GPU高效的浮點數(shù)處理能力和多核CPU良好的任務(wù)分配和調(diào)度能力。多GPUs算法流程如圖3所示。4.2 細(xì)粒度數(shù)據(jù)并行4.2.1 細(xì)粒度數(shù)據(jù)分割細(xì)粒度是一個任務(wù)劃分成包含較短的程序段和較小的計算量的并行任務(wù),粒度越小,越可開發(fā)更多的并行性,提高并行度,這是有利的方面。但粒度越小,通信次數(shù)和通信量就相對增多,增加了額外開銷。GPU可以同時開啟成百上千個線程,擁有強大的數(shù)據(jù)處理能力,專用于解決數(shù)據(jù)并

11、行計算的問題,具有極高的計算密度(數(shù)學(xué)運算與存儲器運算的比率),是典型的細(xì)粒度并行編程模型。本文采用GPU上細(xì)粒度數(shù)據(jù)分割方式,將MPI一個進程讀取的一炮地震數(shù)據(jù)通過主機發(fā)送到GPU上。每炮地震數(shù)據(jù)有104道地震記錄,每道地震記錄發(fā)送到GPU的一個線程上,每個線程計算一道地震數(shù)據(jù)。線程細(xì)粒度數(shù)據(jù)分割如圖4所示。4.2.2 細(xì)粒度多線程并行在GPU上啟動多線程,將一炮地震數(shù)據(jù)中104道地震數(shù)據(jù)映射到線程中,以取代正演和逆推過程中偏移一炮地震數(shù)據(jù)從第一道循環(huán)到第104道,從第1個采樣點到1024采樣點的兩層循環(huán)。將計算量均勻地加載到各線程,提高算法的并行度,使算術(shù)邏輯單元盡可能均勻地分配到計算任務(wù)

12、,是提高GPU計算效率的舉措之一。4.3 疊前逆時偏移MPI+CUDA混合粒度并行算法結(jié)合粗粒度與細(xì)粒度并行的優(yōu)點,考慮采用MPI+CUDA多粒度混合編程模型,節(jié)點間通過MPI消息傳遞機制,實現(xiàn)粗粒度并行;節(jié)點內(nèi)利用GPU強大的并行數(shù)據(jù)處理能力,使用CUDA架構(gòu)啟用多線程機制,利用共享內(nèi)存實現(xiàn)高效快速細(xì)粒度的數(shù)據(jù)并行和線程并行?;旌狭6染幊棠P腿鐖D5所示。MPI+CUDA混合編程模型能充分發(fā)揮集群節(jié)點間分布式存儲和節(jié)點內(nèi)共享存儲的優(yōu)勢,既可以發(fā)揮每個節(jié)點的巨大計算能力,又可以充分利用集群的可擴展性,使并行效率顯著提高,為CPU+GPU混合架構(gòu)做大型計算提供了一種有效的并行策略。疊前逆時偏移算法

13、的主要部分:震源波場的正傳,檢波點波場的反傳,以及相關(guān)成像條件均是CPU串行計算最為耗時的部分。針對共炮域的逆時偏移而言,本文采取混合粒度的并行方式,以單個炮集為粗粒度并行,通過GPU并行計算的方法,將每個炮集包含的104道地震數(shù)據(jù)發(fā)送到GPU中執(zhí)行線程級細(xì)粒度并行。在GPU上,先將速度數(shù)據(jù)、一炮的地震數(shù)據(jù)和激發(fā)點的初始波場值由內(nèi)部存儲器(內(nèi)存)傳至設(shè)備存儲器(顯存),這樣可以避免由多次重復(fù)對內(nèi)部存儲器的數(shù)據(jù)讀寫所引起的時間延遲。然后把GPU的多核處理器劃分為相應(yīng)個數(shù)的計算塊(block),同時每個計算塊又可以劃分為若干個線程(thread),利用GPU的多線程實現(xiàn)大規(guī)模的并行計算。這樣就可以

14、使得在計算過程中涉及的數(shù)據(jù)讀寫和運算均在設(shè)備存儲器和圖形處理器(GPU)中進行,將波場延拓及相關(guān)成像的計算并行化,達(dá)到提高計算效率的目的。最后再將數(shù)據(jù)傳回內(nèi)部存儲器,通過CPU進行結(jié)果的I/O操作。5 逆時偏移存儲優(yōu)化(Reverse time migration storage optimization)5.1 利用高速存儲器進行優(yōu)化計算寄存器是多處理器上最快的片上存儲器。疊前逆時偏移并行算法內(nèi)核函數(shù)中的變量在允許情況下都定義為寄存器型。每個SM具有32位寄存器,如果內(nèi)核編譯時使用了超過執(zhí)行配置允許數(shù)量的寄存器,會造成內(nèi)核由于寄存器不足而無法啟動。疊前逆時偏移并行算法中每個SM使用寄存器小于

15、32kB,沒有超限。CUDA提供了具有高速讀寫訪問并行數(shù)據(jù)的共享存儲器,其速度在無存儲體沖突時等同于寄存器。共享存儲器是可以被同一塊中的所有線程訪問的可讀寫存儲器,應(yīng)用程序可以利用它來最小化對DRAM的過度提取和巡回,從而降低對DRAM存儲器帶寬的依賴程度。并行算法內(nèi)核函數(shù)中除了部分計算參數(shù)和中間型數(shù)據(jù)運算時需要共享型外,把用于接收從設(shè)備存儲器傳入的目標(biāo)區(qū)和搜索區(qū)的地震數(shù)據(jù)也定義為共享型。由于每個SM上只有48kB共享存儲器,一個SM可以同時執(zhí)行多個線程塊,片內(nèi)的存儲資源則會被分配給這些并發(fā)的線程塊中。根據(jù)每個SM的資源上限,計算分發(fā)單元就可以知道最多能在一個SM上分配多少個block。若在計

16、算相關(guān)系數(shù)的內(nèi)核函數(shù)kernel中每個block中有104個線程,每個block使用49152B共享存儲器,每個線程使用四個寄存器,那么可以有:每個block使用的共享存儲器:49152Byte;每個block使用的寄存器數(shù)量:4*104=416;每個block中的warp數(shù)量:ceil(416/32)=13。根據(jù)每個block使用的資源,就可以計算出kernel中由每個因素限制的最大活動塊數(shù)量:每個SM中的最大活動塊數(shù)量:8;由共享存儲器數(shù)量限制的活動塊數(shù)量:floor(393216/49152)=8;由warp數(shù)量限制的活動塊數(shù)量:floor(32/13)=2。5.2 利用常數(shù)存儲器進行優(yōu)

17、化對當(dāng)前硬件來說,一個half-warp中的線程訪問常數(shù)存儲器中數(shù)據(jù),僅需要1100個時鐘周期就可以獲得這個數(shù)據(jù)。實際使用常數(shù)存儲器時的速度一般還是低于寄存器或者共享存儲器,但還是明顯高于將數(shù)據(jù)存放在全局存儲器中的情況。常數(shù)存儲器空間較小,只有64kB。由于疊前逆時偏移在算法中還需讀取炮點坐標(biāo)文件和每一炮含有104道的計數(shù)文件,大小為2.9kB和960Bytes,而且是相對不變量,因此,在疊前逆時偏移并行算法中可將炮點坐標(biāo)文件和統(tǒng)計每炮含有多少地震道文件放入常數(shù)存儲器中,用來加速坐標(biāo)的讀取。5.3 全局存儲器存儲優(yōu)化疊前逆時偏移算法中在震源波場順時外推的過程中需要保存波場快照,若以每5ms保存

18、一次快照來計算,一炮數(shù)據(jù)偏移過程中保存的波場快照約為3.5G,原有的算法將如此大的數(shù)據(jù)量保存到刀片機當(dāng)前節(jié)點的硬盤上,不同進程將不同數(shù)據(jù)保存在不同的節(jié)點硬盤上,同時進行多節(jié)點I/O存取,時間延遲會非常大。本文選用Tesla C2075 GPU型號,該GPU的全局存儲器的容量達(dá)到4GB,因此可將單炮偏移結(jié)果保存到GPU的全局存儲器下,然后直接進行檢波點波場逆推,省去原來從磁盤讀到內(nèi)存,從內(nèi)存讀到CPU的I/O傳輸時間,同時也省去CPU-GPU主機與設(shè)備之間低吞吐量數(shù)據(jù)傳輸?shù)臅r間。5.4 GPU集群存儲優(yōu)化采用GPU集群進行疊前逆時偏移并行運算,一個節(jié)點上插有兩塊或四塊GPU卡,10個節(jié)點以上的G

19、PU集群。節(jié)點之間使用MPI通信,節(jié)點內(nèi)部使用兩塊GPU進行細(xì)粒度計算,保存的波場快照保存到當(dāng)前節(jié)點的磁盤上。6 結(jié)論(Conclusion)為提高疊前逆時偏移計算效率,本文運用MPI+CUDA混合粒度相結(jié)合的并行方式,提出疊前逆時偏移算法中更加合理的地震數(shù)據(jù)分割方式,更加合理地劃分并行任務(wù),并總結(jié)出MPI+CUDA并行編程模型,將此模型應(yīng)用于疊前逆時偏移算法中,提出疊前逆時偏移的混合粒度并行算法。同時,本文還提出疊前逆時偏移算法的存儲優(yōu)化策略,更高效的利用GPU上各類存儲器,以進一步降低數(shù)據(jù)訪問所造成的時間延遲。參考文獻(References)1 Foley D,Danskin J.Ultra-Performance Pascal GPU and NVLink InterconnectJ.IEEE Mi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論