一種應(yīng)用cpu-gpu平臺進(jìn)行地震波逆時偏移成像方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及反射波地震數(shù)據(jù)處理技術(shù)領(lǐng)域,具體地,涉及一種應(yīng)用CPU-GPU平臺 進(jìn)行地震波逆時偏移成像方法。
【背景技術(shù)】
[0002] 基于全聲波方程的逆時偏移方法通過在時間-空間域用顯示高階有限差分算法 直接求解全聲波偏微分方程,真實(shí)地模擬了波的傳播現(xiàn)象。該方法完全遵守波動方程,不存 在傾角限制,可適用于速度場的急劇變化,在三維復(fù)雜構(gòu)造成像方面具備明顯優(yōu)勢,成像精 度高。
[0003] 由于采用了有限差分算法以及需要保存大量的震源波場數(shù)據(jù),相對其它偏移算 法,逆時偏移方法的運(yùn)算成本依然很高。不斷提高計(jì)算效率是近年逆時偏移技術(shù)發(fā)展的重 要課題之一。以2001年NVIDIA公司推出的可用于編程的GPU芯片為標(biāo)志,近年來發(fā)展的 GTO通用并行計(jì)算技術(shù),已日趨實(shí)用成型,獲得諸多應(yīng)用領(lǐng)域的廣泛關(guān)注。利用并行集群服 務(wù)器提供的CPU-GPU平臺做高性能并行計(jì)算是適應(yīng)石油工業(yè)中大規(guī)模計(jì)算需求的一個主 流發(fā)展方向。市面上提供的并行集群服務(wù)器一般都具有多個計(jì)算節(jié)點(diǎn),包括一個主節(jié)點(diǎn)和 多個從屬節(jié)點(diǎn),由于主節(jié)點(diǎn)不參與計(jì)算,所以一般選擇沒有配備GPU的節(jié)點(diǎn)作為主節(jié)點(diǎn),配 備GPU的節(jié)點(diǎn)作為從屬節(jié)點(diǎn)用作高效計(jì)算,從屬節(jié)點(diǎn)中通常包括一個CPU和兩個GPU。
[0004] 目前,利用CPU-GPU平臺的逆時偏移技術(shù)是國際各大公司的特色技術(shù)之一,各個 公司所采取的并行方式也各不相同,一個出色的并行框架能夠充分利用集群的計(jì)算資源, 最大程度的節(jié)約逆時偏移的運(yùn)算成本,是開發(fā)逆時偏移商業(yè)化軟件的必備因素之一。
[0005] 但目前利用CPU-GPU平臺的逆時偏移技術(shù)大多采用的是主奴模式的并行計(jì)算處 理,這種模式的特點(diǎn)是:由主節(jié)點(diǎn)將任務(wù)平均分配給多個從屬節(jié)點(diǎn);由主節(jié)點(diǎn)完成向從屬 節(jié)點(diǎn)傳遞數(shù)據(jù)和速度模型,以及收集從屬節(jié)點(diǎn)計(jì)算的偏移結(jié)果的工作;若某一從屬節(jié)點(diǎn)發(fā) 生故障,則全部節(jié)點(diǎn)都要暫停,等到故障消除后,再啟動全部節(jié)點(diǎn)繼續(xù)工作;若某一從屬節(jié) 點(diǎn)損壞,則整個項(xiàng)目都要重新開始??梢?,這種主奴模式的并行計(jì)算處理中各節(jié)點(diǎn)間的運(yùn)算 不夠獨(dú)立,并不能充分發(fā)揮集群的計(jì)算能力。
[0006] 此外,利用CPU-GPU平臺實(shí)現(xiàn)逆時偏移技術(shù)的難點(diǎn)之一是平衡GPU的髙效計(jì)算能 力和數(shù)據(jù)存取負(fù)荷之間的矛盾。這是由于在逆時偏移算法中,炮點(diǎn)波場的模擬和檢波點(diǎn)波 場的重建是在相反的時序方向上進(jìn)行的,而成像過程要求同一時刻的兩個波場做互相關(guān), 這就需要把先計(jì)算的炮點(diǎn)波場保存下來,在檢波點(diǎn)波場的重建過程中再讀取相應(yīng)時刻的炮 點(diǎn)波場,做互相關(guān)運(yùn)算而成像,炮點(diǎn)波場為一個四維(三維空間加一維時間)數(shù)據(jù)體,規(guī)模較 大,數(shù)據(jù)存取所需的時間可能遠(yuǎn)超過GPU的運(yùn)算時間,因此,在CPU-GPU平臺上實(shí)現(xiàn)逆時偏 移的困難在于如何減少數(shù)據(jù)存取所占用的計(jì)算機(jī)時間?,F(xiàn)有的解決方案之一是用GPU的計(jì) 算時間換取數(shù)據(jù)存儲時間,其過程為:(1)先順時序模擬炮點(diǎn)波場,不保存波場;(2)用最 后幾個時刻的波場逆時重建炮點(diǎn)波場,同時也同步地逆時計(jì)算重建的檢波點(diǎn)波場;(3)在 相同的時刻做兩個波場的相關(guān)以成像。這種方案雖然沒有了波場存取的問題,但是卻存在 如下問題:炮點(diǎn)波場卻計(jì)算了兩遍;為了可以逆時重建炮點(diǎn)波場,整個過程中波場能量必 須保持在計(jì)算區(qū)域內(nèi),不可泄漏,因此不宜使用吸收邊界條件;為回避相干的計(jì)算域邊界反 射,需要在計(jì)算區(qū)域的各個邊界面上加上一個隨機(jī)速度帶,用隨機(jī)的人為反射替代相干的 人為反射,但是隨即速度帶將會帶來反射噪聲,給計(jì)算結(jié)果帶來影響。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明實(shí)施例的主要目的在于提供一種應(yīng)用CPU-GPU平臺進(jìn)行地震波逆時偏移 成像方法,以提供一種能夠充分發(fā)揮CPU-GPU平臺的集群并行處理能力的逆時偏移成像技 術(shù)。
[0008] 為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種應(yīng)用CPU-GPU平臺進(jìn)行地震波逆時偏 移成像方法,應(yīng)用于包括一個主控節(jié)點(diǎn)及多個從屬節(jié)點(diǎn)的CPU-GPU平臺,所述主控節(jié)點(diǎn)包 括一個CPU,所述從屬節(jié)點(diǎn)包括一個CPU及兩個GPU,所述方法包括 :
[0009] 所述主控節(jié)點(diǎn)根據(jù)炮集數(shù)據(jù)生成任務(wù)池,所述任務(wù)池包含至少一個任務(wù),所述至 少一個任務(wù)與所述炮集數(shù)據(jù)中的炮一一對應(yīng),且所述任務(wù)包括對應(yīng)炮的地震數(shù)據(jù)及速度模 型;
[0010] 所述主控節(jié)點(diǎn)根據(jù)GPU對單炮地震數(shù)據(jù)執(zhí)行逆時偏移計(jì)算所需的內(nèi)存大小,確定 CPU-GPU并行處理策略,并將該CPU-GPU并行處理策略發(fā)送給各從屬節(jié)點(diǎn);
[0011] 所述主控節(jié)點(diǎn)啟動所述各從屬節(jié)點(diǎn);
[0012] 所述各從屬節(jié)點(diǎn)從所述任務(wù)池領(lǐng)取任務(wù),并按照所述CPU-GPU并行處理策略,利 用當(dāng)前任務(wù)所包括的炮地震數(shù)據(jù)及速度模型進(jìn)行逆時偏移計(jì)算,得到當(dāng)前任務(wù)對應(yīng)的單炮 逆時偏移結(jié)果;
[0013] 所述主控節(jié)點(diǎn)對所述各項(xiàng)任務(wù)對應(yīng)的單炮逆時偏移結(jié)果進(jìn)行疊加處理,得到所述 炮集數(shù)據(jù)對應(yīng)的逆時偏移成像剖面;
[0014] 其中,所述CPU-GPU并行處理策略為:
[0015] 策略一,每一從屬節(jié)點(diǎn)中的CPU對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算,同時,兩個 GTO利用自身緩存各對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算;或,
[0016] 策略二,每一從屬節(jié)點(diǎn)中的CPU對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算,同時,兩個 GI3U利用自身緩存和CPU內(nèi)存各對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算;或,
[0017] 策略三,每一從屬節(jié)點(diǎn)中的CPU對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算,同時,兩個 GTO利用自身緩存共同對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算。
[0018] 借助于上述技術(shù)方案,本發(fā)明考慮了 GPU自身的緩存可能不足以滿足進(jìn)行逆時偏 移計(jì)算的需求,提出了首先由主控節(jié)點(diǎn)選擇合適的CPU-GPU并行處理策略,再由各從屬節(jié) 點(diǎn)根據(jù)CPU-GPU并行處理策略處理任務(wù)的處理模式,從整體上提高了 CPU-GPU平臺的資源 利用率,充分發(fā)揮了 CPU-GPU平臺并行計(jì)算的能力,同時與現(xiàn)有技術(shù)通過用GPU的計(jì)算時間 換取數(shù)據(jù)存儲時間以平衡GPU髙效計(jì)算能力和數(shù)據(jù)存取負(fù)荷之間的矛盾相比,本發(fā)明節(jié)省 了一個炮點(diǎn)波場模擬的過程,而且沒有來自隨機(jī)速度帶的反射噪聲。本發(fā)明方法還具有并 行程度高,易于實(shí)現(xiàn)的優(yōu)點(diǎn),滿足了逆時偏移成像商業(yè)化軟件的開發(fā)以及工業(yè)化生產(chǎn)的需 要。
【附圖說明】
[0019] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例描述 中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些 實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些 附圖獲得其他的附圖。
[0020] 圖1是本發(fā)明提供的應(yīng)用CPU-GPU平臺進(jìn)行地震波逆時偏移成像方法的流程示意 圖;
[0021] 圖2是本發(fā)明提供的從屬節(jié)點(diǎn)采用策略一時的CPU-GPU處理示意圖;
[0022] 圖3是本發(fā)明提供的從屬節(jié)點(diǎn)采用策略二時的CPU-GPU處理示意圖;
[0023] 圖4是本發(fā)明提供的從屬節(jié)點(diǎn)采用策略三時的CPU-GPU處理示意圖;
[0024] 圖5是本發(fā)明實(shí)施例提供的逆時偏移成像的計(jì)算效率統(tǒng)計(jì)結(jié)果;
[0025] 圖6是本發(fā)明實(shí)施例提供的逆時偏移成像結(jié)果剖面圖。
【具體實(shí)施方式】
[0026] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0027] 本發(fā)明提供一種應(yīng)用CPU-GPU平臺進(jìn)行地震波逆時偏移成像方法,應(yīng)用于包括一 個主控節(jié)點(diǎn)及多個從屬節(jié)點(diǎn)的CPU-GPU平臺,所述主控節(jié)點(diǎn)包括一個CPU,所述從屬節(jié)點(diǎn)包 括一個CPU及兩個GPU,如圖1所示,該方法包括 :
[0028] 步驟S11,主控節(jié)點(diǎn)根據(jù)炮集數(shù)據(jù)生成任務(wù)池,所述任務(wù)池包含至少一個任務(wù),所 述至少一個任務(wù)與所述炮集數(shù)據(jù)中的炮一一對應(yīng),且所述任務(wù)包括對應(yīng)炮的地震數(shù)據(jù)及速 度模型。
[0029] 步驟S12,主控節(jié)點(diǎn)根據(jù)GPU對單炮地震數(shù)據(jù)執(zhí)行逆時偏移計(jì)算所需的內(nèi)存大小, 確定CPU-GPU并行處理策略,并將該CPU-GPU并行處理策略發(fā)送給各從屬節(jié)點(diǎn)。
[0030] 本發(fā)明中,CPU-GPU并行處理策略可以為:
[0031] 策略一,每一從屬節(jié)點(diǎn)中的CPU對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算,同時,兩個 GTO利用自身緩存各對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算;或,
[0032] 策略二,每一從屬節(jié)點(diǎn)中的CPU對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算,同時,兩個 GI3U利用自身緩存和CPU內(nèi)存各對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算;或,
[0033] 策略三,每一從屬節(jié)點(diǎn)中的CPU對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算,同時,兩個 GTO利用自身緩存共同對一炮地震數(shù)據(jù)進(jìn)行逆時偏移計(jì)算。
[0034] 具體的,炮地震數(shù)據(jù)的不同或逆時偏移計(jì)算參數(shù)的不同都會影響到GPU執(zhí)行逆時 偏移計(jì)算所需的內(nèi)存大小,本發(fā)明中,主控節(jié)點(diǎn)可以對GPU所要處理的炮地震數(shù)據(jù)以及時 偏移計(jì)算參數(shù)綜合考慮后,再確定GPU執(zhí)行逆時偏移計(jì)算所需的內(nèi)存大小。
[0035] 由于同一炮集數(shù)據(jù)中不同炮的地震數(shù)據(jù)量差別不大,當(dāng)逆時偏移計(jì)算參數(shù)相同 時,針對不同的炮地震數(shù)據(jù),GPU執(zhí)行逆時偏移計(jì)算所需的內(nèi)存大小也差別很小。但是,逆 時偏移計(jì)算參數(shù)對整個計(jì)算的影響卻很大,例如偏移孔徑增大、計(jì)算網(wǎng)格間隔減小或者偏 移頻率提高都能夠使得逆時偏移計(jì)算所需的內(nèi)存增大。因此具體實(shí)施時,為了簡化計(jì)算過 程,提高計(jì)算效率,主控節(jié)點(diǎn)可以僅根據(jù)逆時偏移計(jì)算參數(shù)來確定GPU執(zhí)行逆時偏移計(jì)算 所需的內(nèi)存大小。即一種較佳的實(shí)施例中,主控節(jié)點(diǎn)可以先根據(jù)所述逆時偏移計(jì)算參數(shù),計(jì) 算GPU對單炮地震數(shù)據(jù)執(zhí)行逆時偏移計(jì)算所需內(nèi)存的大小,然后再確定CPU-GPU并行處理 策略。本發(fā)明中的逆時偏移計(jì)算參數(shù)包括偏移孔徑、計(jì)算網(wǎng)格、偏移頻率及速度場。
[0036] 步驟S13,主控節(jié)點(diǎn)啟動各從屬節(jié)點(diǎn)。
[0037] 步驟S14,各從屬節(jié)點(diǎn)從所述任務(wù)池領(lǐng)取任務(wù),并按照所述CPU-GPU并行處理策 略,利用當(dāng)前任務(wù)所包括的炮地震數(shù)據(jù)及速度模型進(jìn)行逆時偏移計(jì)算,得到當(dāng)前任務(wù)對應(yīng) 的單炮逆時偏移結(jié)果。
[0038] 考慮到GPU自身的緩存可能不足以滿足進(jìn)行逆時偏移計(jì)算的需求,本發(fā)明中首先 由主控節(jié)點(diǎn)選擇合適的CPU-GPU并行處理策略,再由各從屬節(jié)點(diǎn)根據(jù)確定好的CPU-GPU并 行處理策略處理任務(wù),從整體上