APP下载

基于MPI+MKL 混合模型的反蛙人声呐并行信号处理研究

2021-07-26王慧文许钢灿

声学与电子工程 2021年2期
关键词:蛙人声呐功能模块

王慧文 许钢灿

(第七一五研究所,杭州,310023)

蛙人、UUV 等水下威胁目标由于体积小、机动性强、隐蔽性好等特点,已成为恐怖活动的重要工具。为了提高港口码头及其他水域的小目标探测和识别能力[1-4],反蛙人声呐需要增加通道数、提高阵增益,信号处理算法相应也会日趋复杂,这些因素都会大大增加信号处理的运算量。为了实现所有数据的实时处理,就需要更高效的信号处理平台。传统的单核处理器很难实现大量数据的实时处理,多核处理器的并行处理已经成为解决这一问题的有效途径[5-6]。本文将MPI 与MKL 引入声呐信号的实时处理中,MPI 提供多进程间的并行化处理架构和进程间通信,MKL 实现进程内部并行计算。

1 并行编程模型

MPI 是一种基于消息传递的并行编程技术,支持异构、同构环境里的进程通信,多用于分布式进程、多核进程之间的通信,并且可以与其他并行计算相结合,形成不同粒度的并行计算架构。MPI 并行算法是基于进程间消息传递的算法,它提供了多种通信方式,有点对点通信、组播通信、非阻塞通信、阻塞通信等[7-8]。反蛙人声呐的信号处理按照功能可以划分为不同的功能模块,并采用流水线设计实现并行,非常适合使用MPI 进行功能模块之间的并行化处理。

MKL 是英特尔数学核心函数库,是一套经过高度并行优化和广泛线程化的数学例程,专为需要极致性能的科学、工程及金融等领域的应用而设计。MKL 提供大量的向量、矩阵运算函数,调用这些函数可实现局部范围的高效并行计算。反蛙人声呐信号处理过程中,数据处理主要针对通道、波束进行单独处理,因此存在大量的单独循环,这些循环操作可采用MKL 实现。

基于MPI 的并行编程架构实现了功能模块之间的并行计算,相比于串行计算可显著提高运算效率[9-10]。MPI 并行编程框架如图1 所示,其中功能模块的数量需根据具体应用设计,每个功能模块对应MPI 的一个进程。运算效率取决于计算开销和通信开销。计算开销是进程执行计算的时间,通信开销是进程之间数据传输及同步的时间,增加进程数量可以提高并行度,但会增加进程间的通信开销。

图1 传统MPI 并行编程架构

MPI 只能实现进程之间的并行计算,无法在线程级别进行并行运算,MKL 可以在线程级别提供并行运算,因此MPI+MKL 这种层次化并行模型能够实现两级并行,提供模块间和模块内部的两级并行,它结合了模块间的粗粒度并行(滤波器,波束形成,匹配滤波等)和模块内部的细粒度并行(for循环并行),执行效率远高于单纯使用MPI 的程序,MPI+MKL 的并行编程架构如图2 所示。

图2 MPI+MKL 并行编程架构

2 编程实现

本文的实现是搭建在多核服务器上,算法的并行化是在单一的MPI 并行处理算法基础上结合MKL 的编程模型,以提供模块间和模块内的两级并行处理,最大限度地利用多核服务器的体系结构。混合编程模型减少了进程间的消息传递,增加并行处理的力度,提高了并行效率。

反蛙人声呐的软件系统按照功能模块划分可分为滤波处理、波束形成、匹配滤波、图像处理、目标识别。首先初始化MPI 环境,创建5 个进程,分别对应5 个功能模块,实现一级并行处理:0 号进程进行滤波处理,1 号进程进行波束形成,2 号进程进行匹配滤波,3 号进程进行声呐图像处理[11],4 号进程进行目标识别。对于波束形成这种比较耗时的计算,也可以将其分成多个模块,进一步增加并行性。每个进程通过MPI_Recv()接收上一模块的数据,完成本模块的数据处理,然后调用MPI_Send()将本模块的处理结果送下一功能模块。二级并行处理在进程内部主要针对功能模块内部进行并行化处理。调用MKL 函数实现功能模块内部并行化处理的软件流程见图3。

图3 反蛙人声呐处理流程

3 测试环境及结果分析

本文的硬件环境为联想边缘服务器SE350(2个CPU,每个CPU 包含8 个核心,16 线程,主频1.9 GHz,64 G DDR4 内存,4T 硬盘);软件环境为CentOS6.5 操作系统,支持MPI 并行环境,使用gcc4.8,mpi4.0,mkl2019,程序采用C 语言编写。试验声呐频率为70 kHz,通道数为256 通道,发射信号为HFM 信号,信号降基带后的采样率30 kHz。在声呐信号处理过程中,波束形成是比较耗时的操作,因此本文只对波束形成的执行时间进行统计,波束形成采用频域波束形成,共形成256 个波束。通过设置不同的进程数,比较MPI 和MPI+MKL 混合模型的运行效率。

通过表1 可以看出,MPI+MKL 较单纯使用MPI 提高了系统运算效率。随着进程数的增加,进程间的通信开销增多,所以表中运行时间没有按比例减小。

表1 波束形成时间对比

4 结论

本文通过对反蛙人声呐信号处理的特点进行了分析,构建了基于MPI+MKL 的混合编程模型,结合了MPI 和MKL 的优点,实现了声呐信号处理的两级并行,并对其运行效率进行测试。测试结果表明,基于MPI+MKL 的混合模型具有较高的执行效率,相比于单纯使用MPI,可以提高运算效率,减少计算资源,是一种高效可行的并行编程模型,能够满足反蛙人声呐高采样、多通道和复杂算法的实时处理要求。

猜你喜欢

蛙人声呐功能模块
航空声呐浮标的水下减振系统研究
探索大洋的“千里眼”——声呐
蛙人,请出列
一种便携式侧扫声呐舷侧支架的设计及实现
下潜吧!战斗蛙人
声呐
商业模式是新媒体的核心
基于ASP.NET标准的采购管理系统研究
高校二手交易网络平台功能及技术框架分析与设计
战斗蛙人出发了(下)