CN116244078B - 基于多线程和simd的水下声场快速计算方法 - Google Patents
基于多线程和simd的水下声场快速计算方法 Download PDFInfo
- Publication number
- CN116244078B CN116244078B CN202310165860.XA CN202310165860A CN116244078B CN 116244078 B CN116244078 B CN 116244078B CN 202310165860 A CN202310165860 A CN 202310165860A CN 116244078 B CN116244078 B CN 116244078B
- Authority
- CN
- China
- Prior art keywords
- sound
- rays
- threads
- calculation
- ray
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 claims abstract description 57
- 239000011159 matrix material Substances 0.000 claims abstract description 20
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 27
- 238000005457 optimization Methods 0.000 claims description 5
- 238000012876 topography Methods 0.000 claims description 4
- 230000004931 aggregating effect Effects 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 230000001133 acceleration Effects 0.000 abstract description 5
- 238000005192 partition Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- JEGUKCSWCFPDGT-UHFFFAOYSA-N h2o hydrate Chemical compound O.O JEGUKCSWCFPDGT-UHFFFAOYSA-N 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A90/00—Technologies having an indirect contribution to adaptation to climate change
- Y02A90/30—Assessment of water resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
Abstract
本发明提出了一种基于多线程和SIMD的水下声场快速计算方法,涉及水声领域。该方法包括:利用BELLHOP声场计算的参数计算声线数量;利用起点坐标等信息参数界定声线的穿越点和声线轨迹;按线程和声线数量为声线分区,采用线程并行思想,将各分区分配到各线程中分别迭代,使用线程并行方法来调度多个内核同时开展计算;将结果汇总到各自的声束区间中,返回单线程汇总结果,最后合并多线程计算结果,即合并所有声线。本发明中使用基于多线程和SIMD的水下声场快速计算方法对单声线矩阵运算和多声线迭代进行了对应的优化,提高计算效率,得到较高的加速比,显著提高运算速度,降低计算时间与内存。
Description
技术领域
本发明涉及水声领域,具体而言,涉及一种基于多线程和SIMD的水下声场快速计算方法。
背景技术
在水下作战过程中,为充分发挥海战场作战效能,需要根据海洋水文环境数据近实时的实现水下环境中声场预报计算;快速准确的水下声场计算方法为海战场态势估计、方案制定发挥了很重要的作用。
传统的声场计算模式对声线进行迭代采用的是单线程串行迭代,每次计算一条声线,迭代n次后终止。然而这样迭代的计算效率很低,内存需求大。目前相关学者提出使用OpenMP接口显式地实现共享内存、多线程并行计算模式。但是并没有方法结合单指令多数据架构使得计算速率更高。传统的声场计算采用串行架构,使用for循环进行大量计算耗时又消耗内存。在这种模式上,在某个时钟周期内,按照执行次序,只有一条指令流且只能处理一个数据流。但是数据处理并不都是按照一定的次序处理的,声场计算时数据量较大,很多数据并没有执行次序的约束,需要被同时处理,即可以并发执行。数据并行的重点在于利用多核系统对数据进行分配,在这样的并行程序中也会有串行部分。
发明内容
本发明的目的在于提供一种基于多线程和SIMD的水下声场快速计算方法,其能够设定初始步长,根据初始坐标点坐标等信息判断声线是否穿越水层边界和下边界,界定声线的穿越点和声线轨迹;按线程和声线数量为声线分区,采用线程并行思想,分别在各线程中进行迭代计算,使用线程并行方法来调度多个内核同时开展计算;在单线程下采用SIMD架构,将单条声线的矩阵计算分块实施,实现单指令多数据计算方法;单指令多数据的矩阵优化计算结果合并到主控单元中,再汇总到各自的声束区间中,返回单线程汇总结果,最后合并多线程计算结果,即合并所有声线得到最终的声场。本发明对单声线矩阵运算和多声线迭代进行了对应的优化,提高计算效率,得到较高的加速比,显著提高运算速度,降低计算时间与内存。
本发明的实施例是这样实现的:
本申请实施例提供一种基于多线程和SIMD的水下声场快速计算方法,其包括以下步骤:计算声线数量以及设定线程数量。根据线程数量和声线数量将声线分组以得到多个线程。同时计算所有线程内的声线以获得所有声线的轨迹且同时利用SIMD计算声束内单声线的矩阵。合并所有单线程的计算结果。
在本发明的一些实施例中,上述计算声线数量的步骤具体包括:基于BELLHOP声场计算模型,通过声线数量公式计算声线数量。上述声线数量公式为:
本发明的目的在于提供一种基于多线程和SIMD的水下声场快速计算方法,其能够设定初始步长,根据初始坐标点坐标等信息判断声线是否穿越水层边界和下边界,界定声线的穿越点和声线轨迹;按线程和声线数量为声线分区,采用线程并行思想,分别在各线程中进行迭代计算,使用线程并行方法来调度多个内核同时开展计算;在单线程下采用SIMD架构,将单条声线的矩阵计算分块实施,实现单指令多数据计算方法;单指令多数据的矩阵优化计算结果合并到主控单元中,再汇总到各自的声束区间中,返回单线程汇总结果,最后合并多线程计算结果,即合并所有声线得到最终的声场。本发明对单声线矩阵运算和多声线迭代进行了对应的优化,提高计算效率,得到较高的加速比,显著提高运算速度,降低计算时间与内存。
本发明的实施例是这样实现的:
本申请实施例提供一种基于多线程和SIMD的水下声场快速计算方法,其包括以下步骤:计算声线数量以及设定线程数量。根据线程数量和声线数量将声线分组以得到多个线程。同时计算所有线程内的声线以获得所有声线的轨迹且同时利用SIMD计算声束内单声线的矩阵。合并所有单线程的计算结果。
在本发明的一些实施例中,上述计算声线数量的步骤具体包括:基于BELLHOP声场计算模型,通过声线数量公式计算声线数量。上述声线数量公式为:
;
式中SUM是声线数量,为声波最大传播距离,/>是声波频率,/>为初始坐标点的声速。
在本发明的一些实施例中,上述根据线程数量和声线数量将声线分组以得到多个线程的步骤具体包括:判断声线是否越过水层边界及下边界,若越过,则筛除越过的部分,保留水中的部分。判断声线是否越过水层边界及下边界的方法包括:获取A1点的切向量,水层界面的法向量/>和海底遮挡地形的法向量/>,根据A1点的切向量/>,水层界面的法向量/>和海底遮挡地形的法向量/>得到A1点到水层界面和海底地形的距离/>和/>。若/>和/>任意值小于10-3米则认为声线越过水层边界及下边界;若未越过边界则继续计算下一个点,直至计算到An点确认该点越过边界点,完成一次迭代。设定线程数量为Q,计算SUM/Q后向上取整,记作N,将声线分为Q个声束,每个声束分配N条声线,将满足N条声线的声束分别分配至各个线程中,最后一个不足N条声线的声束单独分配一个线程,设定主线程为计算的第一个区间,其他线程依次处理其余的声束。
在本发明的一些实施例中,上述同时计算所有线程内的声线以获得所有声线的轨迹的步骤具体包括:计算各声线水中的部分的轨迹和伴随参数,具体为:基于高斯声束模型将声传播方程简化为声线方程和伴随方程:
;
式中,为声速;/>和/>表示柱坐标系下声线的坐标;/>为沿声线的弧长;/>为本征值。
采用一组伴随分量,/>来描述声线的曲率和宽度:
;
式中,为声场的二阶导数。
将上述基本方程设定初始条件后离散化,递推即可得到各声线的轨迹和伴随参数。声线迭代终点坐标为,声速为/>,切向量为/>,伴随量为/>和/>,终点坐标为和深度坐标/>。当声线始终没有越过水层边界及下边界则执行以下计算步骤:
声线迭代的终点坐标为:
;
式中,为声线的当前节点,/>为切线向量,/>为步长;
声线迭代终点的切向量为:
;
式中,为终点的切向量,/>为声速;
声线迭代终点的伴随量为:
;
;
式中,和/>为伴随量,/>为初始速度;
在本发明的一些实施例中,上述利用SIMD计算声束内单声线的矩阵的步骤具体包括:将坐标切向量、水层界面的法向量/>和海底界面的法向量/>写入到SSE寄存器中,将每一个点的计算聚合到同一个SIMD结构中,使用Packed指令对XMM寄存器中的DATA0~DATA1均进行计算,当对一整条声线进行计算时,首先设置主控单元MCU进行寄存器分配,使SSE寄存器的八个寄存器都加入运算,然后进行内存对齐,使用addps xmm0, xmm1 ; reg-reg指令以寄存器到寄存器方式进行定址,将多坐标点写入寄存器中并行计算,此时XMM0~XMM7同时计算,最后将结果传送回主控单元MCU,由MCU完成最后的判断并输出。
在本发明的一些实施例中,上述合并所有单线程的计算结果的步骤具体包括:基于单指令多数据的矩阵优化方法计算单线程中的多次迭代过程获得多次迭代的结果,并将结果汇总到各自的声束所在的线程中,合并各个线程的计算结果。
相对于现有技术,本发明的实施例至少具有如下优点或有益效果:
在单线程下采用SIMD架构,将单条声线的矩阵计算分块实施,实现单指令多数据计算方法;通过并行编程发挥多核优势,采用SIMD数据并行思想,对于声场计算采用线程并行方法来调度多个内核同时开展计算,同时利用数据并行方法让每个指令同时计算更多的数据,两者相结合有效提高了多核CPU的计算效率;通过对寄存器计算任务的合理分配,可以缩短声线计算时间;对每一次迭代都实行底层数据流再分配并行计算思想,通过合理分配缩短计算时间,能够得到较高的加速比。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明中声场计算模型BELLHOP多线程并行处理流程示意图;
图2为本发明中BELLHOP声场计算模型计算边界穿越点示意图;
图3为本发明中SSE寄存器示意图;
图4为本发明中单个点的点乘计算示意图;
图5为本发明中应用SIMD之后的多点并行计算示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。
实施例
本申请实施例提供的一种基于多线程和SIMD的水下声场快速计算方法,其包括以下步骤:
计算声线数量以及设定线程数量;
上述步骤中,首先设定单线程的数量为一个定值,利用BELLHOP声场计算的输入文件包含的参数计算声线数量;
根据线程数量和声线数量将声线分组以得到多个线程;
上述步骤中,根据设定的线程数量以及计算所得到的声线数量将声线划分为与线程数量相等的声束,将声束与线程一一对应,依次将声束分配至线程中,计首个线程为主线程,其余线程为分线程。
同时计算所有线程内的声线以获得所有声线的轨迹且同时利用SIMD计算声束内单声线的矩阵;
上述步骤中,采用线程并行思想,将各分区分配到各线程中分别迭代,使用线程并行方法来调度多个内核同时开展计算,即计算所有线程内的声线;并且在单线程下采用SIMD架构,将单条声线的矩阵计算分块实施,实现单指令多数据计算方法,提高运算速度。
合并所有单线程的计算结果。
上述步骤中,首先将单指令多数据计算结果合并,再将结果汇总到各自的声束区间中,汇总单线程的计算结果,最后合并多线程计算结果,即合并所有声线。
在本发明的一些实施例中,上述计算声线数量的步骤具体包括:
基于BELLHOP声场计算模型,通过声线数量公式计算声线数量;
上述声线数量公式为:
,
式中SUM是声线数量,为声波最大传播距离,/>是声波频率,/>为初始坐标点的声速。
上述步骤中,标准BELLHOP声场计算模型包括环境参数输入、声束初始参数设定、声线方程迭代求解以及声线能量累加过程,最终得到传播损失分布。利用BELLHOP声场计算的输入文件中包含的参数计算声线数量,输入参数包括:水中和海底声速和频率。
请参照图1,在本发明的一些实施例中,上述根据线程数量和声线数量将声线分组以得到多个线程的步骤具体包括:
判断声线是否越过水层边界及下边界,若越过,则筛除越过的部分,保留水中的部分;
判断声线是否越过水层边界及下边界的方法包括:
获取A1点的切向量,水层界面的法向量/>和海底遮挡地形的法向量/>;
根据A1点的切向量,水层界面的法向量/>和海底遮挡地形的法向量/>得到A1点到水层界面和海底地形的距离/>和/>;
若和/>任意值小于10-3米则认为声线越过水层边界及下边界;若未越过边界则继续计算下一个点,直至计算到An点确认该点越过边界点,完成一次迭代;
上述步骤中,处理声线穿越分层界面具体步骤是:首先将声线初始坐标点A1分为距离坐标和深度坐标/>,A1点声速是/>,伴随量为/>和/>,计算A1点的切向量/>,计算水层界面的法向量/>和海底遮挡地形的法向量/>,计算A1点到水层界面和海底地形的距离/>和/>,若/>和/>任意值小于10-3米,则认为声线接触到边界。若未越过边界则继续计算下一个点,直至计算到An点确认该点越过边界点,完成一次迭代。
若声线迭代起点十分接近层边界时,会出现步长很小的情况,导致系统认为为0,此时会导致声线迭代不再进行。为避免这种情况,应强制设定声线最小步长,而最小步长不能过小,按整数米为单位进行网格化分层,因此只要声线段的两端点纵坐标具有不同的整数部分,即可判定声线是否穿越层边界。
设定线程数量为Q;
计算SUM/Q后向上取整,记作N;
将声线分为Q个声束,每个声束分配N条声线;
将满足N条声线的声束分别分配至各个线程中,最后一个不足N条声线的声束单独分配一个线程;
设定主线程为计算的第一个区间,其他线程依次处理其余的声束。
BELLHOP声场计算模型计算边界穿越点示意图如图2所示。
在本发明的一些实施例中,上述同时计算所有线程内的声线以获得所有声线的轨迹的步骤具体包括:
计算各声线水中的部分的轨迹和伴随参数,具体为:
基于高斯声束模型将声传播方程简化为声线方程和伴随方程:
;
式中,为声速;/>和/>表示柱坐标系下声线的坐标;/>为沿声线的弧长,/>为本征值。
采用一组伴随分量,/>来描述声线的曲率和宽度:
;
式中,为声场的二阶导数。
将上述基本方程设定初始条件后离散化,递推即可得到各声线的轨迹和伴随参数;将上述方程离散化,即可得到声线计算的递推表达式,该表达式可以利用计算机进行实现,只要给定初始值,即可利用计算机通过反复迭代得到声场;声场计算模型BELLHOP软件正是基于该方法利用迭代方法得到最终的声场分布。(参见中国专利申请书CN109752086A)。
当声线始终没有越过水层边界及下边界则执行以下计算步骤:
声线迭代的终点坐标为:
;
式中,为声线的当前节点,/>为切线向量,/>为步长;
声线迭代终点的切向量为:
;
式中,为终点的切向量,/>为声速;
声线迭代终点的伴随量为:
;
;
式中,和/>为伴随量,/>为初始速度;
完成上述计算后进而完成单线程内的第n次声线迭代。
上述步骤中,当声线没有穿过分层界面就执行标准的BELLHOP声场计算步骤,即用初始点的切向量和半步长计算中间点,得到中间点的切向量后,再用整步长计算终点,得到声线终点及终点处状态,完成一次迭代。此步骤中会使用到龙格—库塔法,该计算方法为成熟的现有技术,此处不作过多赘述。
最终得到的声线迭代终点坐标为,声速为/>,切向量为/>,伴随量为/>和,终点坐标为/>和深度坐标/>。
那么多次迭代就要对声线方程采用并行化处理思想,将声线分组,分配到多个计算核心上进行计算,设定线程数量,以声线初射角度为起始,根据线程数量划分每个线程处理的声线数量,将线程设为一个主线程和多个分线程。
具体BELLHOP模型的线程分配、声线分组和声场合并过程如图1所示。
请参照图3、图4和图5,在本发明的一些实施例中,上述利用SIMD计算声束内单声线的矩阵的步骤具体包括:
将坐标切向量、水层界面的法向量/>和海底界面的法向量/>写入到SSE寄存器中;将每一个点的计算聚合到同一个SIMD结构中,使用Packed指令对XMM寄存器中的DATA0~DATA1均进行计算,当对一整条声线进行计算时,首先设置主控单元MCU进行寄存器分配,使SSE寄存器的八个寄存器都加入运算,然后进行内存对齐,使用addps xmm0, xmm1; reg-reg指令以寄存器到寄存器方式进行定址,将多坐标点写入寄存器中并行计算,此时XMM0~XMM7同时计算,最后将结果传送回主控单元MCU,由MCU完成最后的判断并输出。
上述步骤中,通过并行编程发挥多核优势,采用SIMD数据并行思想。对于声场计算采用线程并行方法来调度多个内核同时开展计算,同时利用数据并行方法让每个指令同时计算更多的数据,两者相结合有效提高了多核CPU的计算效率。
将某一线程下的某一声线迭代计算过程分解,利用SIMD复制多个操作数,并把它们打包到大型寄存器的一组指令集;使得核心只有一个指令流但可以处理多个不同的数据流;在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。
首先对输入的数据进行处理。输入数据包括点的坐标切向量,水水层界面的法向量/>和海底界面的法向量/>。使用Intel支持的SSE技术,SSE提供了8个寄存器XMM0~XMM7进行SIMD操作,具体的寄存器如图3所示。
将多数据写入到SSE寄存器中,将每一个点的计算聚合到同一个SIMD结构中,以点为例具体架构如图4所示。使用Packed指令对XMM寄存器中的DATA0~DATA3均进行计算;一个DATA又包括标记、指数位和尾数部分。当对一整条声线进行计算时,首先设置主控单元MCU进行寄存器分配,使SSE的八个寄存器都加入运算,然后进行内存对齐,使用addpsxmm0, xmm1 ; reg-reg指令以寄存器-寄存器方式进行定址;将多坐标点写入寄存器中并行计算,如图5所示。此时XMM0~XMM7同时计算,最后将结果传送回主控单元MCU,由MCU完成最后的判断并输出;通过对寄存器计算任务的合理分配,缩短声线计算时间。
在本发明的一些实施例中,上述合并所有单线程的计算结果的步骤具体包括:
基于单指令多数据的矩阵优化方法计算单线程中的多次迭代过程获得多次迭代的结果,并将结果汇总到各自的声束所在的线程中;
合并各个线程的计算结果。
上述步骤中,最后在声束能量累加步骤,沿用BELLHOP声场计算模型的相关计算步骤,该步骤计算每一声束对声场任一空间点的能量,非相干累加后得到声场传播损失分布,构成一个完整的声场计算模型。
综上所述,本申请实施例提供的一种基于多线程和SIMD的水下声场快速计算方法,其能够设定初始步长,根据初始坐标点坐标等信息判断声线是否穿越水层边界和下边界,界定声线的穿越点和声线轨迹;按线程和声线数量为声线分区,采用线程并行思想,分别在各线程中进行迭代计算,使用线程并行方法来调度多个内核同时开展计算;在单线程下采用SIMD架构,将单条声线的矩阵计算分块实施,实现单指令多数据计算方法;通过并行编程发挥多核优势,采用SIMD数据并行思想,对于声场计算采用线程并行方法来调度多个内核同时开展计算,同时利用数据并行方法让每个指令同时计算更多的数据,两者相结合有效提高了多核CPU的计算效率;通过对寄存器计算任务的合理分配,可以缩短声线计算时间;对每一次迭代都实行底层数据流再分配并行计算思想,通过合理分配缩短计算时间,能够得到较高的加速比。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (2)
1.一种基于多线程和SIMD的水下声场快速计算方法,其特征在于,包括以下步骤:
计算声线数量以及设定线程数量;
根据线程数量和声线数量将声线分组以得到多个线程;
同时计算所有线程内的声线以获得所有声线的轨迹且同时利用SIMD计算声束内单声线的矩阵;
合并所有单线程的计算结果;
其中,所述根据线程数量和声线数量将声线分组以得到多个线程的步骤具体包括:
判断声线是否越过水层边界及下边界,若越过,则筛除越过的部分,保留水中的部分;
判断声线是否越过水层边界及下边界的方法包括:
获取A1点的切向量水层界面的法向量/>和海底遮挡地形的法向量/>
根据A1点的切向量水层界面的法向量/>和海底遮挡地形的法向量/>得到A1点到水层界面和海底地形的距离hw(1)和hm(1);
若hw(1)和hm(1)任意值小于10-3米则认为声线越过水层边界及下边界;若未越过边界则继续计算下一个点,直至计算到An点确认该点越过边界点,完成一次迭代;
设定线程数量为Q;
计算SUM/Q后向上取整,记作N;SUM是声线数量;
将声线分为Q个声束,每个声束分配N条声线;
将满足N条声线的声束分别分配至各个线程中,最后一个不足N条声线的声束单独分配一个线程;
设定主线程为计算的第一个区间,其他线程依次处理其余的声束;
所述同时计算所有线程内的声线以获得所有声线的轨迹的步骤具体包括:
计算各声线水中的部分的轨迹和伴随参数,具体为:
基于高斯声束模型将声传播方程简化为声线方程和伴随方程:
式中,v为声速;r(s)和z(s)表示柱坐标系下声线的坐标;s为沿声线的弧长;
采用一组伴随分量p(s),q(s)来描述声线的曲率和宽度:
式中,vnn为声场的二阶导数;
将上述方程设定初始条件后离散化,递推即可得到各声线的轨迹和伴随参数;
声线迭代终点坐标为An,声速为vn,切向量为伴随量为qn和pn,终点坐标为An(1)和深度坐标An(2);
当声线始终没有越过水层边界及下边界则执行以下计算步骤:
声线迭代的终点坐标为:
An=An-1+η1•h2;
式中,An为声线的当前节点,η1为切线向量,h2为步长;
声线迭代终点的切向量为:
式中,η2为终点的切向量,v为声速;
声线迭代终点的伴随量为:
qn+1=qn+h2·v1·pn;
pn+1=pn;
式中,pn和qn为伴随量,v1为初始速度;
完成上述计算后进而完成单线程内的第n次声线迭代;
所述利用SIMD计算声束内单声线的矩阵的步骤具体包括:
将坐标切向量水层界面的法向量/>和海底界面的法向量/>写入到SSE寄存器中;将每一个点的计算聚合到同一个SIMD结构中,使用Packed指令对XMM寄存器中的DATA0~DATA1均进行计算,当对一整条声线进行计算时,首先设置主控单元p1进行寄存器分配,使SSE寄存器的八个寄存器都加入运算,然后进行内存对齐,使用addps xmm0,xmm1;reg-reg指令以寄存器到寄存器方式进行定址,将多坐标点写入寄存器中并行计算,此时XMM0~XMM7同时计算,最后将结果传送回主控单元p1,由p1完成最后的判断并输出;
所述合并所有单线程的计算结果的步骤具体包括:
基于单指令多数据的矩阵优化方法计算单线程中的多次迭代过程获得多次迭代的结果,并将结果汇总到各自的声束所在的线程中;
合并各个线程的计算结果。
2.如权利要求1所述的基于多线程和SIMD的水下声场快速计算方法,其特征在于,所述计算声线数量的步骤具体包括:
基于BELLHOP声场计算模型,通过声线数量公式计算声线数量;
所述声线数量公式为:
式中SUM是声线数量,Dmax为声波最大传播距离,f是声波频率,v1为初始坐标点的声速。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165860.XA CN116244078B (zh) | 2023-02-27 | 2023-02-27 | 基于多线程和simd的水下声场快速计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310165860.XA CN116244078B (zh) | 2023-02-27 | 2023-02-27 | 基于多线程和simd的水下声场快速计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116244078A CN116244078A (zh) | 2023-06-09 |
CN116244078B true CN116244078B (zh) | 2023-12-01 |
Family
ID=86627421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310165860.XA Active CN116244078B (zh) | 2023-02-27 | 2023-02-27 | 基于多线程和simd的水下声场快速计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116244078B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005024354A (ja) * | 2003-07-01 | 2005-01-27 | Hitachi Ltd | 並列音場計算装置 |
JP2005083932A (ja) * | 2003-09-09 | 2005-03-31 | Oki Electric Ind Co Ltd | 伝搬シミュレーション装置、伝搬シミュレーション方法、および伝搬シミュレーションプログラム |
JP2006208273A (ja) * | 2005-01-31 | 2006-08-10 | Asahi Kasei Homes Kk | 音場シミュレーションシステム |
CN104306022A (zh) * | 2014-10-24 | 2015-01-28 | 西安电子科技大学 | 用gpu实现压缩感知超声成像的方法 |
CN105912507A (zh) * | 2016-04-21 | 2016-08-31 | 东南大学 | 一种计算声波在温度场和流场复合场中传播路径的方法 |
CN109341845A (zh) * | 2018-08-15 | 2019-02-15 | 中国人民解放军92942部队 | 一种海洋环境稳态声场空间实时仿真的方法及装置 |
CN109752086A (zh) * | 2018-12-24 | 2019-05-14 | 哈尔滨工程大学 | 基于bellhop的快速声场计算方法 |
CN111475979A (zh) * | 2020-04-07 | 2020-07-31 | 西安电子科技大学 | 基于多gpu多分辨率弹跳射线的声目标强度仿真方法 |
US10979806B1 (en) * | 2018-05-03 | 2021-04-13 | Apple Inc. | Audio system having audio and ranging components |
CN113190984A (zh) * | 2021-04-21 | 2021-07-30 | 中国海洋大学 | 水下声场模型bellhop并行实现方法 |
CN115437782A (zh) * | 2022-07-04 | 2022-12-06 | 青岛海洋科学与技术国家实验室发展中心 | 基于国产众核超算的水下三维声场模型Bellhop3D并行实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8238588B2 (en) * | 2006-12-18 | 2012-08-07 | Meyer Sound Laboratories, Incorporated | Loudspeaker system and method for producing synthesized directional sound beam |
-
2023
- 2023-02-27 CN CN202310165860.XA patent/CN116244078B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005024354A (ja) * | 2003-07-01 | 2005-01-27 | Hitachi Ltd | 並列音場計算装置 |
JP2005083932A (ja) * | 2003-09-09 | 2005-03-31 | Oki Electric Ind Co Ltd | 伝搬シミュレーション装置、伝搬シミュレーション方法、および伝搬シミュレーションプログラム |
JP2006208273A (ja) * | 2005-01-31 | 2006-08-10 | Asahi Kasei Homes Kk | 音場シミュレーションシステム |
CN104306022A (zh) * | 2014-10-24 | 2015-01-28 | 西安电子科技大学 | 用gpu实现压缩感知超声成像的方法 |
CN105912507A (zh) * | 2016-04-21 | 2016-08-31 | 东南大学 | 一种计算声波在温度场和流场复合场中传播路径的方法 |
US10979806B1 (en) * | 2018-05-03 | 2021-04-13 | Apple Inc. | Audio system having audio and ranging components |
CN109341845A (zh) * | 2018-08-15 | 2019-02-15 | 中国人民解放军92942部队 | 一种海洋环境稳态声场空间实时仿真的方法及装置 |
CN109752086A (zh) * | 2018-12-24 | 2019-05-14 | 哈尔滨工程大学 | 基于bellhop的快速声场计算方法 |
CN111475979A (zh) * | 2020-04-07 | 2020-07-31 | 西安电子科技大学 | 基于多gpu多分辨率弹跳射线的声目标强度仿真方法 |
CN113190984A (zh) * | 2021-04-21 | 2021-07-30 | 中国海洋大学 | 水下声场模型bellhop并行实现方法 |
CN115437782A (zh) * | 2022-07-04 | 2022-12-06 | 青岛海洋科学与技术国家实验室发展中心 | 基于国产众核超算的水下三维声场模型Bellhop3D并行实现方法 |
Non-Patent Citations (5)
Title |
---|
Performance Optimization and Parallelization of a Parabolic Equation Solver in Computational Ocean Acoustics on Modern Many-core Computer;Min Xu 等;《International Conference on Computer Science and Application Engineering 》;1-9 * |
基于现代众核高性能计算平台的三维水下声场数值模拟研究;徐闽;《中国优秀硕士学位论文全文数据库 基础科学辑》(第2期);A005-107 * |
基于高斯声束模型的快速声场计算方法;何心怡 等;《鱼雷技术》;第24卷(第2期);105-110 * |
射线模型Bellhop的并行化处理;张朝金 等;《应用声学》;第38卷(第1期);1-7 * |
并行算法在声场计算中的应用研究;李德浩;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》(第4期);C036-87 * |
Also Published As
Publication number | Publication date |
---|---|
CN116244078A (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fang et al. | swdnn: A library for accelerating deep learning applications on sunway taihulight | |
KR102385349B1 (ko) | 신경 네트워크 명령어 세트 아키텍처 | |
US9424038B2 (en) | Compiler-controlled region scheduling for SIMD execution of threads | |
US9058678B1 (en) | System and method for reducing the complexity of performing broad-phase collision detection on GPUs | |
CN109388777A (zh) | 一种用于经优化的Winograd卷积加速器的系统和方法 | |
CN103617150A (zh) | 一种基于gpu的大规模电力系统潮流并行计算系统及其方法 | |
CN102609978A (zh) | 基于cuda架构的gpu加速锥束ct图像重建的方法 | |
CN113748399B (zh) | 在异构计算资源上调度计算图的方法、装置及可读介质 | |
CN110135569A (zh) | 一种异构平台神经元定位三级流水并行方法、系统及介质 | |
CN112580792B (zh) | 一种神经网络多核张量处理器 | |
CN108460195A (zh) | 海啸数值计算模型基于gpu并行的快速执行方法 | |
CN113094096A (zh) | 用于利用零跳过的向量乘加的指令和逻辑 | |
JP5522283B1 (ja) | リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置 | |
Xu et al. | Optimizing finite volume method solvers on Nvidia GPUs | |
Mohan et al. | Studying the potential of Graphcore IPUs for applications in particle physics | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN116244078B (zh) | 基于多线程和simd的水下声场快速计算方法 | |
Gan et al. | Solving mesoscale atmospheric dynamics using a reconfigurable dataflow architecture | |
Zhou et al. | A Parallel Scheme for Large‐scale Polygon Rasterization on CUDA‐enabled GPUs | |
Bakunas-Milanowski et al. | A fast parallel selection algorithm on GPUs | |
Domínguez et al. | Optimization strategies for parallel CPU and GPU implementations of a meshfree particle method | |
Siddiqui et al. | Design Space Exploration of Embedded Applications on Heterogeneous CPU-GPU Platforms | |
Gan et al. | Million-core-scalable simulation of the elastic migration algorithm on Sunway TaihuLight supercomputer | |
CN108427605B (zh) | 基于质点追踪算法实现流线模拟的加速方法 | |
Li et al. | A GPU-based parallel algorithm for large scale linear programming problem |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |