一种利用mic加速三维纵横波分离的弹性波方程模拟的方法

文档序号:6632302阅读:224来源:国知局
一种利用mic加速三维纵横波分离的弹性波方程模拟的方法
【专利摘要】本发明公开了一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,属于高性能计算领域,所述方法涉及到的硬件为CPU处理器、MIC众核处理器,CPU处理器用于执行程序的逻辑控制,控制三维纵横波分离的弹性波方程模拟的IO操作,控制MIC众核处理器的调用,以及控制CPU处理器和MIC众核处理器之间的通信;MIC众核处理器用于三维纵横波分离的弹性波方程模拟的核心计算,利用OpenMP多线程在MIC众核处理器上启动多线程并行计算三维纵横波分离的弹性波方程模拟。本发明利用MIC强大计算能力加速三维纵横波分离的弹性波方程模拟的计算速度,充分发挥CPU和MIC的计算能力,达到计算性能的最优化。
【专利说明】一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法

【技术领域】
[0001]本发明涉及一种高性能计算领域,具体地说是一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法。

【背景技术】
[0002]三维纵横波分离的弹性波方程模拟方法是一种研究弹性波在各向同性完全弹性介质中传播的波场外推方法,即可以帮助人们认识弹性介质中纵横波的传播机理,同时能得到纵横波分离的波场外推结果。进一步为弹性介质中的逆时地震波成像提供重要的外推算法。该应用程序对二阶纵横波分离的弹性波方程采用高阶有限差分法进行数值模拟。该应用程序对计算能力要求特别大,在CPU平台上计算时间较长,效率较低。
[0003]MIC (Many Integrated Core)是Intel公司推出的众核处理器,跟通用的多核至强处理器相比,MIC众核架构具有更小的内核和硬件线程,众核处理器计算资源密度更高,具有更高的计算性能,双精性能超过lTFlops。MIC计算适合于密集型计算,计算能力相对于CPU更强,适合用于加速三维纵横波分离的弹性波方程模拟。
[0004]如何利用MIC加速三维纵横波分离的弹性波方程模拟,实现CPU和MIC的资源的充分利用,是目前需要解决的问题。


【发明内容】

[0005]本发明的技术任务是提供一种利用MIC强大计算能力加速三维纵横波分离的弹性波方程模拟的计算速度,充分发挥CPU和MIC的计算能力,达到计算性能的最优化的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法。
[0006]本发明的技术任务是按以下方式实现的:
一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,所述方法涉及到的硬件为CPU处理器、MIC众核处理器,CPU处理器用于执行程序的逻辑控制,控制三维纵横波分离的弹性波方程模拟的10操作,控制MIC众核处理器的调用,以及控制CPU处理器和MIC众核处理器之间的通信;MIC众核处理器用于三维纵横波分离的弹性波方程模拟的核心计算,利用OpenMP多线程在MIC众核处理器上启动多线程并行计算三维纵横波分离的弹性波方程模拟;包括如下步骤:
(1)、CPU处理器在MIC众核处理器上申请内存空间;
(2)、CPU处理器调用MIC众核处理器初始化,在MIC众核处理器内存上利用OpenMP多线程对数组进行初始化;
(3)、CPU处理器调用MIC众核处理器,在MIC众核处理器上利用OpenMP多线程进行并行化计算;
(4)、CPU处理器进行迭代判断,当迭代没有完成继续迭代计算,直到迭代计算完成;
(5)、CPU处理器调用MIC众核处理器,把计算得到的数组的值由MIC众核处理器内存传递到CPU处理器内存中;
(6 )、CPU处理器将内存中的数组的值保存到硬盘上。
[0007]10操作是指CPU处理器控制计算需要的读写硬盘操作。
[0008]CPU处理器控制MIC众核处理器的调用是指通过offload语句调用MIC众核处理器,启动MIC众核处理器的执行。
[0009]CPU处理器控制CPU处理器和MIC众核处理器之间的通信,是指通过offload语句以及in语句、out语句、inout语句进行CPU处理器和MIC众核处理器之间的数据通信。
[0010]本发明的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,利用MIC强大计算能力加速三维纵横波分离的弹性波方程模拟的计算速度,充分发挥CPU和MIC的计算能力,达到计算性能的最优化,因而,具有很好的推广使用价值。

【专利附图】

【附图说明】
[0011]下面结合附图对本发明进一步说明。
[0012]附图1为一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法的流程图。

【具体实施方式】
[0013]参照说明书附图和具体实施例对本发明的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法作以下详细地说明。
[0014]实施例1:
本发明的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,涉及到的硬件为CPU处理器、MIC众核处理器,CPU处理器用于执行程序的逻辑控制,控制三维纵横波分离的弹性波方程模拟的10操作,控制MIC众核处理器的调用,以及控制CPU处理器和MIC众核处理器之间的通信;MIC众核处理器用于三维纵横波分离的弹性波方程模拟的核心计算,利用OpenMP多线程在MIC众核处理器上启动多线程并行计算三维纵横波分离的弹性波方程模拟;包括如下步骤:
(1)、CPU处理器在MIC众核处理器上申请内存空间;
(2)、CPU处理器调用MIC众核处理器初始化,在MIC众核处理器内存上利用OpenMP多线程对数组进行初始化;
(3)、CPU处理器调用MIC众核处理器,在MIC众核处理器上利用OpenMP多线程进行并行化计算;
(4)、CPU处理器进行迭代判断,当迭代没有完成继续迭代计算,直到迭代计算完成;
(5)、CPU处理器调用MIC众核处理器,把计算得到的数组的值由MIC众核处理器内存传递到CPU处理器内存中;
(6 )、CPU处理器将内存中的数组的值保存到硬盘上。
[0015]10操作是指CPU处理器控制计算需要的读写硬盘操作。
[0016]CPU处理器控制MIC众核处理器的调用是指通过offload语句调用MIC众核处理器,启动MIC众核处理器的执行。
[0017]CPU处理器控制CPU处理器和MIC众核处理器之间的通信,是指通过offload语句以及in语句、out语句、inout语句进行CPU处理器和MIC众核处理器之间的数据通信。
[0018] 实施例2:
本发明的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,涉及到的硬件为CPU处理器、MIC众核处理器,CPU处理器用于执行程序的逻辑控制,控制三维纵横波分离的弹性波方程模拟的10操作,控制MIC众核处理器的调用,以及控制CPU处理器和MIC众核处理器之间的通信;MIC众核处理器用于三维纵横波分离的弹性波方程模拟的核心计算,利用OpenMP多线程在MIC众核处理器上启动多线程并行计算三维纵横波分离的弹性波方程模拟;包括如下步骤:
(1)、CPU处理器在MIC众核处理器上申请内存空间;
CPU处理器通过调用offload语句,在MIC众核处理器中为u、v、w、up、vp、wp、us、vs、ws等数组申请空间,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处理器调用MIC众核处理器初始化,在MIC众核处理器内存上利用OpenMP多线程对数组进行初始化;
CPU处理器通过offload语句调用初始化内核,在MIC众核处理器内存上利用OpenMP多线程对u、v、w等数组进行初始化,实现代码如下:
#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处理器调用MIC众核处理器,在MIC众核处理器上利用OpenMP多线程进行并行化计算;
计算up、vp、wp、US、VS、WS,实现代码如下:
#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,实现代码如下:
#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处理器进行迭代判断,当迭代没有完成继续迭代计算,直到一炮内迭代计算完成;
(5)、CPU处理器调用MIC众核处理器,把计算得到的数组的值由MIC众核处理器内存传递到CPU处理器内存中;
CPU处理器调用offload语句,把计算得到的u、v、w等数组的值由MIC众核处理器内存传递到CPU处理器内存中,实现代码如下:
#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内存。Out代表把数据从MIC内存传递到CPU内存中。
[0020](6)、CPU处理器将内存中的数组的值保存到硬盘上;
CPU处理器把接受到的u、v、w等数组的值保存到硬盘上,即保存该炮的成像体结果。
[0021](7)、判断炮循环:CPU处理器判断炮循环是否完成,如果没有完成继续进行下一炮的成像体结果求解,所有炮都计算完成后程序退出。
[0022]通过上面【具体实施方式】,所述【技术领域】的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的2种【具体实施方式】。在公开的实施方式的基础上,所述【技术领域】的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
【权利要求】
1.一种利用Mic加速三维纵横波分离的弹性波方程模拟的方法,其特征在于所述方法涉及到的硬件为CPU处理器、MIC众核处理器,CPU处理器用于执行程序的逻辑控制,控制三维纵横波分离的弹性波方程模拟的1操作,控制MIC众核处理器的调用,以及控制CPU处理器和MIC众核处理器之间的通信;MIC众核处理器用于三维纵横波分离的弹性波方程模拟的核心计算,利用OpenMP多线程在MIC众核处理器上启动多线程并行计算三维纵横波分离的弹性波方程模拟;包括如下步骤: (1)、CPU处理器在MIC众核处理器上申请内存空间; (2)、CPU处理器调用MIC众核处理器初始化,在MIC众核处理器内存上利用OpenMP多线程对数组进行初始化; (3)、CPU处理器调用MIC众核处理器,在MIC众核处理器上利用OpenMP多线程进行并行化计算; (4)、CPU处理器进行迭代判断,当迭代没有完成继续迭代计算,直到迭代计算完成; (5)、CPU处理器调用MIC众核处理器,把计算得到的数组的值由MIC众核处理器内存传递到CPU处理器内存中; (6 )、CPU处理器将内存中的数组的值保存到硬盘上。
2.根据权利要求1所述的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,其特征在于1操作是指CPU处理器控制计算需要的读写硬盘操作。
3.根据权利要求1所述的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,其特征在于CPU处理器控制MIC众核处理器的调用是指通过offload语句调用MIC众核处理器,启动MIC众核处理器的执行。
4.根据权利要求1所述的一种利用MIC加速三维纵横波分离的弹性波方程模拟的方法,其特征在于CPU处理器控制CPU处理器和MIC众核处理器之间的通信,是指通过offload语句以及in语句、out语句、inout语句进行CPU处理器和MIC众核处理器之间的数据通信。
【文档编号】G06F9/50GK104331320SQ201410595408
【公开日】2015年2月4日 申请日期:2014年10月30日 优先权日:2014年10月30日
【发明者】张广勇, 卢晓伟, 沈铂, 吴韶华, 王娅娟 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1