您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页三维声波方程正演多级异构并行算法设计与实现

三维声波方程正演多级异构并行算法设计与实现

来源:纷纭教育
第31卷第1期 2014年1月 计算机应用与软件 Computer Applications and Software Vo1.31 No.1 Jan.2014 三维声波方程正演多级异构并行算法设计与实现 何 香 周明忠 刘 鑫 (江南计算技术研究所江苏无锡214083) 摘要 在石油勘探过程中,地震波正演为反演方法提供理论基础及理论数据,能测试反演方法的有效性,在整个反射地震学中 占有很重要的地位。通过对三维声波方程正演算法的分析,结合某众核平台的特性,完成了该算法两级MPI并行+众核级并行的 设计,并进行了相关优化。实验结果表明,三维声波方程正演多级异构并行算法在该平台具有较好的众核并行加速效果和良好的 MPI扩展性能。 关键词 中图分类号三维声波方程 多级异构并行TF30 文献标识码优化 A DOI:10.3969/j.issn.1000—386x.2014.01.071 . DESIGN AND IMPLEMENTATIoN OF MULTI.LEVEL HETEROGENEoUS PARALLEL ALGoRITHM oF 3D ACoUSTIC WAVE EQUATIoN FoRWARDED He Xiang Zhou Mingzhong Liu Xin (Jiangnan Institute ofComputer Technology,Wuxi 214083,Jiangsu,China) Abstract Seismic wave forward provides theory basis and theoretical data for inversion method in the process of oil exploration,and can test the effectiveness of inversion method,it is very important to reflection seismology.In this paper,we complete the design of 2-level MPI parallel and multi—core thread parallel of 3D acoustic wave equation forward algorithm through analysing it and in combination with the characteristics of a multi-core platform,and make the correlated optimisation as wel1.Experimental results show that the multi-level heterogeneous parallel method of 3D acoustic wave equation forward has preferable muhi-core parallel acceleration effect and good MPI scalable performance. Keywords 3 D acoustic wave equation Multi-level heterogeneous parallel Optimisation 0引 言 地震勘探是石油勘探过程中最主要的手段,目的是利用地 1地震波正演算法概述 用声波方程或弹性波方程进行有限差分法正演模拟时,如 表接收的人工震源的反射波,反演地下介质的地质构造及岩性 分布,进而推测探区的地质演化历史,确定可能的含油气情况, 指导钻井位置的布设。地震波正演在整个反射地震学中占有举 足轻重的位置,它可以仿真模拟野外地震观测过程,为野外观测 参数的选择提供指导;也可以模拟零偏移距地震记录,检验地质 解释的正确性;它可以使我们更深入地认识波在复杂介质中的 果使用二阶差分格式,为保证频散较小及递推过程稳定,网格间 距必须取得很小,才能保证计算精度及稳定性。当对具有实际 生产规模的地质模型进行模拟时,需要巨量的计算机内存及很 长的计算时间。为此人们尝试利用高阶差分方程来解决这个问题。 在三维或二维正演模拟及逆时深度偏移中,当利用截断误 差为0(Ax ,Ay , ,At )的差分格式时,为保证频散较小及递 推过程稳定,差分网格要求取得非常小,这样计算需要的计算机 传播过程;它可以为各种反演方法提供理论基础,也可以为反演 (包括成像)方法提供理论数据,更好地测试这些方法的有 效性。 内存及运算时间会大大增加。Dablain(1986)和Mufti(1990, 1996)提出利用高阶差分方程来进行上述模拟和偏移过程。利 用高阶差分方程时,网格值可以取得大些,而计算精度并不降 低。在此,我们称截断误差高于四阶的差分方程为高阶差分方 地震波正演是反射地震学的基础,但是三维声波动方程地 震波正演需要超强的计算能力。SEG/EAGE三维岩丘模型是上 世纪九十年代中美国勘探地球物理学家协会牵头动用很多国家 实验室的超大型计算机化费几个月的时间算出来的。鉴于高昂 的计算代价,他们采用的计算网格比较大,计算结果的频散比较 厉害,需要巨大的计算资源。 本文对三维声波方程的算法进行了分析,然后在一种新的 众核处理器平台上对核心算法进行众核并行适应性设计,在实 验众核处理器平台上进行实验测试,并对得到的结果进行分析。 程。三维声波方程的高阶差分方程可以用统一的方式推导出 来。三维声波方程为: 02uuOx:+_‘ a旁+ ‘ Oz=  Y矿( , o,z) t 。 (1) 收稿日期:2012—09—24。何香,硕士,主研领域:高性能并行计算 软件应用。周明忠,高工。刘鑫,高工。 第1期 何香等:三维声波方程正演多级异构并行算法设计与实现 265 其中,u(x,y,z,t)为地表记录的压力波场; ( ,y,z)为纵横向可 变的介质速度。 量占整个课题计算量的95%以上,因此本文中的众核并行化主 要针对这个部分来进行。 (1)众核并行方案1 为导出方程式(1)的离散差分格式,需把观测对应的地下 介质分布区域或要对其进行地震波模拟的模型区域离散化,即 把它们剖分成一个个的小方块。令 n . = (iAx,jAy,kAz, nAt),对方程进行推导可得如下结论: 截断误差为0(Ax ,Ay ,Az ,At )的统一的三维逆时深 度偏移高阶差分方程为: 采用加速编程模型对每个核心计算部分的循环结构重新进 行众核编程,具体方案如下:以最外层K循环变量来进行众核 并行,从核执行部分可分为两部分,一部分是从核的计算部分; 另外一部分则是从核向主核发起通信请求并读入或写回数据的 部分,即众核数据通信部分。众核并行后整个3层循环构成一 n I n+l=J2u nJ, 一 ,J^+ ,r,i 11(、v At ̄ n +薹 n~ ]+ r,l ,1(、v At ̄ n + n n )]+ 舸 ’ l(v At、, ̄ + n )](2) 下面列出几种常用截断误差的高阶差分方程中的系数: 当M=4时,cc,0=一5.0, 1=2.666667, 2=-0.1666667; 当M=6时,(-O0=一5.444444, 1=3.000000,∞2= 一0.3000003, 3=0.0222225; 当M:8时, 0=一2.847222054, l=3.20000000, 2= 一0.4000002,∞3=0.05079369, 4=一0.003571436; 当M=10时, 0=一5.854 5,∞1=3.333333, 2= 一0.4761901, 3=0.07936513,∞4=一0.009920621, 5 =0.0006349185 2多级异构算法实现 2.1众核算法实现 该课题属于典型的区域分解类应用课题,原有程序基于 MPI消息传递编程模型实现了单炮数据区域分解并行的粗粒度 算法设计。 如图1所示,首先把每炮的计算区域进行三维分解,各进程 根据各自的逻辑进程号得到计算范围,并读取其相应速度场数 据,最后再把各自计算结果存盘。 图1 三维地震波正演算法流程图 迭代计算过程主要由初始化工作数组、读取该区域速度场、 正演模拟和保存模拟数据四个部分组成。其中正演模拟的计算 个单位,具体实现框图参见图2。 图2众核并行编程模型图 其中sjD是各从核逻辑编号(逻辑编号从0开始),CORE— NUM为从核总数。 该众核并行方案针对每个核心计算循环进行加速,属于循 环级细粒度并行,因该课题边界处理的特殊性(存在l2种边界 条件类型),若针对每种边界条件都进行细粒度并行,由于计算 范围不固定,实际众核实现效果不佳。 因此我们考虑使用介于MPI级区域分解粗粒度并行与循环 级细粒度并行之间的众核并行方式,具体参见众核并行方案2。 (2)众核并行方案2 众核并行方案2采用介于MPI级区域分解粗粒度并行与 循环级细粒度并行之间的众核并行方式对正演模拟计算部分重 新进行编程,基于程序本身的特点,各边界区域没有重叠,因此 可以将多个DO循环结构进行合并,这样可以从整体上减小众 核通信开销,该并行方式类似于基于共享变量编程模型的区域 分解类并行,采用的并行方案如下: 步骤l将三维计算区域按从核LDM空间大小平均分配给 每个从核,考虑到数据相关性问题,为提高DMA效率,我们采用 仅对k维进行分解的形式将计算区域平均分解到每个从核上; 步骤2从核得到自己计算区域内的各物理量值以后,首 先根据计算区域的范围判断边界条件类型,进行相应边界条件 处理,同时完成该边界条件的计算以及后续的物理量计算; 步骤3各从核物理量计算完成后,根据计算区域的范围 (K循环值)将计算结果写回主存中相应位置。 该方案避免了针对每种边界条件类型构造相应的众核并行 实现,大大减少了众核通信次数,并行粒度相对于循环级众核并 行的粒度更粗,编程实现简单,同时更容易实现统一的性能优化。 2.2多级并行实现 原始程序并行规模大于16时,MPI扩展性能明显降低,同 时,考虑在实际课题中,需要处理的网格会更大,炮数更多,本文 采用了三级并行模型完成极大规模的并行计算。 如图3所示,炮间并行+炮内粗粒度区域分解并行+细粒 266 计算机应用与软件 2014互 度区域分解并行,其中前两级并行采用MPI实现进程级并行, 信开销加上1次计算开销。实验证明优化之后的程序在性能上 后一级采用加速线程库实现线程级并行。 图3三级并行模型不意图 由于实际应用中炮与炮之间没有相关性,在炮与炮之间对 CPU进行分组,这样多个CPU可以同时处理不同位置的炮,实 现第一级并行;在各炮CPU组内进行区域分解,协同完成单炮 的迭代过程,实现第二级并行;各进程对各自的网格区域进行众 核分解,实现第三级并行。 3 多级异构算法实现 对四个分量模式并行优化的主要思路是通过计算与通信的 重叠、集合通信代替点对点通信以避免网络热点的方法。 主要介绍算法众核实现过程中使用的主要优化方法。程序 众核化之后,计算开销会平均地分配给各个从核,访存开销会减 少一部分,但是各从核会增加通信开销,如何能够将通信开销最 大程度地减少,那么,众核化之后的性能才能有理想的提升。 3.1 DMA通信数据的合并 减少数据通信部分的开销,最直接的办法是减少通信次数, 以及减少单次通信的数据的长度。一般情况下通信数据长度是 按照计算需要确定,因此设法将需要通信的数据进行适当的合 并能达到减少通信次数的目的、提高通信带宽利用率成为减少 数据通信部分开销的最直接的方法。 在地震波正演算法众核并行的过程中,观察到一些变量为 一维数组,mp(i),np(i),op(i),如果从核访问主核时单独读取 各数组,需要3次通信。我们可以将3个数组合并为一个数组 joinp(i,3),通信次数就减少1/3,由于通信次数大量减少,既充 分利用了带宽,也减少了多次通信相互之间的竞争。经过优化 之后的程序通信开销大大减小。 3.2 DMA通信与计算的互相隐藏 对于众核处理器,最大限度的隐藏从核对其他核外存储空 间的访问延迟是获得良好性能加速的关键。这里采用了双缓冲 机制实现计算和通信最大限度的相互隐藏并取得较好加速效 果。所谓双缓冲是指从核在进行通信的同时可以对上一次读取 的数据进行计算。 如图4所示,优化前对于单个从核,在J层循环(图2)应该 遵循通信、计算、通信的先后顺序,这样总开销就是3次通信开 销加上3次计算开销。由于在K方向(图2中K循环)没有自 相关性,通信1完成之后,计算1进行的同时进行通信2,如果 计算1和通信2的开销一样,那么单从核的总开销就是3次通 有很大的提高。 图4众核并行编程模型图 4实验结果 4.1众核加速测实验结果 本文中的三维地震波正演模拟众核算法在实验性众核处理 器计算平台上完成性能测试实验。实验网格规模为51 X 641× 670。测试的对象包括核心计算单炮正演模拟过程和课题整体 性能的众核程序的加速效果。其中,单炮正演模拟过程的众核 并行效率为表1所示。 表1 三维地震波正演模拟核心函数众核并行效率 核心函数加速比 众核并行效率(%) SINGLE_SHOTMOD 29.62 Displ 12.13 Disp2 、 l2.O7 整体加速比 27.6O 因为程序核心计算中涉及到I,J,K三个方向上的计算,数 据离散,DMA跨步多导致DMA开销较大,同时程序计算内容几 乎都是乘加运算,众核并行之后计算拍数相对DMA拍数较少, 因此被隐藏的计算拍数不多。最后加速比没有达到理想加速比。 4.2众核并行小规模实验结果 原始的三维地震波正演模拟算法属于计算密集型课题,具 有良好的MPI并行扩展性,基于同样MPI并行规模和数据规模 条件下,本文在实验性众核处理器计算平台上对三维地震波正 演模拟众核并行算法的MPI并行扩展性进行了初步的测试。 如表2所示,测试时采用测试网格规模为51×641×670,炮 数为32,测试过程中,暂不考虑I/0过程。表2中给出了并行 规模为1—128的核心计算迭代500步的计算时间、加速比和并 行效率测试结果。测试结果表明,MPI并行规模在1~16时,能 够保持较为理想的并行效率;但随着并行规模的扩大(大于 16),各进程数据量较小,且计算开销在众核中被隐藏,计算开 销与MPI通信开销比明显变小,并行效率下降。 表2 三维地震波正演模拟众核并行算法MPI扩展性实验结果 进程 运行时间(S) 加速比 并行效率(%) 1 4 996.708 1 100 4 1 402.93264 3.56 89 16 415.13792 12.04 75.25 64 204.58032 24.42 38.16 l28 164.oo544 30.47 23.80 第1期 何香等:三维声波方程正演多级异构并行算法设计与实现 267 4.3 多级异构并行实验结果 并行模式经过优化之后,在实验性平台上进行了测试。测 试时采用网格规模为51×641×670,炮数为32,测试过程中,暂 不考虑I/0过程。表3给出了3级并行模式并行规模为1~128 的核心计算迭代500步的计算时问、加速比和并行效率测试 结果。 平台,以提高课题的实际应用性能为目的,实现了两级MPI并 行和第3级众核并行的设计和优化,并取得了较为理想的加速 效果。本文还完成了在某实验性众核平台上多级异构算法的测 试,对课题的实际应用具有一定的意义。 参考文献 表3中的测试结果表明,采用了三级并行方式的算法在 MPI并行规模大于16时,能够保持较为理想且基本稳定的并行 效率,这是因为各炮之间数据不相关,CPU组间没有通信,因 [1]方伍宝,孙建国,赵改善,等.波动方程叠前深度偏移成像软件系统 的研制及应用[J].石油勘探,2005,44(5):486—490. [2]陈左宁,李宏亮,胡苏太.异构成为高效能计算机体系结构的新趋 此,计算通信开销比例基本保持不变。 表3 多级异构并行算法实验结果 进程 运行时间(S) 加速比 并行效率(%) l 9 993.416 l 100 4 2 805.86528 3.56 89 16 747.26432 l3.37 83.56 64 l87.16964 53.39 83.42 128 92.57896 107.94 84.32 如图5所示,上方浅色曲线为多级异构并行模式实现后的 加速比,下方深色曲线为众核并行算法的加速,从图中可以看 到,多级并行的实现对加速比的提高有很明显的作用。 lzu L00 舯 蔷60 异 40 20 n 0 20 40 60 8O 100 120 140 进程数 l+众核并行算法加速比+多级异构并行模式加速比 l 图5 多级异构并行算法实现前后加速比对比 为了验证多级并行方式对MPI扩展性能的提高,实验进行 了大规模MPI并行测试,图6中给出了3级并行模式实现后 128—1 024进程的核心计算迭代500步的加速比测试结果。 图6的曲线显示大规模运行时,多级并行异构算法的MPI 扩展性很好,因此,多级并行的实现对课题的实际应用有极大的 帮助。 图6三级异构并行算法128—1024进程加速比 5 结语 本文以三维声波正演算法为基础,基于某众核处理器计算 势[J].高性能计算技术,2007(184):1—6. [3]谢向辉,胡苏太,李宏亮.多核处理器及其对系统结构设计的影响 [J].计算机科学与探索,2008,2(6):641—650. [4]陈芳园,张冬松,王志英.异构多核处理器体系结构设计研究[J]. 计算机工程与科学,2011,33(12):27—35. [5]莫则尧,刘兴平,廖振民.应用程序并行与优化关键技术研究[J]. 数值计算与计算机应用,2002(1):31—33. (上接第255页) 3.3 Profiling应用 Profiling是CK810处理器内部的功能单元,用来统计从开 始pc到结束pc之间处理器的各项数据,包括总指令数、load store指令数、跳转预测、系统调用数目及TLB miss数等。 新增功能单元,内核需要做一定的改动才能实现其运行。 如2.2节介绍,新增的寄存器在软件方面保存在thread—struct数 据结构中,这样便于数据的读取与存放,进程切换与复制需要保 存profiling协处理器硬件上下文。 实现proifling功能,在已有的系统调用末尾增加了两个新 的系统调用(344与345号syscal1)——csky_p皿』堍实现功能: 设置触发使能位,开始与停止Pc地址,让profiling启动计数; cskyprfl—read实现功能:读取proifling协处理器的信息,即从 current线程里读取寄存器的信息存放到结构体prfl中供用户使 用。用户通过内嵌汇编把相应系统调用号写入R7寄存器就能 调用该系统调用实现proifling的功能。 4 结语 随着Linux的不断成熟,势必被越来越广泛地应用于嵌入 式领域。本文从体系结构角度阐述了Linux内核移植及应用, 更多驱动程序的开发及平台的推广应用将是下一步工作。 参考文献 [1]杭州中天微系统有限公司.C-SKY CPU ABI Standards Manual[M].浙 江.2012. [2]Ci Weuyan,Chen Xudi,Cai Suhua,et la,Methods nad Skills on Transplan— ting Linux to ARM¥3C2410[C]//International Conference on Computer Engineering and Technology(ICCET 2010)2nd,Chengdu,0210,4. [3]任桥伟.Linux内核之道[M].北京:人民邮电出版社,2010. [4]Robe ̄Love.Linux kernel Development[M].3版.陈莉君,康华, 译.北京:机械工业出版社,2010. [5]刘文峰,李程远,李善平.嵌入式Linux操作系统的研究[J].浙江 大学学报:工学版,2004(4). [6]韦东山.嵌入式Linux应用开发完全手册[M].、北京:人民邮电出 版社,2008. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务