基于gpu的三維縱橫波分離的彈性波方程的模擬方法及系統的制作方法
【技術領域】
[0001] 本發明涉及石油勘探和高性能計算技術領域,特別是涉及一種基于GPU的三維縱 橫波分離的彈性波方程的模擬方法及系統。
【背景技術】
[0002] 目前,在石油勘探領域內,三維縱橫波分離的彈性波方程的模擬方法是一種研究 彈性波在各向同性完全彈性介質中傳播的波場外推方法,即可以幫助人們認識彈性介質中 縱橫波的傳播機理,同時能得到縱橫波分離的波場外推結果,進一步為彈性介質中的逆時 地震波成像提供重要的外推算法。
[0003] 在現有技術中,應用程序對二階縱橫波分離的彈性波方程采用高階有限差分法進 行數值模擬,該程序對計算能力要求特別大,在CPU平臺上計算時間較長,效率較低,硬件 成本尚,能耗尚。
[0004] 基于此,亟需一種能夠快速、高效的三維縱橫波分離的彈性波方程的模擬方法,以 提高運算速度、降低硬件成本和減少能耗。
【發明內容】
[0005] 有鑒于此,本發明提供了一種基于GPU的三維縱橫波分離的彈性波方程的模擬方 法及系統,以達到快速、高效地實現模擬過程,進而提高運算速度、降低硬件成本和減少能 耗。
[0006] 為解決上述技術問題,本發明提供一種基于GPU的三維縱橫波分離的彈性波方程 的模擬方法,包括:
[0007] CPU處理器調用GPU加速卡的內核,并利用所述GPU加速卡的內核完成所述三維縱 橫波分離的彈性波方程的模擬過程;
[0008] 所述GPU加速卡接受所述CPU處理器的調用,利用CUDA多線程并行完成所述三維 縱橫波分離的彈性波方程的模擬過程。
[0009] 上述方法中,優選的,在所述CPU處理器調用所述GPU加速卡的內核之前,還包 括:
[0010] 所述CPU處理器向所述GPU加速卡發送申請內存空間請求;
[0011] 所述GPU加速卡依據所述申請內存空間請求進行內存空間分配,并將內存分配情 況發送至所述CPU處理器;
[0012] 所述CPU處理器接收所述內存分配情況之后,調用所述GPU加速卡的內核。
[0013] 上述方法中,優選的,所述GPU加速卡在分配的內存空間上,利用CUDA多線程并行 完成所述三維縱橫波分離的彈性波方程的模擬過程。
[0014] 上述方法中,優選的,所述CPU處理器控制所述模擬過程中數據的I/O操作。
[0015] 上述方法中,優選的,所述CPU處理器調用用于所述CPU處理器與所述GPU之間通 信的通信模塊。
[0016] 上述方法中,優選的,在所述GPU加速卡利用CUDA多線程并行完成所述三維縱橫 波分離的彈性波方程的模擬過程之前,還包括:
[0017] 所述CPU定義所述CUDA多線程的線程結構。
[0018] 上述方法中,優選的,在所述GPU加速卡利用CUDA多線程并行完成所述三維縱橫 波分離的彈性波方程的模擬過程之后,還包括:
[0019] 所述GPU加速卡將模擬結果傳遞至所述CPU處理器。
[0020] 本發明還提供了一種基于GPU的三維縱橫波分離的彈性波方程的模擬系統,包 括:
[0021] CPU處理器,用于調用GPU加速卡的內核,并利用所述GPU加速卡的內核完成所述 三維縱橫波分離的彈性波方程的模擬過程;
[0022] 所述GPU加速卡,用于接受所述CPU處理器的調用,利用CUDA多線程并行完成所 述三維縱橫波分離的彈性波方程的模擬過程。
[0023] 以上本發明提供的技術方案中,有效利用了 GPU加速卡超強計算的特點,構建 CPU+GPU協同計算方式完成三維縱橫波分離的彈性波方程的模擬過程,使CPU和GPU的資源 得到充分利用,GPU加速卡用于模擬過程中的核心計算部分,并通過CUDA超多線程并行計 算加快計算速度,達到了快速、高效地實現模擬過程,進而提高運算速度、降低硬件成本和 減少能耗的目的。
【附圖說明】
[0024] 為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據 提供的附圖獲得其他的附圖。
[0025] 圖1為本發明實施例提供的一種基于GPU的三維縱橫波分離的彈性波方程的模擬 方法的流程圖;
[0026] 圖2為本發明實施例提供的一種CPU+GPU協同計算模式示意圖;
[0027] 圖3為本發明實施例提供的另一流程圖;
[0028] 圖4為本發明實施例提供的再一流程圖;
[0029] 圖5為本發明實施例提供的一種基于GPU的三維縱橫波分離的彈性波方程的模擬 系統的結構框圖示意圖。
【具體實施方式】
[0030] 下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于 本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他 實施例,都屬于本發明保護的范圍。
[0031] 本發明的核心是提供一種基于GPU的三維縱橫波分離的彈性波方程的模擬方法 及系統,以達到快速、高效地實現模擬過程,進而提高運算速度、降低硬件成本和減少能耗。
[0032] 為了使本技術領域的人員更好地理解本發明方案,下面結合附圖和【具體實施方式】 對本發明作進一步的詳細說明。
[0033] 自從2006年英偉達(NVIDIA)公司推出圖形處理器G80以來,圖形處理器(GPU, Graphic Processing Unit)在某些大規模并行計算的應用上,相對于CPU來說性能提高可 達100倍以上。GPU擁有更多的晶體管,用于數據處理而不是像CPU那樣去處理數據cache 和指令控制,這意味著GPU具有巨大的并行計算能力。GPU加速卡計算資源密度更高,具有 更高的計算性能,雙精性能超過lTFlops。GPU計算適合于密集型計算,計算能力相對于CPU 更強,三維縱橫波分離的彈性波方程模擬滿足GPU計算的應用特點,適合在GPU平臺上并行 計算。
[0034] 參考圖1和圖2,圖1示出了本發明實施例提供的一種基于GPU的三維縱橫波分離 的彈性波方程的模擬方法的流程圖,圖2示出了本發明實施例提供的一種CPU+GPU協同計 算模式示意圖,該方法具體可以包括如下步驟:
[0035] 步驟S100、CPU處理器(簡稱CPU)調用GPU加速卡(簡稱GPU)的內核,并利用 GHJ加速卡的內核完成三維縱橫波分離的彈性波方程的模擬過程;
[0036] 本發明中,CPU對GPU的內核模塊進行調用,進而實現對GPU內核的調用。其中, CPU控制GPU內核模塊的調用是指CPU調用GPU內核,啟動GPU進行內核并行計算。
[0037] 進一步,本發明中,CPU還可以控制上述模擬過程中數據的I/O操作、GPU申請空間 模塊的調用、CPU與GPU之間的通信模塊的調用。
[0038] 其中,
[0039] ① CPU控制的I/O操作是指CPU控制計算需要的讀寫硬盤操作(即I/O操作)。
[0040] ②CPU控制GPU申請空間模塊的調用是指通過CUdaMalloc語句調用GPU空間申 請函數,啟動GPU在顯存中開辟空間。具體內容在后文詳述。
[0041] ③CPU控制CPU與GPU之間的通信是指通過cudaMemcpy等語句進行CPU與GPU 之間的數據通信。
[0042] 步驟SlOl、GPU加速卡接受CPU處理器的調用,利用CUDA多線程并行完成三維縱 橫波分離的彈性波方程的模擬過程。
[0043] 本發明中,GPU加速卡具有數千個核心,擁有超強的計算能力,主要用于三維縱橫 波分離的彈性波方程模擬的核心計算,利用CUDA超多線程在GPU平臺上并行計算三維縱橫 波分離的彈性波方程模擬,提高速度,降低成本。
[0044] 其中,GPU加速卡進行內核的計算,CUDA超多線程并行是指在GPU卡上啟動多線 程,充分發揮GPU多核的計算能力,加速計算過程。
[0045] 進一步地,在GPU加速卡利用CUDA多線程并行完成三維縱橫波分離的彈性波方程 的模擬過程之前,由CPU定義CUDA多線程的線程結構。
[0046] 進一步地,在GPU加速卡利用CUDA多線程并行完成三維縱橫波分離的彈性波方程 的模擬過程之后,將模擬結果傳遞至CPU處理器。
[0047] 以上本發明提供的技術方案中,有效利用了 GPU加速卡超強計算的特點,構建 CPU+GPU協同計算方式完成三維縱橫波分離的彈性波方程的模擬過程,使CPU和GPU的資源 得到充分利用,GPU加速卡用于模擬過程中的核心計算部分,并通過CUDA超多線程并行計 算加快計算速度,達到了快速、高效地實現模擬過程,進而提高運算速度、降低硬件成本和 減少能耗的目的。
[0048] 基于上述實施例提供的一種基于GPU的三維縱橫波分離的彈性波方程的模擬方 法,本發明還提供了另一實施例,在步驟SlOO中、在CPU處理器調用GPU加速卡的內核之 前,具體地,參考圖3,還可以包括如下內容:
[0049] 步驟S300