CN113672235A - 射线水声传播模型的多核并行方法 - Google Patents
射线水声传播模型的多核并行方法 Download PDFInfo
- Publication number
- CN113672235A CN113672235A CN202110983364.6A CN202110983364A CN113672235A CN 113672235 A CN113672235 A CN 113672235A CN 202110983364 A CN202110983364 A CN 202110983364A CN 113672235 A CN113672235 A CN 113672235A
- Authority
- CN
- China
- Prior art keywords
- ray
- model
- parallel
- core
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
Abstract
本发明属于高性能计算与计算海洋声学交叉技术领域,尤其涉及射线水声传播模型的多核并行方法。通过性能分析工具分析射线水声模型的热点区域,针对射线水声模型的热点函数开展并行性分析,并设计多核并行策略,采用OpenMP编程模型实现射线水声模型的多核并行;本发明构建了射线水声传播模型的并行计算框架,有效提高射线水声传播声场计算的效率,面向多核CPU计算平台,针对典型海洋环境的声场计算,取得了60%以上的并行效率;为声呐性能预报、水下目标定位以及海洋环境参数反演等提供快速的声场计算模型。
Description
技术领域
本发明属于高性能计算与计算海洋声学交叉技术领域,尤其涉及射线水声传播模型的多核并行方法。
背景技术
水声传播模型是对声音在海洋中传播规律的建模,当前主要的水声传播模型有简正波模型、抛物模型以及射线模型等,这些模型中,射线模型在某些情况下具有更加明显的优势,比如浅海环境下,当声源处于高频时,射线模型具有很好的适用性,尤其是深海条件下,无论是高频还是低频声源,射线模型都具有很好的适配性。然而随着声场计算海域范围的增大,以及射线数的增加,射线水声模型中声场计算需求呈线性增加,因此,射线水声模型的计算效率问题成为该模型在大规模声场计算应用中的瓶颈。随着计算机处理器向多核CPU发展,以及超级计算机硬件体系结构的飞速发展,都为射线水声模型的高效计算奠定了硬件基础。
发明内容
本发明创造的目的在于,提供射线水声传播模型的多核并行方法,该方法构建射线水声传播模型计算的多核并行框架,能够有效提高射线水声传播声场计算的效率,为声呐性能预报、水下目标定位以及海洋环境参数反演等提供快速的声场计算模型。
为实现上述目的,本发明创造采用如下技术方案。
一种射线水声传播模型的多核并行方法,包括如下步骤:
步骤1,采用性能分析工具对射线水声模型串行代码进行分析,寻找射线水声模型串行计算中的热点函数,根据热点函数占总执行时间比例,利用并行理论,对并行加速比进行评估分析;
步骤2,对射线模型热点函数开展并行性分析,面向多核CPU计算架构,设计多核粗粒度并行策略;
步骤3,针对射线水声模型热点函数,采用OpenMP并行编程模型实现射线水声模型的多核并行。
对前述射线水声传播模型的多核并行方法的具体实施方案,所述步骤1具体包括:
1A、选择开源的性能分析工具gprof,对射线水声模型串行代码进行编译,设置-pg的编译选项,选取某个水声场计算算例,运行射线水声模型,通过gprof搜集性能数据;
1B、根据gprof性能分析工具分析结果,统计各个函数的执行时间信息,聚焦热点函数,所述热点函数是指执行时间占主要的函数;
对前述射线水声传播模型的多核并行方法的具体实施方案,所述步骤2具体包括:
2A.根据上一步骤并行性分析,结合采用多核并行方法,设计粗粒度多核并行策略,包括将并行应用在射线的循环层,每个线程负责相同数量射线的处理,不同线程之间并行执行,线程内的射线串行地被处理。
对前述射线水声传播模型的多核并行方法的进一步改进或具体实施方案,步骤3具体步骤包括:
3A.分析并行区域中使用的变量的属性,确定各变量是私有属性还是共享属性,在编译指导语句中注明共享变量以及私有变量;
3B.对于声场的计算,将申请一个共享数组用于保存最终的声场结果,以及为每一个线程申请一个数组用于保存各线程计算的声场结果,当所有线程完成声场计算后,通过主线程将所有线程计算的结果归约到共享数组中。
对前述射线水声传播模型的多核并行方法的进一步改进或具体实施方案,步骤3A中,对于变量属性的定义基于如下步骤:
1、对于在射线传播模型的串行实现中的全局共享变量或者数组,若其对在并行执行模式下会对结果产生错误影响,则将其申明为私有变量或数组;
2、射线模型中的Beam数据结构的Nstep成员变量,需要将其由全局共享变量申明为私有变量,该变量主要表示射线追踪过程的步数;
3、用于存储射线轨迹中每个点信息的数据结构ray2DPt作为局部的私有变量核数组来处理;
4、用于保存一条射线内所有的点信息的数组ray2D作为局部的私有变量核数组来处理。
本发明提供了射线水声传播模型的多核并行方法,其有益效果在于:
1、实现了射线水声传播模型多核并行方案;
2、采用OpenMP并行编程模型,通过添加编译指导语句,最大限度的保持原来串行代码的框架,实现射线水声传播模型的多核并行;
3、针对多个海洋环境下的声场计算场景,在多核硬件平台下,射线水声传播模型的多核并行执行效率达到60%以上。
附图说明
图1是本发明实施例的总体流程图;
图2是本发明实施例中射线模型在三个算例中声场计算执行时间占比统计;
图3是本发明实施例中射线模型的OpenMP并行实现伪代码流程;
图4是本发明实施例中射线模型在三个算例下的并行加速比;
图5是本发明实施例中射线模型在三个算例下的并行效率;
图6是本发明实施例中Dickins算例利用射线模型计算的声场结果图;
图7是本发明实施例中Munk算例利用射线模型计算的声场结果图;
图8是本发明实施例中wedge算例利用射线模型计算的声场结果图;
具体实施方式
以下结合具体实施例对本发明创造作详细说明。
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供射线水声传播模型的多核并行方法。参考图1,为本发明提供的关于射线水声传播模型多核并行方法的总体流程图,具体包括以下步骤:
步骤1,采用性能分析工具对射线水声模型串行代码进行分析,寻找射线水声模型串行计算中的热点函数,根据热点函数占总执行时间比例,利用并行理论,对并行加速比进行评估分析,具体包括如下步骤:
1A、采用开源的性能分析工具gprof,对射线水声模型串行代码进行编译,设置-pg的编译选项,选取某个水声计算算例,运行射线水声模型,程序运行结束后,会生成一个记录程序运行的性能、调用关系等信息的数据文件gmon.out,通过gproftest.exe gmon.out命令可以输出程序的性能数据,其中test.exe是射线模型串行的可执行文件;
本步骤主要是搜集水声模型串行代码运行的性能数据,需要为程序设定一个输入,输入就是具体的某个算例,在具体实施过程中选择哪个算例对程序运行的性能结论影响不大;优先选取某个经典水声计算算例比如楔形海底算例。
1B、根据gprof性能分析工具分析结果,统计各个函数的执行时间信息,聚焦热点函数,即执行时间占主要的函数,图2为Munk算例、wedge算例以及Dickins算例射线模型执行中,声场计算部分执行时间占比情况;
步骤2,针对射线模型热点函数开展并行性分析,面向多核CPU计算架构,设计多核粗粒度并行策略;具体而言,射线模型中的核心计算是针对每条射线相关计算的一个循环,循环内包含的计算是射线轨迹追踪以及射线周围声场的计算,最外层循环依次处理不同的射线束,不同射线之间的射线追踪相互独立,每条射线周围声场的计算也是相互独立的,存在很好的并行性;具体实施步骤,
2A、根据上一步骤并行性分析,结合拟采用的多核并行方法,设计了粗粒度多核并行策略,主要是将并行应用在射线的循环层,每个线程负责相同数量射线的处理,不同线程之间并行的执行,线程内的射线还是串行地被处理。
步骤3,针对射线水声模型热点函数,基于步骤2中的并行性分析和并行策略设计,采用OpenMP并行编程模型实现射线水声模型的多核并行。
基于上述并行性分析和并行策略设计,本专利发明针对射线水声传播模型热点函数,包括射线追踪和声场计算,采用OpenMP多核并行编程模型,通过在串行代码中添加相关的编译指导语句实现射线水声模型核心计算的并行,具体步骤包括:
3A.正确分析并行区域中使用的变量的属性,确定各变量是私有属性还是共享属性,并在编译指导语句中注明共享变量以及私有变量。
在射线传播模型的串行实现中,有一些全局的数据结构,比如Beam数据结构中的Nsteps成员变量,在串行执行模式中作为全局变量对结果不会产生影响,然而在并行执行模式下,该变量就不能作为全局共享变量了,需要将其申明为私有变量。此外,还有用于存储射线轨迹中每个点信息的数据结构ray2DPt,该结构用来保存一条射线轨迹中的某个点的相关信息,包含该点所在的空间坐标,在该点的声传播速度,声源传播到该点的相位以及振幅等信息,而ray2D是包含MaxN的一个数组,用来保存一条射线内所有的点信息。在射线模型的串行实现中,ray2DPt及ray2D是作为全局的变量和数组的,然而在并行执行模式中,它们同样需要作为局部的线程私有变量和数组来处理,才能保证并行结果的正确性;具体而言:
1、对于在射线传播模型的串行实现中的全局共享变量或者数组,若其对在并行执行模式下会对结果产生错误影响,则将其申明为私有变量或数组;
2、通过分析,射线模型中的Beam数据结构的Nstep成员变量,需要将其由全局共享变量申明为私有变量,该变量主要表示射线追踪过程的步数。此外,用于存储射线轨迹中每个点信息的数据结构ray2DPt,具体包含该点所在的空间坐标,在该点的声传播速度,声源传播到该点的相位以及振幅信息,而保存一条射线内所有的点信息是通过一个大小为MaxN的数组ray2D来保存的,ray2DPt及ray2D将作为局部的私有变量核数组来处理。
3B.在多核并行代码实现中,创建一个全局共享的三维数组U_shared(:,:,:),三维数组的第三维信息对应各个线程,意味着每个线程独自使用部分2维数组空间,用来保存每个线程各自计算出来的声场信息,在所有线程计算完后,每个线程再将各自计算出来的声场累加到一个共享的二维数组U中,U最后的结果就是所有射线对二维空间产生的声场。具体伪代码如图3所示。
由图中,对射线水声模型多核并行化之后,选择Dickins、Munk以及wedge三个算例分别进行性能测试,图4展示了分别采用1、2、4、8个核所取得的加速比,结果表明,随着CPU核数的增加,三个算例都取得了明显的加速效果,图5进一步将加速比转化为并行效率,当采用的CPU核数达到8个时,三个算例都超过了60%的并行效率。图6~8分别是这三个算例采用射线水声模型的并行化程序运行的声场结果图,与串行计算的声场结果保持一致。
由此,本申请在实现了射线水声传播模型多核并行方案的基础上,采用OpenMP并行编程模型,通过添加编译指导语句,最大限度的保持原来串行代码的框架,实现射线水声传播模型的多核并行,且针对多个海洋环境下的声场计算场景,在多核硬件平台下,射线水声传播模型的多核并行执行效率达到60%以上。
最后应当说明的是,以上实施例仅用以说明本申请的技术方案,而非对本申请保护范围的限制,尽管参照实施例对本申请作了详细地说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或者等同替换,而不脱离本申请技术方案的实质和范围。
Claims (5)
1.一种射线水声传播模型的多核并行方法,其特征在于,包括如下步骤:
步骤1,采用性能分析工具对射线水声模型串行代码进行分析,寻找射线水声模型串行计算中的热点函数,根据热点函数占总执行时间比例,利用并行理论,对并行加速比进行评估分析;
步骤2,对射线模型热点函数开展并行性分析,面向多核CPU计算架构,设计多核粗粒度并行策略;
步骤3,针对射线水声模型热点函数,采用OpenMP并行编程模型实现射线水声模型的多核并行。
3.根据权利要求1所述射线水声传播模型的多核并行方法,其特征在于,所述步骤2具体包括:
2A.根据上一步骤并行性分析,结合采用多核并行方法,设计粗粒度多核并行策略,包括将并行应用在射线的循环层,每个线程负责相同数量射线的处理,不同线程之间并行执行,线程内的射线串行地被处理。
4.根据权利要求1所述射线水声传播模型的多核并行方法,其特征在于,步骤3具体步骤包括:
3A.分析并行区域中使用的变量的属性,确定各变量是私有属性还是共享属性,在编译指导语句中注明共享变量以及私有变量;
3B.对于声场的计算,将申请一个共享数组用于保存最终的声场结果,以及为每一个线程申请一个数组用于保存各线程计算的声场结果,当所有线程完成声场计算后,通过主线程将所有线程计算的结果归约到共享数组中。
5.根据权利要求4所述射线水声传播模型的多核并行方法,其特征在于,步骤3A中,对于变量属性的定义基于如下步骤:
1)、对于在射线传播模型的串行实现中的全局共享变量或者数组,若其对在并行执行模式下会对结果产生错误影响,则将其申明为私有变量或数组;
2)、射线模型中的Beam数据结构的Nstep成员变量,需要将其由全局共享变量申明为私有变量;
3)、用于存储射线轨迹中每个点信息的数据结构ray2DPt作为局部的私有变量核数组来处理;
4)、用于保存一条射线内所有的点信息的数组ray2D作为局部的私有变量核数组来处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110983364.6A CN113672235A (zh) | 2021-08-25 | 2021-08-25 | 射线水声传播模型的多核并行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110983364.6A CN113672235A (zh) | 2021-08-25 | 2021-08-25 | 射线水声传播模型的多核并行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113672235A true CN113672235A (zh) | 2021-11-19 |
Family
ID=78546381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110983364.6A Pending CN113672235A (zh) | 2021-08-25 | 2021-08-25 | 射线水声传播模型的多核并行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672235A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN107015852A (zh) * | 2016-06-15 | 2017-08-04 | 珠江水利委员会珠江水利科学研究院 | 一种大规模梯级水电站群多核并行优化调度方法 |
CN112783511A (zh) * | 2021-02-05 | 2021-05-11 | 成都信息工程大学 | 一种栅元少群参数计算模块程序的优化方法、系统、终端 |
-
2021
- 2021-08-25 CN CN202110983364.6A patent/CN113672235A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049245A (zh) * | 2012-10-25 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种基于cpu多核平台的软件性能优化方法 |
CN107015852A (zh) * | 2016-06-15 | 2017-08-04 | 珠江水利委员会珠江水利科学研究院 | 一种大规模梯级水电站群多核并行优化调度方法 |
CN112783511A (zh) * | 2021-02-05 | 2021-05-11 | 成都信息工程大学 | 一种栅元少群参数计算模块程序的优化方法、系统、终端 |
Non-Patent Citations (5)
Title |
---|
ZIJIE ZHU 等: ""Parallel optimization of three-dimensional wedge-shaped underwater acoustic propagation based on MPI+OpenMP hybrid programming model"", 《 THE JOURNAL OF SUPERCOMPUTING 》 * |
徐闽: ""基于现代众核高性能计算平台的三维水下声场数值模拟研究"", 《中国优秀硕士学位论文全文数据库基础科学辑》 * |
王勇献;张理论;车永刚;徐传福;刘巍;程兴华;: "高阶精度CFD应用在天河2系统上的异构并行模拟与性能优化", 计算机研究与发展, no. 04 * |
王新 等: ""众核和多核平台上楔形海底水声传播的并行优化和性能分析"", 《中国西部声学学术交流会议》 * |
范培勤;刘晓妍;过武宏;崔宝龙;: "WKBZ简正波模型混合并行计算方法研究", 计算机工程与科学, no. 03 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sun et al. | Hetero-mark, a benchmark suite for CPU-GPU collaborative computing | |
Li et al. | A note on auto-tuning GEMM for GPUs | |
Grass et al. | MUSA: a multi-level simulation approach for next-generation HPC machines | |
Valero-Lara et al. | A fast solver for large tridiagonal systems on multi-core processors (lass library) | |
Volokitin et al. | High performance implementation of Boris particle pusher on DPC++. A first look at oneAPI | |
Meredith et al. | A distributed data-parallel framework for analysis and visualization algorithm development | |
Abdelaal et al. | Tile size selection of affine programs for GPGPUs using polyhedral cross-compilation | |
Xu et al. | Loop interchange and tiling for multi-dimensional loops to minimize write operations on NVMs | |
Pöppl et al. | SWE-X10: Simulating shallow water waves with lazy activation of patches using ActorX10 | |
Pereira et al. | Extending OpenACC for efficient stencil code generation and execution by skeleton frameworks | |
CN113672235A (zh) | 射线水声传播模型的多核并行方法 | |
Jo et al. | Collaborative processing of data-intensive algorithms with CPU, intelligent SSD, and GPU | |
Saussard et al. | Optimal performance prediction of ADAS algorithms on embedded parallel architectures | |
Li et al. | Parallel optimization of the crystal-KMC on tianhe-2 | |
Du et al. | Scientific computing applications on the imagine stream processor | |
JP2009301453A (ja) | 分散メモリ型マルチプロセッサシステム、マスク付き逆シフト通信方法及びプログラム | |
Kao et al. | Runtime techniques for efficient ray-tracing on heterogeneous systems | |
Zheng et al. | Remote sensing data processing acceleration based on multi-core processors | |
Wang et al. | Egpuip: An embedded gpu accelerated library for image processing | |
CN114041116A (zh) | 数据移动任务优化的方法和装置 | |
Fujimoto et al. | Parallelizing a genetic operator for gpus | |
CN113687948B (zh) | 面向多核cpu集群系统的水声传播模型混合并行方法 | |
Han et al. | Genetic algorithm based parallelization planning for legacy real-time embedded programs | |
Fujika et al. | Parallelization of Automatic Tuning for Hyperparameter Optimization of Pedestrian Route Prediction Applications using Machine Learning | |
Zhu et al. | Parallel optimization of underwater acoustic models: A survey |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |