一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

射线水声传播模型的多核并行方法与流程

2021-11-22 17:44:00 来源:中国专利 TAG:


1.本发明属于高性能计算与计算海洋声学交叉技术领域,尤其涉及射线水声传播模型的多核并行方法。


背景技术:

2.水声传播模型是对声音在海洋中传播规律的建模,当前主要的水声传播模型有简正波模型、抛物模型以及射线模型等,这些模型中,射线模型在某些情况下具有更加明显的优势,比如浅海环境下,当声源处于高频时,射线模型具有很好的适用性,尤其是深海条件下,无论是高频还是低频声源,射线模型都具有很好的适配性。然而随着声场计算海域范围的增大,以及射线数的增加,射线水声模型中声场计算需求呈线性增加,因此,射线水声模型的计算效率问题成为该模型在大规模声场计算应用中的瓶颈。随着计算机处理器向多核cpu发展,以及超级计算机硬件体系结构的飞速发展,都为射线水声模型的高效计算奠定了硬件基础。


技术实现要素:

3.本发明创造的目的在于,提供射线水声传播模型的多核并行方法,该方法构建射线水声传播模型计算的多核并行框架,能够有效提高射线水声传播声场计算的效率,为声呐性能预报、水下目标定位以及海洋环境参数反演等提供快速的声场计算模型。
4.为实现上述目的,本发明创造采用如下技术方案。
5.一种射线水声传播模型的多核并行方法,包括如下步骤:
6.步骤1,采用性能分析工具对射线水声模型串行代码进行分析,寻找射线水声模型串行计算中的热点函数,根据热点函数占总执行时间比例,利用并行理论,对并行加速比进行评估分析;
7.步骤2,对射线模型热点函数开展并行性分析,面向多核cpu计算架构,设计多核粗粒度并行策略;
8.步骤3,针对射线水声模型热点函数,采用openmp并行编程模型实现射线水声模型的多核并行。
9.对前述射线水声传播模型的多核并行方法的具体实施方案,所述步骤1具体包括:
10.1a、选择开源的性能分析工具gprof,对射线水声模型串行代码进行编译,设置

pg的编译选项,选取某个水声场计算算例,运行射线水声模型,通过gprof搜集性能数据;
11.1b、根据gprof性能分析工具分析结果,统计各个函数的执行时间信息,聚焦热点函数,所述热点函数是指执行时间占主要的函数;
12.1c、假设射线水声传播模型串行执行的总时间为t,热点函数执行时间为b,则非热点函数执行时间为t

b,假设使用n个cpu对热点函数部分进行并行,则可预估射线水声传播
模型的理想加速比:
13.对前述射线水声传播模型的多核并行方法的具体实施方案,所述步骤2具体包括:
14.2a.根据上一步骤并行性分析,结合采用多核并行方法,设计粗粒度多核并行策略,包括将并行应用在射线的循环层,每个线程负责相同数量射线的处理,不同线程之间并行执行,线程内的射线串行地被处理。
15.对前述射线水声传播模型的多核并行方法的进一步改进或具体实施方案,步骤3具体步骤包括:
16.3a.分析并行区域中使用的变量的属性,确定各变量是私有属性还是共享属性,在编译指导语句中注明共享变量以及私有变量;
17.3b.对于声场的计算,将申请一个共享数组用于保存最终的声场结果,以及为每一个线程申请一个数组用于保存各线程计算的声场结果,当所有线程完成声场计算后,通过主线程将所有线程计算的结果归约到共享数组中。
18.对前述射线水声传播模型的多核并行方法的进一步改进或具体实施方案,步骤3a中,对于变量属性的定义基于如下步骤:
19.1、对于在射线传播模型的串行实现中的全局共享变量或者数组,若其对在并行执行模式下会对结果产生错误影响,则将其申明为私有变量或数组;
20.2、射线模型中的beam数据结构的nstep成员变量,需要将其由全局共享变量申明为私有变量,该变量主要表示射线追踪过程的步数;
21.3、用于存储射线轨迹中每个点信息的数据结构ray2dpt作为局部的私有变量核数组来处理;
22.4、用于保存一条射线内所有的点信息的数组ray2d作为局部的私有变量核数组来处理。
23.本发明提供了射线水声传播模型的多核并行方法,其有益效果在于:
24.1、实现了射线水声传播模型多核并行方案;
25.2、采用openmp并行编程模型,通过添加编译指导语句,最大限度的保持原来串行代码的框架,实现射线水声传播模型的多核并行;
26.3、针对多个海洋环境下的声场计算场景,在多核硬件平台下,射线水声传播模型的多核并行执行效率达到60%以上。
附图说明
27.图1是本发明实施例的总体流程图;
28.图2是本发明实施例中射线模型在三个算例中声场计算执行时间占比统计;
29.图3是本发明实施例中射线模型的openmp并行实现伪代码流程;
30.图4是本发明实施例中射线模型在三个算例下的并行加速比;
31.图5是本发明实施例中射线模型在三个算例下的并行效率;
32.图6是本发明实施例中dickins算例利用射线模型计算的声场结果图;
33.图7是本发明实施例中munk算例利用射线模型计算的声场结果图;
34.图8是本发明实施例中wedge算例利用射线模型计算的声场结果图;
具体实施方式
35.以下结合具体实施例对本发明创造作详细说明。
36.为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
37.本发明提供射线水声传播模型的多核并行方法。参考图1,为本发明提供的关于射线水声传播模型多核并行方法的总体流程图,具体包括以下步骤:
38.步骤1,采用性能分析工具对射线水声模型串行代码进行分析,寻找射线水声模型串行计算中的热点函数,根据热点函数占总执行时间比例,利用并行理论,对并行加速比进行评估分析,具体包括如下步骤:
39.1a、采用开源的性能分析工具gprof,对射线水声模型串行代码进行编译,设置

pg的编译选项,选取某个水声计算算例,运行射线水声模型,程序运行结束后,会生成一个记录程序运行的性能、调用关系等信息的数据文件gmon.out,通过gproftest.exe gmon.out命令可以输出程序的性能数据,其中test.exe是射线模型串行的可执行文件;
40.本步骤主要是搜集水声模型串行代码运行的性能数据,需要为程序设定一个输入,输入就是具体的某个算例,在具体实施过程中选择哪个算例对程序运行的性能结论影响不大;优先选取某个经典水声计算算例比如楔形海底算例。
41.1b、根据gprof性能分析工具分析结果,统计各个函数的执行时间信息,聚焦热点函数,即执行时间占主要的函数,图2为munk算例、wedge算例以及dickins算例射线模型执行中,声场计算部分执行时间占比情况;
42.1c、假设射线水声传播模型串行执行的总时间为t,热点函数执行时间为b,则非热点函数执行时间为t

b,假设使用n个cpu对热点函数部分进行并行,则可预估射线水声传播模型的理想加速比:
43.步骤2,针对射线模型热点函数开展并行性分析,面向多核cpu计算架构,设计多核粗粒度并行策略;具体而言,射线模型中的核心计算是针对每条射线相关计算的一个循环,循环内包含的计算是射线轨迹追踪以及射线周围声场的计算,最外层循环依次处理不同的射线束,不同射线之间的射线追踪相互独立,每条射线周围声场的计算也是相互独立的,存在很好的并行性;具体实施步骤,
44.2a、根据上一步骤并行性分析,结合拟采用的多核并行方法,设计了粗粒度多核并行策略,主要是将并行应用在射线的循环层,每个线程负责相同数量射线的处理,不同线程之间并行的执行,线程内的射线还是串行地被处理。
45.步骤3,针对射线水声模型热点函数,基于步骤2中的并行性分析和并行策略设计,采用openmp并行编程模型实现射线水声模型的多核并行。
46.基于上述并行性分析和并行策略设计,本专利发明针对射线水声传播模型热点函数,包括射线追踪和声场计算,采用openmp多核并行编程模型,通过在串行代码中添加相关
的编译指导语句实现射线水声模型核心计算的并行,具体步骤包括:
47.3a.正确分析并行区域中使用的变量的属性,确定各变量是私有属性还是共享属性,并在编译指导语句中注明共享变量以及私有变量。
48.在射线传播模型的串行实现中,有一些全局的数据结构,比如beam数据结构中的nsteps成员变量,在串行执行模式中作为全局变量对结果不会产生影响,然而在并行执行模式下,该变量就不能作为全局共享变量了,需要将其申明为私有变量。此外,还有用于存储射线轨迹中每个点信息的数据结构ray2dpt,该结构用来保存一条射线轨迹中的某个点的相关信息,包含该点所在的空间坐标,在该点的声传播速度,声源传播到该点的相位以及振幅等信息,而ray2d是包含maxn的一个数组,用来保存一条射线内所有的点信息。在射线模型的串行实现中,ray2dpt及ray2d是作为全局的变量和数组的,然而在并行执行模式中,它们同样需要作为局部的线程私有变量和数组来处理,才能保证并行结果的正确性;具体而言:
49.1、对于在射线传播模型的串行实现中的全局共享变量或者数组,若其对在并行执行模式下会对结果产生错误影响,则将其申明为私有变量或数组;
50.2、通过分析,射线模型中的beam数据结构的nstep成员变量,需要将其由全局共享变量申明为私有变量,该变量主要表示射线追踪过程的步数。此外,用于存储射线轨迹中每个点信息的数据结构ray2dpt,具体包含该点所在的空间坐标,在该点的声传播速度,声源传播到该点的相位以及振幅信息,而保存一条射线内所有的点信息是通过一个大小为maxn的数组ray2d来保存的,ray2dpt及ray2d将作为局部的私有变量核数组来处理。
51.3b.在多核并行代码实现中,创建一个全局共享的三维数组u_shared(:,:,:),三维数组的第三维信息对应各个线程,意味着每个线程独自使用部分2维数组空间,用来保存每个线程各自计算出来的声场信息,在所有线程计算完后,每个线程再将各自计算出来的声场累加到一个共享的二维数组u中,u最后的结果就是所有射线对二维空间产生的声场。具体伪代码如图3所示。
52.由图中,对射线水声模型多核并行化之后,选择dickins、munk以及wedge三个算例分别进行性能测试,图4展示了分别采用1、2、4、8个核所取得的加速比,结果表明,随着cpu核数的增加,三个算例都取得了明显的加速效果,图5进一步将加速比转化为并行效率,当采用的cpu核数达到8个时,三个算例都超过了60%的并行效率。图6~8分别是这三个算例采用射线水声模型的并行化程序运行的声场结果图,与串行计算的声场结果保持一致。
53.由此,本技术在实现了射线水声传播模型多核并行方案的基础上,采用openmp并行编程模型,通过添加编译指导语句,最大限度的保持原来串行代码的框架,实现射线水声传播模型的多核并行,且针对多个海洋环境下的声场计算场景,在多核硬件平台下,射线水声传播模型的多核并行执行效率达到60%以上。
54.最后应当说明的是,以上实施例仅用以说明本技术的技术方案,而非对本技术保护范围的限制,尽管参照实施例对本技术作了详细地说明,本领域的普通技术人员应当理解,可以对本技术的技术方案进行修改或者等同替换,而不脱离本技术技术方案的实质和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献