本公開(kāi)涉及石油勘探應(yīng)用領(lǐng)域,更具體地,涉及一種基于GPU的三維地震波場(chǎng)模擬計(jì)算方法及系統(tǒng)。
背景技術(shù):
在石油勘探應(yīng)用領(lǐng)域,對(duì)地震資料的成像是至關(guān)重要的,其中,三維地震波場(chǎng)的模擬計(jì)算是現(xiàn)代地震波成像技術(shù)的核心。在現(xiàn)有技術(shù)中,中央處理器(CPU,Central Processing Unit)以及由成千上萬(wàn)個(gè)CPU組成的高性能計(jì)算機(jī)集群是用于實(shí)現(xiàn)地震波場(chǎng)模擬的主要工具。然而,近年來(lái),采用圖形處理器(GPU,Graphic Processing Unit)協(xié)同CPU來(lái)實(shí)現(xiàn)地震波場(chǎng)模擬和成像已經(jīng)成為當(dāng)前提高三維地震波場(chǎng)模擬和成像計(jì)算效率的發(fā)展主題方向。
發(fā)明人發(fā)現(xiàn),現(xiàn)有的基于GPU的三維地震波場(chǎng)模擬計(jì)算方法通常采用三維空間偏導(dǎo)數(shù)(Laplacian算子)的整體實(shí)現(xiàn)方案,然而該計(jì)算過(guò)程中對(duì)每個(gè)前一個(gè)時(shí)間波場(chǎng)計(jì)算數(shù)據(jù)的三個(gè)方向相鄰點(diǎn)的內(nèi)存訪問(wèn)通常是非連續(xù)的,這導(dǎo)致GPU無(wú)法對(duì)三個(gè)方向相鄰點(diǎn)實(shí)現(xiàn)合并訪問(wèn),不能夠充分發(fā)揮GPU的計(jì)算性能,效率較低。因此,有必要開(kāi)發(fā)一種高效的基于GPU的三維地震波場(chǎng)模擬計(jì)算方法和系統(tǒng)。
公開(kāi)于本公開(kāi)背景技術(shù)部分的信息僅僅旨在加深對(duì)本公開(kāi)的一般背景技術(shù)的理解,而不應(yīng)當(dāng)被視為承認(rèn)或以任何形式暗示該信息構(gòu)成已為本領(lǐng)域技術(shù)人員所公知的現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)要素:
本公開(kāi)提供了一種基于GPU的三維地震波場(chǎng)模擬計(jì)算方法及系統(tǒng),其能 夠分三次調(diào)用GPU核分別對(duì)任何一個(gè)當(dāng)前波場(chǎng)計(jì)算數(shù)據(jù)在空間X、Y、Z三個(gè)方向進(jìn)行偏導(dǎo)數(shù)計(jì)算,使每次GPU調(diào)用都實(shí)現(xiàn)合并訪問(wèn),從而提高了計(jì)算效率。
根據(jù)本公開(kāi)的一個(gè)方面,提出了一種基于GPU的三維地震波場(chǎng)模擬計(jì)算方法,該方法可以包括以下步驟:調(diào)用GPU核,載入前一時(shí)間的X方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的X方向上偏導(dǎo)數(shù);調(diào)用GPU核,載入前一時(shí)間的Y方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Y方向上偏導(dǎo)數(shù);調(diào)用GPU核,載入前一時(shí)間的Z方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Z方向上偏導(dǎo)數(shù);以及對(duì)X、Y、Z三個(gè)方向上計(jì)算的偏導(dǎo)數(shù)求和得到當(dāng)前位置上的散度,以完成當(dāng)前時(shí)間波場(chǎng)的計(jì)算。
根據(jù)本公開(kāi)的另一方面,提出了一種基于GPU的地震波場(chǎng)模擬計(jì)算系統(tǒng),該系統(tǒng)可以包括:用于調(diào)用GPU核,載入前一時(shí)間的X方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的X方向上偏導(dǎo)數(shù)的單元;用于調(diào)用GPU核,載入前一時(shí)間的Y方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Y方向上偏導(dǎo)數(shù)的單元;用于調(diào)用GPU核,載入前一時(shí)間的Z方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Z方向上偏導(dǎo)數(shù)的單元;以及用于對(duì)X、Y、Z三個(gè)方向上計(jì)算的偏導(dǎo)數(shù)求和得到當(dāng)前位置上的散度,以完成當(dāng)前時(shí)間波場(chǎng)的計(jì)算的單元。
本公開(kāi)的方法和裝置具有其它的特性和優(yōu)點(diǎn),這些特性和優(yōu)點(diǎn)從并入本文中的附圖和隨后的具體實(shí)施方案中將是顯而易見(jiàn)的,或者將在并入本文中的附圖和隨后的具體實(shí)施方案中進(jìn)行詳細(xì)陳述,這些附圖和具體實(shí)施方案共同用于解釋本公開(kāi)的特定原理。
附圖說(shuō)明
通過(guò)結(jié)合附圖對(duì)本公開(kāi)的示例性實(shí)施例進(jìn)行更詳細(xì)的描述,本公開(kāi)的上 述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開(kāi)的示例性實(shí)施例中,相同的參考標(biāo)號(hào)通常代表相同部件。
圖1示出了適于用來(lái)實(shí)現(xiàn)本公開(kāi)實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。
圖2示出了根據(jù)本公開(kāi)的一個(gè)實(shí)施例的基于GPU的三維地震波場(chǎng)模擬計(jì)算方法的流程圖。
圖3示出了現(xiàn)有技術(shù)的CPU調(diào)用GPU對(duì)波場(chǎng)計(jì)算數(shù)據(jù)同時(shí)在空間的X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算的示意圖。
圖4示出了根據(jù)本公開(kāi)的一個(gè)實(shí)施例的CPU分別調(diào)用三次GPU核對(duì)波場(chǎng)計(jì)算數(shù)據(jù)在空間的X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算的示意圖。
圖5示出了根據(jù)本公開(kāi)的一個(gè)實(shí)施例的計(jì)算所有時(shí)間的波場(chǎng)計(jì)算數(shù)據(jù)以完成波場(chǎng)計(jì)算的示意圖。
圖6A和圖6B示出了采用Micikevcius方法和本公開(kāi)的方法的結(jié)果對(duì)比的示意圖。
圖7示出了本公開(kāi)相對(duì)于Micikevcius方法計(jì)算時(shí)間比率。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的優(yōu)選實(shí)施例。雖然附圖中顯示了本公開(kāi)的優(yōu)選實(shí)施例,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了使本公開(kāi)更加透徹和完整,并且能夠?qū)⒈竟_(kāi)的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
圖1示出了適于用來(lái)實(shí)現(xiàn)本公開(kāi)實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本公開(kāi)實(shí)施例的功能和使用范圍帶來(lái)任何限制。
如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理 單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
總線18表示幾類(lèi)總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來(lái)說(shuō),這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問(wèn)的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可以用于讀寫(xiě)不可移動(dòng)的、非易失性磁介質(zhì)(圖1未顯示,通常稱(chēng)為“硬盤(pán)驅(qū)動(dòng)器”)。盡管圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(pán)(例如“軟盤(pán)”)讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(pán)(例如CD-ROM,DVD-ROM或者其它光介質(zhì))讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本公開(kāi)各實(shí)施例的功能。
具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本公開(kāi)所描述的實(shí)施例中的功能和/或方法。
計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14(例如鍵盤(pán)、指 向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶(hù)能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過(guò)輸入/輸出(I/O)接口22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過(guò)網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過(guò)總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤(pán)驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
實(shí)施例1
圖2示出了根據(jù)本公開(kāi)的實(shí)施例的基于GPU的三維地震波場(chǎng)模擬計(jì)算方法的流程圖。
在該實(shí)施例中,該方法可以包括以下步驟:步驟201,調(diào)用GPU核,載入前一時(shí)間的X方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的X方向上偏導(dǎo)數(shù);步驟202,調(diào)用GPU核,載入前一時(shí)間的Y方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Y方向上偏導(dǎo)數(shù);步驟203,調(diào)用GPU核,載入前一時(shí)間的Z方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Z方向上偏導(dǎo)數(shù);以及步驟204,對(duì)X、Y、Z三個(gè)方向上計(jì)算的偏導(dǎo)數(shù)求和得到當(dāng)前位置上的散度,以完成當(dāng)前時(shí)間波場(chǎng)的計(jì)算。
該實(shí)施例通過(guò)分三次調(diào)用GPU分別對(duì)當(dāng)前波場(chǎng)計(jì)算數(shù)據(jù)在空間的X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算,使每次GPU調(diào)用都實(shí)現(xiàn)合并訪問(wèn),從而提高計(jì)算效率。調(diào)用GPU核計(jì)算X、Y、Z方向的偏導(dǎo)數(shù)是沒(méi)有先后之分,而且在GPU資源許可的情況下可以同時(shí)進(jìn)行。
波場(chǎng)計(jì)算
在一個(gè)示例中,可以通過(guò)本領(lǐng)域技術(shù)人員已知的任何現(xiàn)有技術(shù)手段來(lái)獲取波場(chǎng)計(jì)算數(shù)據(jù)。例如,可以對(duì)地震資料進(jìn)行預(yù)處理,以獲得波場(chǎng)計(jì)算數(shù)據(jù)。其中,可以使用當(dāng)前波場(chǎng)計(jì)算數(shù)據(jù)表示當(dāng)前正在計(jì)算的波場(chǎng)計(jì)算數(shù)據(jù)。
在三維地震波場(chǎng)模擬時(shí),計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的的波場(chǎng)值可以通過(guò)計(jì)算前一個(gè)時(shí)間的波場(chǎng)在該位置的散度來(lái)得到。在計(jì)算波場(chǎng)在某個(gè)位置的散度時(shí),可以通過(guò)CPU分三次調(diào)用GPU核對(duì)當(dāng)前波場(chǎng)計(jì)算數(shù)據(jù)分別在空間的X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算。然后,可以對(duì)X、Y、Z三個(gè)方向上計(jì)算的偏導(dǎo)數(shù)求和得到該位置上的散度,以完成當(dāng)前時(shí)間波場(chǎng)的計(jì)算。其中,調(diào)用GPU核計(jì)算X、Y、Z方向的偏導(dǎo)數(shù)可以沒(méi)有先后之分,而且在GPU資源許可的情況下可以同時(shí)進(jìn)行。
為了便于理解本實(shí)施例的原理和技術(shù)效果,圖3和圖4給出了對(duì)波場(chǎng)計(jì)算數(shù)據(jù)在X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算的一個(gè)示例,其中圖3示意了現(xiàn)有技術(shù)的方法,圖4示意了本公開(kāi)的實(shí)施例的方法。本領(lǐng)域技術(shù)人員應(yīng)理解,該示例僅為了便于理解,而不意在以任何方式限制本發(fā)明。例如,本領(lǐng)域技術(shù)人員應(yīng)理解,雖然示例中給出了利用兩個(gè)相鄰數(shù)據(jù)來(lái)求某一方向上的偏導(dǎo)數(shù),但也可以利用其它數(shù)量的相鄰數(shù)據(jù)來(lái)計(jì)算。并且本領(lǐng)域技術(shù)人員可以根據(jù)需要采用任何已知的具體方式來(lái)利用相鄰數(shù)據(jù)求偏導(dǎo)數(shù)。此外,本領(lǐng)域技術(shù)人員還應(yīng)理解,雖然該示例中在計(jì)算每個(gè)方向的偏導(dǎo)數(shù)時(shí)調(diào)用了一個(gè)GPU,然而在分布式計(jì)算環(huán)境下,也可以分別調(diào)用一組GPU來(lái)計(jì)算每個(gè)方向的偏導(dǎo)數(shù)。
圖3示出了現(xiàn)有技術(shù)的CPU調(diào)用GPU核對(duì)波場(chǎng)計(jì)算數(shù)據(jù)同時(shí)在空間的X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算的示意圖。如圖3所示,在現(xiàn)有的GPU整體訪問(wèn)內(nèi)存的方案中,需要同時(shí)計(jì)算三個(gè)方向的偏導(dǎo)數(shù)(Laplacian算子),對(duì)點(diǎn)0的單次偏導(dǎo)數(shù)計(jì)算涉及三個(gè)方向的相鄰點(diǎn)(1,2,3,4,5,6),而由于相鄰點(diǎn)5和6在內(nèi)存中與其它點(diǎn)相距甚遠(yuǎn),導(dǎo)致無(wú)法實(shí)現(xiàn)GPU的合并訪問(wèn), 從而導(dǎo)致整體計(jì)算效率受到限制。此外,同時(shí)計(jì)算三個(gè)方向的偏導(dǎo)數(shù),很容易使得每一個(gè)線程的寄存器使用數(shù)量達(dá)到極限,進(jìn)一步限制了此類(lèi)方法的計(jì)算效率和計(jì)算能力,特別是在采用高階方法的時(shí)候,例如16階有限差分方法。
圖4示出了根據(jù)本公開(kāi)的一個(gè)實(shí)施例的CPU分別調(diào)用三次GPU核對(duì)波場(chǎng)計(jì)算數(shù)據(jù)在空間的X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算的示意圖。如圖4所示,可以分別在X、Y、Z三個(gè)方向上計(jì)算偏導(dǎo)數(shù)。在對(duì)X方向計(jì)算偏導(dǎo)數(shù)時(shí),對(duì)點(diǎn)0的偏導(dǎo)數(shù)計(jì)算可以?xún)H使用前一時(shí)間的X方向的相鄰點(diǎn)(5,6)的波場(chǎng)數(shù)據(jù);在對(duì)Y方向計(jì)算偏導(dǎo)數(shù)時(shí),對(duì)點(diǎn)0的偏導(dǎo)數(shù)計(jì)算可以?xún)H使用前一時(shí)間的Y方向的相鄰點(diǎn)(3,4)的波場(chǎng)數(shù)據(jù);在對(duì)Z方向計(jì)算偏導(dǎo)數(shù)時(shí),對(duì)點(diǎn)0的偏導(dǎo)數(shù)計(jì)算可以?xún)H使用前一時(shí)間的Z方向的相鄰點(diǎn)(1,2)的波場(chǎng)數(shù)據(jù)。然后,可以對(duì)X、Y、Z三個(gè)方向上的計(jì)算結(jié)果求和,從而完成波場(chǎng)計(jì)算。通過(guò)上述步驟,在每個(gè)方向上都可以實(shí)現(xiàn)GPU全局內(nèi)存的合并訪問(wèn),從而可以提高計(jì)算效率。同時(shí),每次GPU內(nèi)核計(jì)算,僅限于對(duì)一個(gè)方向的偏導(dǎo)數(shù)執(zhí)行,使得每一個(gè)線程的寄存器使用數(shù)量大幅度降低,從而消除了因寄存器數(shù)目有限帶來(lái)的計(jì)算效率限制。尤其是在計(jì)算高階偏導(dǎo)數(shù)的時(shí)候,本公開(kāi)的方法可以顯著提高計(jì)算效率和計(jì)算能力。
如上所述,與現(xiàn)有技術(shù)相比,根據(jù)本公開(kāi)的實(shí)施例的基于GPU的三維地震波場(chǎng)模擬計(jì)算方法可以顯著提高波場(chǎng)計(jì)算的效率。
在一個(gè)示例中,可以通過(guò)對(duì)所有時(shí)間的波場(chǎng)計(jì)算數(shù)據(jù)的計(jì)算來(lái)實(shí)現(xiàn)整個(gè)波場(chǎng)計(jì)算過(guò)程。圖5示出了根據(jù)本公開(kāi)的一個(gè)實(shí)施例的計(jì)算所有時(shí)間的波場(chǎng)計(jì)算數(shù)據(jù)以完成波場(chǎng)計(jì)算的示意圖。其中,可以將開(kāi)始計(jì)算時(shí)的時(shí)間it值設(shè)為零,在對(duì)當(dāng)前時(shí)間it的波場(chǎng)計(jì)算數(shù)據(jù)進(jìn)行計(jì)算之后,可以使當(dāng)前時(shí)間it增加一個(gè)時(shí)間增量,即前進(jìn)到下一時(shí)間,例如使it=it+1(其中1可以代表一個(gè)時(shí)間增量,例如1個(gè)單位采樣時(shí)間),然后可以對(duì)下一時(shí)間的波場(chǎng)計(jì)算數(shù)據(jù)進(jìn)行計(jì)算。當(dāng)時(shí)間it達(dá)到總時(shí)間nt時(shí),可以停止計(jì)算。通過(guò)對(duì)所有時(shí)間的波場(chǎng)計(jì)算數(shù)據(jù)的計(jì)算,可以實(shí)現(xiàn)整個(gè)波場(chǎng)計(jì)算過(guò)程。
其中,時(shí)間增量的值可以依據(jù)本領(lǐng)域技術(shù)人員的經(jīng)驗(yàn)設(shè)定為任意合理的值,例如1個(gè)單位采樣時(shí)間。本領(lǐng)域技術(shù)人員應(yīng)理解,以上所列出的僅僅是示例,并非是窮舉了所有的可以設(shè)定的時(shí)間增量。
在一個(gè)示例中,可以基于波場(chǎng)計(jì)算,對(duì)每個(gè)時(shí)間計(jì)算得到的地震波場(chǎng)數(shù)據(jù)進(jìn)行保存,從而獲得整個(gè)地震波場(chǎng)。
應(yīng)用示例
以下給出了本公開(kāi)的實(shí)施例的一個(gè)應(yīng)用示例,來(lái)說(shuō)明本公開(kāi)的實(shí)施例在保證計(jì)算結(jié)果的同時(shí),提高了計(jì)算效率的有益效果。本領(lǐng)域技術(shù)人員應(yīng)理解該應(yīng)用示例僅為了便于理解本公開(kāi),其中的數(shù)值及其他細(xì)節(jié)僅為示例性的,而非意在限制本公開(kāi)。
圖6A和圖6B示出了分別采用傳統(tǒng)的Micikevcius方法和本公開(kāi)的方法,在其他計(jì)算參數(shù)相同的條件下,獲得的地震波場(chǎng)結(jié)果圖。在圖6A和圖6B所示的示例中,采用256×256×256的三維計(jì)算網(wǎng)格,在單個(gè)GPU上進(jìn)行了2000步的地震波場(chǎng)模擬計(jì)算。圖7是在其他計(jì)算參數(shù)相同的條件下,對(duì)于不同網(wǎng)格數(shù)相對(duì)于傳統(tǒng)的Micikevcius方法的計(jì)算時(shí)間比率圖,橫坐標(biāo)為整體三維網(wǎng)格數(shù),縱坐標(biāo)為相對(duì)于傳統(tǒng)的Micikevcius方法的計(jì)算時(shí)間的比率。如圖7所示,在整體三維網(wǎng)格數(shù)為1x107的情況下,本公開(kāi)的方法的計(jì)算時(shí)間只占傳統(tǒng)的Micikevcius方法的67%,在整體三維網(wǎng)格數(shù)為9x107的情況下,本公開(kāi)的方法的計(jì)算時(shí)間只占傳統(tǒng)的Micikevcius方法的58%。
從圖6和圖7可以看到,采用CPU調(diào)用三次GPU核分別對(duì)當(dāng)前波場(chǎng)計(jì)算數(shù)據(jù)在空間X、Y、Z三個(gè)方向進(jìn)行偏導(dǎo)數(shù)計(jì)算,其計(jì)算結(jié)果與傳統(tǒng)的CPU調(diào)用GPU對(duì)當(dāng)前波場(chǎng)計(jì)算數(shù)據(jù)在X、Y、Z三個(gè)方向整體進(jìn)行偏導(dǎo)數(shù)計(jì)算相同,但是計(jì)算效率得到了很大的提高。
本領(lǐng)域技術(shù)人員應(yīng)理解,上面對(duì)本公開(kāi)的實(shí)施例的描述的目的僅為了示例性地說(shuō)明本公開(kāi)的實(shí)施例的有益效果,并不意在將本公開(kāi)的實(shí)施例限制于 所給出的任何示例。
實(shí)施例2
根據(jù)本公開(kāi)的實(shí)施例,提供了一種基于GPU的地震波場(chǎng)模擬計(jì)算系統(tǒng)。該系統(tǒng)可以包括:用于調(diào)用GPU核,載入前一時(shí)間的X方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的X方向上偏導(dǎo)數(shù)的單元;用于調(diào)用GPU核,載入前一時(shí)間的Y方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Y方向上偏導(dǎo)數(shù)的單元;用于調(diào)用GPU核,載入前一時(shí)間的Z方向上與當(dāng)前位置相鄰的波場(chǎng)數(shù)據(jù),來(lái)計(jì)算當(dāng)前時(shí)間在當(dāng)前位置的Z方向上偏導(dǎo)數(shù)的單元;以及用于對(duì)X、Y、Z三個(gè)方向上計(jì)算的偏導(dǎo)數(shù)求和得到當(dāng)前位置上的散度,以完成當(dāng)前時(shí)間波場(chǎng)的計(jì)算的單元。
該實(shí)施例通過(guò)分三次調(diào)用GPU分別對(duì)當(dāng)前波場(chǎng)計(jì)算數(shù)據(jù)在空間的X、Y、Z三個(gè)方向上進(jìn)行偏導(dǎo)數(shù)計(jì)算,使每次GPU調(diào)用都實(shí)現(xiàn)合并訪問(wèn),從而提高計(jì)算效率。
在一個(gè)示例中,可以通過(guò)對(duì)所有時(shí)間的波場(chǎng)計(jì)算數(shù)據(jù)的計(jì)算來(lái)實(shí)現(xiàn)整個(gè)波場(chǎng)計(jì)算過(guò)程。
在一個(gè)示例中,可以對(duì)每個(gè)時(shí)間計(jì)算得到的地震波場(chǎng)數(shù)據(jù)進(jìn)行保存,從而獲得整個(gè)地震波場(chǎng)。
本領(lǐng)域技術(shù)人員應(yīng)理解,上面對(duì)本公開(kāi)的實(shí)施方案的描述的目的僅為了示例性地說(shuō)明本公開(kāi)的實(shí)施方案的有益效果,并不意在將本公開(kāi)的實(shí)施方案限制于所給出的任何示例。
本公開(kāi)可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本公開(kāi)的各個(gè)方面的計(jì)算機(jī)可讀程序指令。
計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是――但不限于――電存儲(chǔ)設(shè)備、 磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(pán)(DVD)、記憶棒、軟盤(pán)、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無(wú)線電波或者其他自由傳播的電磁波、通過(guò)波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過(guò)光纖電纜的光脈沖)、或者通過(guò)電線傳輸?shù)碾娦盘?hào)。
這里所描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過(guò)網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無(wú)線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無(wú)線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
用于執(zhí)行本公開(kāi)操作的計(jì)算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語(yǔ)言的任意組合編寫(xiě)的源代碼或目標(biāo)代碼,所述編程語(yǔ)言包括面向?qū)ο蟮木幊陶Z(yǔ)言—諸如Smalltalk、C++等,以及常規(guī)的過(guò)程式編程語(yǔ)言—諸如“C”語(yǔ)言或類(lèi)似的編程語(yǔ)言。計(jì)算機(jī)可讀程序指令可以完全地在用戶(hù)計(jì)算機(jī)上執(zhí)行、部分地在用戶(hù)計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶(hù)計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類(lèi)的網(wǎng)絡(luò)—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶(hù)計(jì)算機(jī), 或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。在一些實(shí)施例中,通過(guò)利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來(lái)個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本公開(kāi)的各個(gè)方面。
這里參照根據(jù)本公開(kāi)實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本公開(kāi)的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。
這些計(jì)算機(jī)可讀程序指令可以提供給通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。
也可以把計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。
附圖中的流程圖和框圖顯示了根據(jù)本公開(kāi)的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指 令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
以上已經(jīng)描述了本公開(kāi)的各實(shí)施例,上述說(shuō)明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說(shuō)明的各實(shí)施例的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見(jiàn)的。本文中所用術(shù)語(yǔ)的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中的技術(shù)的技術(shù)改進(jìn),或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。