一種處理疊前逆時(shí)偏移數(shù)據(jù)的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及地質(zhì)勘探領(lǐng)域,具體說涉及一種處理疊前逆時(shí)偏移數(shù)據(jù)的系統(tǒng)及方 法。
【背景技術(shù)】
[0002] 疊前逆時(shí)偏移是一項(xiàng)計(jì)算密集型和數(shù)據(jù)密集型的地震偏移成像方法。近年來快速 發(fā)展的圖形處理器(Graphic Processing Unit簡稱GPU)技術(shù),為疊前深度偏移處理提供 了強(qiáng)有力的工具,大大提高了疊前逆時(shí)偏移數(shù)據(jù)的處理效率。但是GPU本身擁有的顯存空 間限制(一般為4-8GB)制約了 GPU可以處理的疊前逆時(shí)偏移數(shù)據(jù)的數(shù)據(jù)量以及計(jì)算量。
[0003] 為了處理更大數(shù)據(jù)量以及計(jì)算量的疊前逆時(shí)偏移數(shù)據(jù),并進(jìn)一步提高疊前逆時(shí)偏 移數(shù)據(jù)的處理效率,需要一種新的處理疊前逆時(shí)偏移數(shù)據(jù)的系統(tǒng)及方法。
【發(fā)明內(nèi)容】
[0004] 針對現(xiàn)有處理方法存在的問題,本發(fā)明提供了一種處理疊前逆時(shí)偏移數(shù)據(jù)的方 法,所述方法包含以下步驟:
[0005] 步驟一,獲取待處理的疊前逆時(shí)偏移數(shù)據(jù);
[0006] 步驟二,將所述疊前逆時(shí)偏移數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)單元;
[0007] 步驟三,分別以每個(gè)所述數(shù)據(jù)單元為處理對象同時(shí)對所有所述數(shù)據(jù)單元進(jìn)行并行 處理,從而得到每個(gè)所述數(shù)據(jù)單元的處理結(jié)果,進(jìn)而獲得所述疊前逆時(shí)偏移數(shù)據(jù)的處理結(jié) 果。
[0008] 在一實(shí)施例中,在所述步驟二中,根據(jù)計(jì)算需求動(dòng)態(tài)確定所述數(shù)據(jù)單元的數(shù)目。
[0009] 在一實(shí)施例中,所述步驟三包含以下步驟:
[0010] 數(shù)據(jù)劃分步驟,將所述數(shù)據(jù)單元?jiǎng)澐譃楠?dú)立數(shù)據(jù)以及重疊數(shù)據(jù);
[0011] 獨(dú)立數(shù)據(jù)處理步驟,對所述獨(dú)立數(shù)據(jù)進(jìn)行處理從而獲得獨(dú)立數(shù)據(jù)處理結(jié)果;
[0012] 重疊數(shù)據(jù)處理步驟,對所述重疊數(shù)據(jù)進(jìn)行處理從而獲得重疊數(shù)據(jù)處理結(jié)果。
[0013] 在一實(shí)施例中,所述重疊數(shù)據(jù)處理步驟包含以下步驟:
[0014] 第一重疊處理步驟,對所述重疊數(shù)據(jù)進(jìn)行處理從而獲取第一重疊處理結(jié)果;
[0015] 數(shù)據(jù)交換步驟,對不同數(shù)據(jù)單元的對應(yīng)的所述第一重疊處理結(jié)果進(jìn)行數(shù)據(jù)交換從 而獲取第二重疊處理結(jié)果。
[0016] 在一實(shí)施例中,在所述步驟三中,在進(jìn)行所述獨(dú)立數(shù)據(jù)處理步驟的同時(shí)進(jìn)行所述 數(shù)據(jù)交換步驟。
[0017] 在一實(shí)施例中,所述重疊數(shù)據(jù)處理步驟還包含第二重疊處理步驟,對所述第二重 疊處理結(jié)果進(jìn)行處理從而獲取所述重疊數(shù)據(jù)處理結(jié)果。
[0018] 在一實(shí)施例中,在所述獨(dú)立數(shù)據(jù)處理步驟執(zhí)行完畢時(shí)執(zhí)行所述第二重疊處理步 驟。
[0019] 在一實(shí)施例中,其特征在于,所述步驟三還包含獲取數(shù)據(jù)單元處理結(jié)果步驟,基于 所述獨(dú)立數(shù)據(jù)處理結(jié)果以及所述重疊數(shù)據(jù)處理結(jié)果獲取所述數(shù)據(jù)單元的處理結(jié)果。
[0020] 本發(fā)明還提出了一種處理疊前逆時(shí)偏移數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包含:
[0021] 多個(gè)計(jì)算模塊,每個(gè)所述計(jì)算模塊用于處理待處理的疊前逆時(shí)偏移數(shù)據(jù)的一個(gè)數(shù) 據(jù)單元;
[0022] 數(shù)據(jù)中繼模塊,其與每個(gè)所述計(jì)算模塊相連,用于實(shí)現(xiàn)所述計(jì)算模塊之間的數(shù)據(jù) 交互。
[0023] 在一實(shí)施例中,每個(gè)所述計(jì)算模塊采用一塊圖形處理器構(gòu)建。
[0024] 與現(xiàn)有技術(shù)相比,利用本發(fā)明的處理方法以及系統(tǒng)處理數(shù)據(jù),不僅避免了 GPU顯 存對數(shù)據(jù)量以及計(jì)算量的限制,還大大提高了數(shù)據(jù)處理效率。并進(jìn)一步的縮短了 GPU處理 數(shù)據(jù)的處理時(shí)間。
[0025] 本發(fā)明的其它特征或優(yōu)點(diǎn)將在隨后的說明書中闡述。并且,本發(fā)明的部分特征或 優(yōu)點(diǎn)將通過說明書而變得顯而易見,或者通過實(shí)施本發(fā)明而被了解。本發(fā)明的目的和部分 優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的步驟來實(shí)現(xiàn)或獲得。
【附圖說明】
[0026] 附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí) 施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
[0027] 圖1是根據(jù)本發(fā)明一實(shí)施例執(zhí)行流程圖;
[0028] 圖2是根據(jù)本發(fā)明一實(shí)施例的數(shù)據(jù)單元?jiǎng)澐质疽鈭D;
[0029] 圖3是現(xiàn)有技術(shù)處理數(shù)據(jù)的時(shí)間步示意圖;
[0030] 圖4是根據(jù)本發(fā)明一實(shí)施例處理數(shù)據(jù)的時(shí)間步示意圖;
[0031] 圖5是根據(jù)本發(fā)明一實(shí)施例的部分執(zhí)行流程圖。
【具體實(shí)施方式】
[0032] 以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此本發(fā)明的實(shí)施人員 可以充分理解本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程并依 據(jù)上述實(shí)現(xiàn)過程具體實(shí)施本發(fā)明。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施 例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之 內(nèi)。
[0033] 在現(xiàn)有技術(shù)中,當(dāng)疊前逆時(shí)偏移數(shù)據(jù)的數(shù)據(jù)量較大時(shí),由于GPU顯存不足,因此 GHJ無法滿足數(shù)據(jù)量以及計(jì)算量需求。為了解決這一難題,本發(fā)明提出了一種處理疊前逆 時(shí)偏移數(shù)據(jù)的方法及系統(tǒng)。本發(fā)明利用GPU的并行計(jì)算架構(gòu)(Computing Unified Device Architecture簡稱CUDA)采用多卡聯(lián)合作業(yè)模式來解決單一 GPU顯存容量不足的問題。接 下來基于流程圖來詳細(xì)描述本發(fā)明的方法的執(zhí)行過程。
[0034] 附圖的流程圖中示出的步驟可以在包含諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系 統(tǒng)中執(zhí)行。雖然在流程圖中示出了各步驟的邏輯順序,但是在某些情況下,可以以不同于此 處的順序執(zhí)行所示出或描述的步驟。
[0035] 如圖1所示,首先執(zhí)行步驟S110,獲取待處理的疊前逆時(shí)偏移數(shù)據(jù)。然后執(zhí)行步驟 S120,將待處理的疊前逆時(shí)偏移數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)單元。這樣相對于疊前逆時(shí)偏移數(shù)據(jù) 整體而言,單獨(dú)的一個(gè)數(shù)據(jù)單元的數(shù)據(jù)量以及計(jì)算量大大的減少。在本實(shí)施例中,根據(jù)當(dāng)前 的計(jì)算需求動(dòng)態(tài)確定數(shù)據(jù)單元的數(shù)目。針對劃分后的數(shù)據(jù)單元,本發(fā)明的處理系統(tǒng)構(gòu)造有 多個(gè)計(jì)算模塊,每個(gè)計(jì)算模塊用于處理一個(gè)數(shù)據(jù)單元。
[0036] 在本實(shí)施例中,每個(gè)所述計(jì)算模塊采用一塊GPU卡來構(gòu)建。采用多塊GPU,每塊GPU 處理一個(gè)數(shù)據(jù)單元,基于GPU的CUDA架構(gòu),在整體上所有GPU可以并行執(zhí)行數(shù)據(jù)處理行為, 即所有數(shù)據(jù)單元的處理行為可以同時(shí)進(jìn)行。這樣不僅解決了單一 GPU無法滿足疊前逆時(shí)偏 移數(shù)據(jù)整體的數(shù)據(jù)量以及計(jì)算量的問題,而且大大提高了計(jì)算效率。
[0037] 在本實(shí)施例中,將疊前逆時(shí)偏移數(shù)據(jù)劃分成η個(gè)數(shù)據(jù)單元,每塊GPU卡處理一個(gè)數(shù) 據(jù)單元。接下來就可以執(zhí)行步驟S130,并行處理數(shù)據(jù)。分別以每個(gè)數(shù)據(jù)單元為處理對象同 時(shí)對所有數(shù)據(jù)單元進(jìn)行并行處理,從而得到每個(gè)數(shù)據(jù)單元的處理結(jié)果,進(jìn)而獲得疊前逆時(shí) 偏移數(shù)據(jù)的處理結(jié)果。
[0038] 當(dāng)然的,在利用GPU進(jìn)行數(shù)據(jù)處理之前要對GPU設(shè)備進(jìn)行初始化、設(shè)備選擇、輸出 傳輸、線程網(wǎng)格的設(shè)定等這些初始工作,之后開始多卡GPU并行處理。在本說明書中對上述 準(zhǔn)備步驟就不多加贅述。
[0039] 相較于利用一個(gè)GPU卡處理全部的疊前逆時(shí)偏移數(shù)據(jù)的處理模式,多卡并行處理 模式下相應(yīng)的逆時(shí)偏移計(jì)算也較復(fù)雜。疊前逆時(shí)偏移數(shù)據(jù)是由眾多炮數(shù)據(jù)體組成的,每次 計(jì)算一個(gè)炮數(shù)據(jù)體。利用多卡聯(lián)合計(jì)算一個(gè)炮數(shù)據(jù)體,意味著將一個(gè)炮數(shù)據(jù)體分別用不同 的GPU卡計(jì)算。即需要將一個(gè)炮數(shù)據(jù)體按照如圖2所示的方式分為η個(gè)數(shù)據(jù)單元(卡1、卡 2…卡η)。由于炮數(shù)據(jù)體本身的數(shù)據(jù)內(nèi)容性質(zhì),在劃分?jǐn)?shù)據(jù)單元時(shí),相鄰兩個(gè)數(shù)據(jù)單元會存 在重疊區(qū)域,如圖2所示。這就導(dǎo)致在并行處理模式下,在計(jì)算過程中不僅需要GPU與主機(jī) 間進(jìn)行數(shù)據(jù)傳輸,還需要GPU卡之間進(jìn)行數(shù)據(jù)交換。由于GPU卡之間是不能直接進(jìn)行數(shù)據(jù) 傳輸?shù)?,因此本發(fā)明的系統(tǒng)還構(gòu)造有數(shù)據(jù)中繼模塊,其與每個(gè)計(jì)算模塊(GHJ卡)相連,用于 進(jìn)行兩個(gè)計(jì)算模塊之間的數(shù)據(jù)交互。
[0040] 在本實(shí)施例中,采用主機(jī)作為數(shù)據(jù)中繼模塊。GPU卡之間通過主機(jī)這一橋梁進(jìn)行