一種利用mic加速三維縱橫波分離的彈性波方程模擬的方法
【專利摘要】本發(fā)明公開了一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,屬于高性能計算領域,所述方法涉及到的硬件為CPU處理器、MIC眾核處理器,CPU處理器用于執(zhí)行程序的邏輯控制,控制三維縱橫波分離的彈性波方程模擬的IO操作,控制MIC眾核處理器的調(diào)用,以及控制CPU處理器和MIC眾核處理器之間的通信;MIC眾核處理器用于三維縱橫波分離的彈性波方程模擬的核心計算,利用OpenMP多線程在MIC眾核處理器上啟動多線程并行計算三維縱橫波分離的彈性波方程模擬。本發(fā)明利用MIC強大計算能力加速三維縱橫波分離的彈性波方程模擬的計算速度,充分發(fā)揮CPU和MIC的計算能力,達到計算性能的最優(yōu)化。
【專利說明】一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法
【技術領域】
[0001]本發(fā)明涉及一種高性能計算領域,具體地說是一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法。
【背景技術】
[0002]三維縱橫波分離的彈性波方程模擬方法是一種研究彈性波在各向同性完全彈性介質(zhì)中傳播的波場外推方法,即可以幫助人們認識彈性介質(zhì)中縱橫波的傳播機理,同時能得到縱橫波分離的波場外推結果。進一步為彈性介質(zhì)中的逆時地震波成像提供重要的外推算法。該應用程序?qū)ΧA縱橫波分離的彈性波方程采用高階有限差分法進行數(shù)值模擬。該應用程序?qū)τ嬎隳芰σ筇貏e大,在CPU平臺上計算時間較長,效率較低。
[0003]MIC (Many Integrated Core)是Intel公司推出的眾核處理器,跟通用的多核至強處理器相比,MIC眾核架構具有更小的內(nèi)核和硬件線程,眾核處理器計算資源密度更高,具有更高的計算性能,雙精性能超過lTFlops。MIC計算適合于密集型計算,計算能力相對于CPU更強,適合用于加速三維縱橫波分離的彈性波方程模擬。
[0004]如何利用MIC加速三維縱橫波分離的彈性波方程模擬,實現(xiàn)CPU和MIC的資源的充分利用,是目前需要解決的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的技術任務是提供一種利用MIC強大計算能力加速三維縱橫波分離的彈性波方程模擬的計算速度,充分發(fā)揮CPU和MIC的計算能力,達到計算性能的最優(yōu)化的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法。
[0006]本發(fā)明的技術任務是按以下方式實現(xiàn)的:
一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,所述方法涉及到的硬件為CPU處理器、MIC眾核處理器,CPU處理器用于執(zhí)行程序的邏輯控制,控制三維縱橫波分離的彈性波方程模擬的10操作,控制MIC眾核處理器的調(diào)用,以及控制CPU處理器和MIC眾核處理器之間的通信;MIC眾核處理器用于三維縱橫波分離的彈性波方程模擬的核心計算,利用OpenMP多線程在MIC眾核處理器上啟動多線程并行計算三維縱橫波分離的彈性波方程模擬;包括如下步驟:
(1)、CPU處理器在MIC眾核處理器上申請內(nèi)存空間;
(2)、CPU處理器調(diào)用MIC眾核處理器初始化,在MIC眾核處理器內(nèi)存上利用OpenMP多線程對數(shù)組進行初始化;
(3)、CPU處理器調(diào)用MIC眾核處理器,在MIC眾核處理器上利用OpenMP多線程進行并行化計算;
(4)、CPU處理器進行迭代判斷,當?shù)鷽]有完成繼續(xù)迭代計算,直到迭代計算完成;
(5)、CPU處理器調(diào)用MIC眾核處理器,把計算得到的數(shù)組的值由MIC眾核處理器內(nèi)存?zhèn)鬟f到CPU處理器內(nèi)存中;
(6 )、CPU處理器將內(nèi)存中的數(shù)組的值保存到硬盤上。
[0007]10操作是指CPU處理器控制計算需要的讀寫硬盤操作。
[0008]CPU處理器控制MIC眾核處理器的調(diào)用是指通過offload語句調(diào)用MIC眾核處理器,啟動MIC眾核處理器的執(zhí)行。
[0009]CPU處理器控制CPU處理器和MIC眾核處理器之間的通信,是指通過offload語句以及in語句、out語句、inout語句進行CPU處理器和MIC眾核處理器之間的數(shù)據(jù)通信。
[0010]本發(fā)明的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,利用MIC強大計算能力加速三維縱橫波分離的彈性波方程模擬的計算速度,充分發(fā)揮CPU和MIC的計算能力,達到計算性能的最優(yōu)化,因而,具有很好的推廣使用價值。
【專利附圖】
【附圖說明】
[0011]下面結合附圖對本發(fā)明進一步說明。
[0012]附圖1為一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法的流程圖。
【具體實施方式】
[0013]參照說明書附圖和具體實施例對本發(fā)明的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法作以下詳細地說明。
[0014]實施例1:
本發(fā)明的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,涉及到的硬件為CPU處理器、MIC眾核處理器,CPU處理器用于執(zhí)行程序的邏輯控制,控制三維縱橫波分離的彈性波方程模擬的10操作,控制MIC眾核處理器的調(diào)用,以及控制CPU處理器和MIC眾核處理器之間的通信;MIC眾核處理器用于三維縱橫波分離的彈性波方程模擬的核心計算,利用OpenMP多線程在MIC眾核處理器上啟動多線程并行計算三維縱橫波分離的彈性波方程模擬;包括如下步驟:
(1)、CPU處理器在MIC眾核處理器上申請內(nèi)存空間;
(2)、CPU處理器調(diào)用MIC眾核處理器初始化,在MIC眾核處理器內(nèi)存上利用OpenMP多線程對數(shù)組進行初始化;
(3)、CPU處理器調(diào)用MIC眾核處理器,在MIC眾核處理器上利用OpenMP多線程進行并行化計算;
(4)、CPU處理器進行迭代判斷,當?shù)鷽]有完成繼續(xù)迭代計算,直到迭代計算完成;
(5)、CPU處理器調(diào)用MIC眾核處理器,把計算得到的數(shù)組的值由MIC眾核處理器內(nèi)存?zhèn)鬟f到CPU處理器內(nèi)存中;
(6 )、CPU處理器將內(nèi)存中的數(shù)組的值保存到硬盤上。
[0015]10操作是指CPU處理器控制計算需要的讀寫硬盤操作。
[0016]CPU處理器控制MIC眾核處理器的調(diào)用是指通過offload語句調(diào)用MIC眾核處理器,啟動MIC眾核處理器的執(zhí)行。
[0017]CPU處理器控制CPU處理器和MIC眾核處理器之間的通信,是指通過offload語句以及in語句、out語句、inout語句進行CPU處理器和MIC眾核處理器之間的數(shù)據(jù)通信。
[0018] 實施例2:
本發(fā)明的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,涉及到的硬件為CPU處理器、MIC眾核處理器,CPU處理器用于執(zhí)行程序的邏輯控制,控制三維縱橫波分離的彈性波方程模擬的10操作,控制MIC眾核處理器的調(diào)用,以及控制CPU處理器和MIC眾核處理器之間的通信;MIC眾核處理器用于三維縱橫波分離的彈性波方程模擬的核心計算,利用OpenMP多線程在MIC眾核處理器上啟動多線程并行計算三維縱橫波分離的彈性波方程模擬;包括如下步驟:
(1)、CPU處理器在MIC眾核處理器上申請內(nèi)存空間;
CPU處理器通過調(diào)用offload語句,在MIC眾核處理器中為u、v、w、up、vp、wp、us、vs、ws等數(shù)組申請空間,offload語句格式如下:
#pragma offload target(mic:0) \
nocopy(u, v, w, up, vp, wp, us, vs, ws: length(nz*ny*nx) alloc_if(1) free_if (0));
其中alloc_if(l) free_if(0)代表在MIC卡上申請空間并且不釋放;
(2)、CPU處理器調(diào)用MIC眾核處理器初始化,在MIC眾核處理器內(nèi)存上利用OpenMP多線程對數(shù)組進行初始化;
CPU處理器通過offload語句調(diào)用初始化內(nèi)核,在MIC眾核處理器內(nèi)存上利用OpenMP多線程對u、v、w等數(shù)組進行初始化,實現(xiàn)代碼如下:
#pragma offload target(mic:0) in (threads,…)\
nocopy(u, v, w, up,...)
{
#pragma omp parallel for private(...) num_threads(threads)
for (ij=0;ij< (nz+2*mm)*ny;ij++){
for (int ijk=ij*nx;ijk<ij*nx+nx;ijk++){
u[ijk] =0.0;
}
}
};
(3)、CPU處理器調(diào)用MIC眾核處理器,在MIC眾核處理器上利用OpenMP多線程進行并行化計算;
計算up、vp、wp、US、VS、WS,實現(xiàn)代碼如下:
#pragma offload target (mic: 0) in (threads,...) \
nocopy(u, v, w, up,...)
{
#pragma omp parallel for private(...) num_threads(threads)
for (kj=0;kj<(nbottom-ntop)*(nback-nfront) ;kj++) {
for (i=nleft;i〈nright;i++){
up[kji]=fl (u, v, w);
}
}
};
計算U、V、W,實現(xiàn)代碼如下:
#pragma offload target (mic: 0) in (threads,...) \
nocopy(u, v, w, up,...)
{
#pragma omp parallel for private(...) num_threads(threads)
for (kj=0;kj< (nbottom-ntop)*(nback-nfront);kj++){
for (i=nleft;i〈nright;i++) {
u [kji] =f2 (up、vp、wp、us、vs、ws);
}
}
}o
[0019](4)、CPU處理器進行迭代判斷,當?shù)鷽]有完成繼續(xù)迭代計算,直到一炮內(nèi)迭代計算完成;
(5)、CPU處理器調(diào)用MIC眾核處理器,把計算得到的數(shù)組的值由MIC眾核處理器內(nèi)存?zhèn)鬟f到CPU處理器內(nèi)存中;
CPU處理器調(diào)用offload語句,把計算得到的u、v、w等數(shù)組的值由MIC眾核處理器內(nèi)存?zhèn)鬟f到CPU處理器內(nèi)存中,實現(xiàn)代碼如下:
#pragma offload target (mic: 0) out (u, v, w,...: length (nz*ny*nx) alloc_if (0)free_if(0))
{};
其中,alloc_if(0) free_if (0)代表即不申請空間也不釋放空間,即使用之前已定義的MIC內(nèi)存。Out代表把數(shù)據(jù)從MIC內(nèi)存?zhèn)鬟f到CPU內(nèi)存中。
[0020](6)、CPU處理器將內(nèi)存中的數(shù)組的值保存到硬盤上;
CPU處理器把接受到的u、v、w等數(shù)組的值保存到硬盤上,即保存該炮的成像體結果。
[0021](7)、判斷炮循環(huán):CPU處理器判斷炮循環(huán)是否完成,如果沒有完成繼續(xù)進行下一炮的成像體結果求解,所有炮都計算完成后程序退出。
[0022]通過上面【具體實施方式】,所述【技術領域】的技術人員可容易的實現(xiàn)本發(fā)明。但是應當理解,本發(fā)明并不限于上述的2種【具體實施方式】。在公開的實施方式的基礎上,所述【技術領域】的技術人員可任意組合不同的技術特征,從而實現(xiàn)不同的技術方案。
【權利要求】
1.一種利用Mic加速三維縱橫波分離的彈性波方程模擬的方法,其特征在于所述方法涉及到的硬件為CPU處理器、MIC眾核處理器,CPU處理器用于執(zhí)行程序的邏輯控制,控制三維縱橫波分離的彈性波方程模擬的1操作,控制MIC眾核處理器的調(diào)用,以及控制CPU處理器和MIC眾核處理器之間的通信;MIC眾核處理器用于三維縱橫波分離的彈性波方程模擬的核心計算,利用OpenMP多線程在MIC眾核處理器上啟動多線程并行計算三維縱橫波分離的彈性波方程模擬;包括如下步驟: (1)、CPU處理器在MIC眾核處理器上申請內(nèi)存空間; (2)、CPU處理器調(diào)用MIC眾核處理器初始化,在MIC眾核處理器內(nèi)存上利用OpenMP多線程對數(shù)組進行初始化; (3)、CPU處理器調(diào)用MIC眾核處理器,在MIC眾核處理器上利用OpenMP多線程進行并行化計算; (4)、CPU處理器進行迭代判斷,當?shù)鷽]有完成繼續(xù)迭代計算,直到迭代計算完成; (5)、CPU處理器調(diào)用MIC眾核處理器,把計算得到的數(shù)組的值由MIC眾核處理器內(nèi)存?zhèn)鬟f到CPU處理器內(nèi)存中; (6 )、CPU處理器將內(nèi)存中的數(shù)組的值保存到硬盤上。
2.根據(jù)權利要求1所述的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,其特征在于1操作是指CPU處理器控制計算需要的讀寫硬盤操作。
3.根據(jù)權利要求1所述的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,其特征在于CPU處理器控制MIC眾核處理器的調(diào)用是指通過offload語句調(diào)用MIC眾核處理器,啟動MIC眾核處理器的執(zhí)行。
4.根據(jù)權利要求1所述的一種利用MIC加速三維縱橫波分離的彈性波方程模擬的方法,其特征在于CPU處理器控制CPU處理器和MIC眾核處理器之間的通信,是指通過offload語句以及in語句、out語句、inout語句進行CPU處理器和MIC眾核處理器之間的數(shù)據(jù)通信。
【文檔編號】G06F9/50GK104331320SQ201410595408
【公開日】2015年2月4日 申請日期:2014年10月30日 優(yōu)先權日:2014年10月30日
【發(fā)明者】張廣勇, 盧曉偉, 沈鉑, 吳韶華, 王婭娟 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司