移硬件架構(gòu)平臺(tái)的操作。下面結(jié)合【附圖說(shuō)明】包括有搭建疊前時(shí)間偏移硬件架構(gòu)平臺(tái)的操作的優(yōu)選方案的完整實(shí)現(xiàn)過(guò)程。該過(guò)程中搭建疊前時(shí)間偏移硬件架構(gòu)平臺(tái)的部分包括以下操作:
[0039]步驟100,搭建疊前時(shí)間偏移硬件架構(gòu)平臺(tái);
[0040]其邏輯圖如圖1所示,具體包括:
[0041]系統(tǒng)架構(gòu)設(shè)計(jì),采用CPU+GPU異構(gòu)架構(gòu)的混合集群系統(tǒng)模式;
[0042]計(jì)算節(jié)點(diǎn)設(shè)計(jì),一部分計(jì)算節(jié)點(diǎn)為純CPU節(jié)點(diǎn),一部分節(jié)點(diǎn)為GPU (GraphicProcessing Unit,圖形處理器)節(jié)點(diǎn),GPU節(jié)點(diǎn)內(nèi)插的GPU卡型號(hào)可能不同,如有的GPU節(jié)點(diǎn)為Fermi架構(gòu)的GPU卡,有的GPU節(jié)點(diǎn)為Kelper架構(gòu)的GPU卡。GPU節(jié)點(diǎn)內(nèi)不僅含有GPU卡,還含有CPU芯片。
[0043]存儲(chǔ)設(shè)計(jì),采用并行存儲(chǔ);
[0044]網(wǎng)絡(luò)設(shè)計(jì),采用Mellanox公司的56Gb/s IB高速網(wǎng)絡(luò),即各計(jì)算節(jié)點(diǎn)與交換機(jī)的之間采用高速網(wǎng)絡(luò)進(jìn)行交互。
[0045]步驟200,設(shè)計(jì)CPU+GPU協(xié)同計(jì)算疊前時(shí)間偏移軟件;
[0046]該步驟主要包括兩個(gè)方面的設(shè)計(jì):
[0047]第一方面,自適應(yīng)性設(shè)計(jì),疊前時(shí)間偏移應(yīng)用程序可以自適應(yīng)CPU節(jié)點(diǎn)和GPU節(jié)點(diǎn),自適應(yīng)不同架構(gòu)型號(hào)的GPU卡。具體過(guò)程如下:
[0048]統(tǒng)計(jì)集群系統(tǒng)中計(jì)算節(jié)點(diǎn)數(shù)量,假如有N個(gè)節(jié)點(diǎn),則啟動(dòng)N個(gè)進(jìn)程;
[0049]每個(gè)進(jìn)程收集節(jié)點(diǎn)內(nèi)GPU配置信息,主要統(tǒng)計(jì)本節(jié)點(diǎn)內(nèi)GPU卡的個(gè)數(shù),即各計(jì)算節(jié)點(diǎn)內(nèi)GPU配置信息,GPU卡的編號(hào)及其對(duì)應(yīng)架構(gòu)型號(hào)(即GPU類型);每個(gè)進(jìn)程根據(jù)GPU配置信息判斷本節(jié)點(diǎn)是否有GPU卡,如果沒(méi)有GPU卡,則調(diào)用疊前時(shí)間偏移CPU版本函數(shù);如果有M塊GPU卡,則在進(jìn)程內(nèi)啟(M+1)個(gè)線程。其中第一個(gè)線程調(diào)用疊前時(shí)間偏移CPU版本函數(shù);根據(jù)據(jù)GPU架構(gòu)型號(hào),第2至(M+1)號(hào)線程調(diào)用疊前時(shí)間偏移Fermi GPU版本函數(shù)或疊前時(shí)間偏移Kepler GPU版本函數(shù)。
[0050]第二方面,高性能設(shè)計(jì),疊前時(shí)間偏移應(yīng)用將運(yùn)行此系統(tǒng)獲得高性能,疊前時(shí)間偏移計(jì)算采用CPU與GPU協(xié)同計(jì)算,CPU與GPU計(jì)算實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,實(shí)現(xiàn)整個(gè)系統(tǒng)的性能最佳;
[0051]具體實(shí)現(xiàn)過(guò)程如下:
[0052]設(shè)計(jì)疊前時(shí)間偏移CPU函數(shù),采用CPU多核并行計(jì)算FFT,具體調(diào)用FFT高性能庫(kù)計(jì)算,偏移計(jì)算也采用多核CPU進(jìn)行并行計(jì)算;
[0053]設(shè)計(jì)疊前時(shí)間偏移Fermi GPU函數(shù),采用Fermi架構(gòu)型號(hào)的GPU眾核并行計(jì)算FFT,具體調(diào)用針對(duì)Fermi GPU的FFT高性能庫(kù)計(jì)算,偏移計(jì)算也采用Fermi GPU進(jìn)行并行計(jì)算;
[0054]設(shè)計(jì)疊前時(shí)間偏移Kepler GPU函數(shù),采用Kepler架構(gòu)型號(hào)的GPU眾核并行計(jì)算FFT,具體調(diào)用針對(duì)K印Ier GPU的FFT高性能庫(kù)計(jì)算,偏移計(jì)算也采用K印Ier GPU進(jìn)行并行計(jì)算;
[0055]設(shè)計(jì)動(dòng)態(tài)負(fù)載均衡機(jī)制,疊前時(shí)間偏移CPU函數(shù)、疊前時(shí)間偏移Fermi GPU函數(shù)、疊前時(shí)間偏移Kepler GPU函數(shù)同時(shí)被并行線程調(diào)用,誰(shuí)先算完一批地震道數(shù)據(jù),就取下一批次地震道數(shù)據(jù),CPU與GPU設(shè)備完全實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,系統(tǒng)整體性能大大提升。
[0056]下面結(jié)合圖2說(shuō)明搭建疊前時(shí)間偏移硬件架構(gòu)平臺(tái)后,計(jì)算地震疊前時(shí)間偏移的過(guò)程。
[0057]首先說(shuō)明一下已搭建的疊前時(shí)間偏移硬件架構(gòu)平臺(tái),其邏輯圖如圖1所示,具體包括:
[0058]系統(tǒng)架構(gòu)設(shè)計(jì)。采用CPU+GPU異構(gòu)架構(gòu)的混合集群系統(tǒng)模式;此集群系統(tǒng)由三個(gè)子集群組成,具體包括:
[0059]2個(gè)節(jié)點(diǎn)的CPU子集群;
[0060]2個(gè)節(jié)點(diǎn)的Fermi GPU子集群;
[0061]2個(gè)節(jié)點(diǎn)的Ifep I er GPU子集群。
[0062]計(jì)算節(jié)點(diǎn)設(shè)計(jì)。CPU子集群中每個(gè)節(jié)點(diǎn)包括2塊CPU,每個(gè)CPU有8個(gè)計(jì)算核心;Fermi GPU子集群中的每個(gè)節(jié)點(diǎn)含有I塊Fermi型號(hào)的GPU卡,2塊8核心的CPU ;KeplerGPU子集群中的每個(gè)節(jié)點(diǎn)含有I塊Kepler型號(hào)的GPU卡,2塊8核心的CPU。
[0063]存儲(chǔ)設(shè)計(jì)。采用并行Luster存儲(chǔ),存放地震道數(shù)據(jù),每個(gè)計(jì)算節(jié)點(diǎn)從存儲(chǔ)上并行讀地震道數(shù)據(jù);
[0064]網(wǎng)絡(luò)設(shè)計(jì),采用Mellanox公司的56Gb/s IB高速網(wǎng)絡(luò)。
[0065]設(shè)計(jì)CPU+GPU協(xié)同計(jì)算疊前時(shí)間偏移軟件,具體包括:
[0066]自適應(yīng)性設(shè)計(jì)。疊前時(shí)間偏移應(yīng)用程序可以自適應(yīng)CPU節(jié)點(diǎn)和GPU節(jié)點(diǎn),自適應(yīng)不同架構(gòu)型號(hào)的GPU卡。
[0067]具體地,計(jì)算地震疊前時(shí)間偏移的過(guò)程如下:
[0068]統(tǒng)計(jì)集群系統(tǒng)中計(jì)算節(jié)點(diǎn)數(shù)量,共6個(gè)節(jié)點(diǎn),編號(hào)0,1,2,3,4,5號(hào)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)啟動(dòng)一個(gè)進(jìn)程,則CPU+GPU協(xié)同計(jì)算疊前時(shí)間偏移程序共啟動(dòng)6個(gè)進(jìn)程處理,進(jìn)程編號(hào)為O, 1,2,3,4,5 ;其中O號(hào)進(jìn)程對(duì)應(yīng)O號(hào)節(jié)點(diǎn),I號(hào)進(jìn)程對(duì)應(yīng)I號(hào)節(jié)點(diǎn),如此類推。
[0069]每個(gè)進(jìn)程調(diào)用GPU安裝包自帶的devicequery程序,收集節(jié)點(diǎn)內(nèi)GPU配置信息,其中O號(hào)和I號(hào)進(jìn)程統(tǒng)計(jì)到本節(jié)點(diǎn)內(nèi)GPU卡的個(gè)數(shù)為0,2號(hào)和3號(hào)進(jìn)程統(tǒng)計(jì)到本節(jié)點(diǎn)內(nèi)GPU卡數(shù)量為I個(gè),且為Fermi型號(hào);4號(hào)和5號(hào)進(jìn)程統(tǒng)計(jì)到本節(jié)點(diǎn)內(nèi)GPU卡數(shù)量為I個(gè),且為Kepler 型號(hào);
[0070]每個(gè)進(jìn)程根據(jù)GPU配置信息判斷本節(jié)點(diǎn)是否有GPU卡,O號(hào)和I號(hào)節(jié)點(diǎn)沒(méi)有GPU卡,則調(diào)用疊前時(shí)間偏移CPU版本函數(shù);2號(hào)和3號(hào)節(jié)點(diǎn)有I塊GPU卡,則在2號(hào)和3號(hào)進(jìn)程內(nèi)分別啟2個(gè)線程。其中第一個(gè)線程調(diào)用疊前時(shí)間偏移CPU版本函數(shù),第二個(gè)線程調(diào)用疊前時(shí)間偏移Fermi GPU版本函數(shù);4號(hào)和5號(hào)節(jié)點(diǎn)有I塊GPU卡,則在4號(hào)和5號(hào)進(jìn)程內(nèi)分別啟2個(gè)線程。其中第一個(gè)線程調(diào)用疊前時(shí)間偏移CPU版本函數(shù),第二個(gè)線程調(diào)用疊前時(shí)間偏移Kepler GPU版本函數(shù),其調(diào)用如圖2所示;
[0071]高性能設(shè)計(jì)。疊前時(shí)間偏移應(yīng)用將運(yùn)行此系統(tǒng)獲得高性能,疊前時(shí)間偏移計(jì)算采用CPU與GPU協(xié)同計(jì)算,CPU與GPU計(jì)算實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,實(shí)現(xiàn)整個(gè)系統(tǒng)的性能最佳,具體過(guò)程如下:
[0072]設(shè)計(jì)疊前時(shí)間偏移CPU函數(shù),每個(gè)節(jié)點(diǎn)有16個(gè)CPU計(jì)算核心,采用16個(gè)CPU核心并行計(jì)算FFT,具體調(diào)用Intel MKL內(nèi)的FFT函數(shù)庫(kù)計(jì)算,計(jì)算完后,采用16個(gè)CPU計(jì)算核心并行偏移計(jì)算;
[0073]設(shè)計(jì)疊前時(shí)間偏移Fermi GPU函數(shù),針對(duì)Fermi GPU架構(gòu)平臺(tái),采用CUDA (ComputeUnified Device Architecture)編程模型,對(duì)偏移計(jì)算部分進(jìn)行GPU移植和優(yōu)化,設(shè)計(jì)偏移計(jì)算GPU內(nèi)核。調(diào)用cuFFT庫(kù)進(jìn)行FFT計(jì)算,計(jì)算完后,調(diào)用偏移計(jì)算GPU內(nèi)核;
[0074]設(shè)計(jì)疊前時(shí)間偏移Kepler GPU函數(shù),針對(duì)Kepler GPU架構(gòu)平臺(tái),采用CUDA編程模型,對(duì)偏移計(jì)算部分進(jìn)行GPU移植和優(yōu)化,設(shè)計(jì)偏移計(jì)算GPU內(nèi)核。調(diào)用cuFFT庫(kù)進(jìn)行FFT計(jì)算,計(jì)算完后,調(diào)用偏移計(jì)算GPU內(nèi)核;
[0075]設(shè)計(jì)動(dòng)態(tài)負(fù)載均衡機(jī)制,在2、3號(hào)節(jié)點(diǎn)內(nèi),由于既有CPU,又有I塊Fermi GPU,疊前時(shí)間偏移CPU函數(shù)、疊前時(shí)間偏移Fermi GPU函數(shù)同時(shí)被進(jìn)程內(nèi)O號(hào)和I號(hào)線程并行調(diào)用,隨先算完一批地震道數(shù)據(jù),就取下一批次地震道數(shù)據(jù),CPU與GPU設(shè)備完全實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,系統(tǒng)整體性能大大提升,同理4,5號(hào)節(jié)點(diǎn)也是如此。
[0076]實(shí)施例2
[0077]本實(shí)施例提供一種地震疊前時(shí)間偏移的計(jì)算系統(tǒng),至少包括如下各部分。
[0078]下發(fā)單元,觸發(fā)各計(jì)算節(jié)點(diǎn)收集本計(jì)算節(jié)點(diǎn)內(nèi)GPU配置信息;
當(dāng)前第2頁(yè)
1 
2 
3