基于深度协同的合成孔径雷达回波并行模拟方法转让专利

申请号 : CN201610500585.2

文献号 : CN105911532B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张帆胡辰胡伟李伟

申请人 : 北京化工大学

摘要 :

基于深度协同的合成孔径雷达回波并行模拟方法,属于合成孔径雷达应用技术领域。传统的CPU+GPU异构计算模式下,通常CPU是处理逻辑性较强的运算,而GPU是处理数据相对比较密集且适合并行进行的计算。本发明在充分调研了国内外对SAR回波快速模拟相关文献的基础上,借鉴了相关星载SAR回波模拟的并行仿真算法,提出了一种基于SIMD异构并行的星载SAR回波快速模拟仿真方法,通过多核矢量化扩展CPU/众核GPU的深度协同并行加速SAR回波仿真过程,并在此基础上进行了冗余计算的优化和针对SAR回波过程中不规则问题计算的深度并行优化,实验结果表明通过经优化的CPU/GPU异构协同的模式相比于传统的串行计算方法,在计算效率上能够达到2‑3个数量级的提升。

权利要求 :

1.基于深度协同的合成孔径雷达回波并行模拟方法,其特征在于:

该方法主要包括如下内容,

S1分块处理;目标分块:由于仿真场景的增大,将整个仿真场景都传入GPU中进行运算会造成传输延时的增长和计算量的冗余,同时GPU显存的限制也会造成运算无法流畅地进行;根据以上问题,本方法采用了目标场景分块的处理方法,减少了在回波过程中产生的冗余计算量,减少了GPU内存的使用,同时也尽量隐藏了场景信息的传输延时;任务分块:对任务池中的任务进行分块处理,将分块处理的任务分配给CPU和GPU并同时进行计算;

S2不规则数据的规约:基于一维卷积的回波算法在通过并行实现的时候存在距离门的冲突问题,针对SAR回波时遇到的这种不规则数据问题,本方法采用将不规则的数据进行规则化处理然后进行并行规约的方法;

S3CPU和GPU协同进行回波计算:为了充分利用计算机的计算资源,采用了统一于SIMD即单指令多数据体系的多核矢量化扩展CPU/众核GPU的异构并行计算框架,通过CPU/GPU深度协同加速实现星载SAR回波的实时模拟;

实施流程如下:

步骤1、雷达信号模型的建立;

SAR的回波处理分为方位向和距离向,为了获得距离向的高分辨率,通常SAR的发射信号需要大时带宽积、长持续时间以获得大平均功率;本方法采用的SAR发射信号是Chirp信号,如下所示,上式中Tp表示脉冲宽度,fc表示载波的频率,kr表示线性调频率,τ表示距离向时间,s(τ)表示在τ时刻的发射信号,j表示复数的虚部;

本方法采用的主要是一维卷积算法,该算法由距离时域的相干算法改进得到,方位向时刻的回波能够看作是由一系列的狄拉克函数和发射信号的卷积获得,方位向回波信号通过傅里叶变换在频域完成混叠,并与距离向信号进行卷积然后得到回波数据;根据卷积的性质,通过傅里叶变换,将方位向累积信号和发射信号的频谱进行相乘,然后进行逆傅里叶变换得到最后的回波结果;

上式中,tn表示仿真第n条回波对应的方位向时刻,S(ζ)表示去载频后的发射信号频谱,ζ表示发射信号频率,T表示需要进行仿真的回波信号数量,n表示回波信号的序号,其中方位向的累积信号sa(tn,τ)为式(3);

式中,λ表示波长,δ表示狄拉克冲击响应函数,c代表光速,r表示目标点斜距,i代表场景中目标点的序号;

根据式(2)和式(3),在进行回波算法模拟仿真时,距离向信号和方位向信号能够分别处理,距离向信号的频谱由Chirp信号通过傅里叶变换得到,对于方位向信号,需要根据空间几何关系求得在某一时刻tn时场景目标点的斜距和视角,通过视角判断目标点是否在波束脚印内,然后计算目标点回波所在的距离门,之后将方位向信号进行叠加处理,当所有目标点都遍历之后将方位向信号进行傅里叶变换,并与发射信号频谱进行相乘,最后通过逆傅里叶变换得到在时刻的一条回波数据,重复上述过程得到所有方位向时刻的回波信号;

步骤2、基于CPU的星载SAR回波并行仿真

1)使用目标分块的策略以减少回波计算过程中产生的冗余计算;

为了减少在回波过程中因判断目标点是否在波束脚印范围内的计算量,提出了一种目标分块的策略;在没有分块之前,需要计算整个场景的目标点斜距和角度信息,在分块之后只需要计算小块场景的信息即可;假设将目标场景均等的分成4块,其中前两块为A和B;但是这样分块存在着一个问题,就是当波束扫到该块的边界时会产生回波累加不完全的情况;当波束扫到A块边界时A1的信息将会丢失,A1表示半个波束宽度,导致最后的回波累加不完全,同样对于B块,当波束扫到边界时,B1和B2的信息将会丢失;B1和B2表示半个波束宽度;

所以为了保证回波的正确性,需要进行分块时在边界部分做一下处理,也就是在长度上加上半个波束宽度;为了减少在分块时产生的计算量,选择了以矩形的方式进行划分;不同的线程计算不同场景块的目标点斜距和角度,减少了很大的计算量;

假设场景的宽度为w,高度为h,波束宽度为d,N为启动的线程数,那么A的面积如式(4);

为了量化的分析通过目标分块带来的效果,假设单位面积内计算目标点斜距和角度的计算量为Cvt,每个方位时刻的回波计算量为Cvt_data,分块前后的总计算量分别为Cvt_total和Cvt_tile,并且假设场景中的目标点分布均匀,也就是Cvt和场景块的面积成正比,则有下面的式子;

Cvt_total=(h×w)×Cvt+Cvt_data   (5)

在式(7)中0<x<N-1,所以1>Ri>N,Ri表示分块前总计算量与分块后总计算向的比值,其中

2)基于SSE/AVX和OpenMP的星载SAR回波模拟仿真

根据回波模拟的核心算法,对于不同的方位向时刻之间适合采用粗粒度并行,通常采用OpenMP多线程或者MPI多进程的方法,对于每一个方位向回波信号的计算适合采用细粒度并行,采用SSE/AVX指令集矢量化的方式进行;

对于每一个方位向时刻,在具体的计算回波时可以通过细粒度并行的方式对目标点斜距和角度等进行计算,也就是相当于粗粒度的一个单位中有更小粒度的并行,由于每一个方位向时刻在计算各自的回波信号时相互之间没有影响,所以可以通过并行嵌套的方式进行更深度的并行;

步骤3、基于GPU的星载SAR回波并行仿真算法

1)基于CUDA的星载SAR大场景回波仿真

星载SAR空间几何关系计算分为两部分,第一部分是通过已知的卫星轨道信息和六根数,求得场景中所有目标点在惯性坐标系下的坐标;第二部分是利用已求得的坐标和卫星在轨道上不断运动产生的真近心角变化,进而求得目标点此时刻在卫星天线坐标系下的坐标;对于上面两步,主要对第二步可采用并行的方式,对于求得每一个目标点的斜距和视角,相互之间不产生干扰;GPU在分配线程的时候可以分配与场景大小相同数量的线程,每一个线程处理一个目标点,当场景中点的个数太多时,实际的效果并不是申请的线程数越多计算效果就越好,在GPU计算能力还没有完全用到时,加速比较稳定,当GPU的计算能力已经完全用上时,场景越大,加速效果会越来越小;

经过上一步的计算,已经得到了场景目标点在天线坐标系下的坐标,那么通过空间几何关系就可以得到目标点的斜距和角度信息;在计算斜距和角度、目标点所在距离门和方位向信号时,目标点之间相互没有影响,可以并行的进行计算;然而,在进行方位向信号回波叠加的时候不能采用上述的并行方法,因此将用串行的方式进行;CUDA中对相同存储地址中写入数据时提供了一个原子函数,保证线程之间的串行进行;在进行回波计算时,主要用到的原子函数是atomicFloatAdd函数;

下面是回波部分并行程序的伪代码:

2)基于多GPU的星载SAR回波仿真算法

基于多GPU的星载SAR回波仿真算法采用步骤2中提到的方法,每个GPU由不同的线程或者进程控制进行粗粒度的并行,而每个GPU负责方位向信号具体计算的细粒度并行,并且采用目标分块的方法,减少在计算过程中产生的冗余计算量,这样不但可以节省GPU显存的使用量,减少经济成本,又能提高程序的执行效率;

步骤4、基于GPU深度优化的星载SAR回波仿真算法

1)基于规约的GPU并行冲突优化

在星载SAR模拟仿真的方位向回波累加过程中,存在两个不规则问题,第一个是积累的回波数量不一定,第二个是积累的回波可能来自非连续的分布目标;

对于连续分布的一组数据,假设进行累加求和可以通过规约的方法得到结果,但是由于在星载SAR回波模拟过程中的特殊性,需要在进行规约之前进行数据整理;

式(8)中c为光速,R0为斜距,Rnear是近距点,fs是采样频率;

根据式(8)计算出波束脚印内目标点所在的距离门,首先每一个目标点对应一个所在距离门所存储的地址序号,对于这个地址的计算是每计算一个点所在的距离门,该点在该距离门中的序号是之前已经在该距离门中的点的数量加1,那么第一个斜线填充的点所在距离门序号为1,第二个斜线填充的点所在距离门的序号为2,对于其他的距离门中的点类似;将所有点的距离门序号计算完成之后,根据距离门序号将计算出的回波信号存到相应的地址空间中,这时候每个距离门所对应的地址空间中的所有数据都是整齐的,然后再通过并行规约的方法进行求和;

步骤5、基于CPU/GPU异构的星载SAR回波模拟深度并行优化

将步骤2、3、4结合起来,采用了CPU+GPU的深度协同计算模式;CPU由于强大的控制核心以及多线程矢量化能力,不仅处理逻辑性较强的计算,还处理计算密度较大的计算,而GPU由于强大的算术计算单元处理计算密度大的计算,两者发挥各自优势,这种深度协同模式是对传统异构计算模式的深化,能够应用在很多通用领域;

本系统通过PCIE进行数据传输,在构成异构系统的时候,CPU和GPU各自有独立的存储空间,数据通过PCIE进行传输,这种传输会存在较大的传输延时,但是根据程序本身,在进行优化时,通过流水线的技术合理的隐藏这部分传输时间;

1)面向异构计算的星载SAR回波仿真任务分块方法

本步骤使用的针对星载SAR回波仿真任务的分块方法与步骤1中提到的分块方法相似,在进行场景分块的时候需要根据波束脚印在场景块边缘多分出半个波束宽度,目的是为了保证波束在扫到场景块边缘的时候能够扫到所有需要的目标点信息,保证最后回波的正确性,与调度方法相结合,根据不同的调度策略合理的分配场景块的大小;

2)面向异构计算的星载SAR回波仿真任务调度方法

第一种是静态调度划分,也就是根据给定的分配比例进行划分,对于星载SAR回波模拟仿真使用4块相同的GPU进行仿真,将所有的方位向时刻按1:1:1:1:1的任务分配方式将任务分给不同的GPU和CPU进行处理,为了减少计算量对场景目标也进行相同的分块即可,每个GPU和CPU可以得到不同的场景块分别进行处理,最后由CPU收集计算的回波结果,所以回波模拟时间由最后一块计算完的计算设备GPU或者CPU的运行时间决定;

第二种是基于任务池的动态任务调度划分,任务池中的任务中,1进程负责任务调度,2到5进程分别控制不同的计算单元,首先1进程将ABCD四个任务分给2到5进程,然后根据不同计算单元的计算完成时间再从任务池进行任务分配,直至任务池中所有的任务全部计算完成;由于在一开始是不需要将所有任务都分配下去的,所有在星载SAR回波模拟中的任务块要更小,场景块也应相应减小;

第三种是通过实际计算效能进行分配的动态调度划分;这种方法与第二种的区别是,一开始将所有的任务分发下去,当一个进程任务先完成之后,暂停第二个进程的计算,然后根据两个计算单元在相同时间内完成的任务量计算出之后的任务分配,然后继续进行,经过动态分配达到计算能力的均衡利用;

3)CPU/GPU协同加速的星载SAR回波实时模拟

对于传统的CPU+GPU异构计算模式下,通常CPU是处理逻辑性较强的运算,而GPU是处理数据相对比较密集且适合并行进行的计算;本方法利用多线程矢量化扩展技术提升CPU的计算能力,更加有效的利用异构系统的计算性能,可以使得CPU和GPU同时参与计算;

在CPU下用OpenMP+AVX和在4GPU下用原子加操作进行星载SAR回波模拟所用的时间相差不大,且通过对星载SAR的粗粒度分析得出,两者能够同时进行计算,分别处理不同的计算任务的;根据粗粒度进行任务的划分是根据方位向时刻来划分的,相互之间不会相互干扰,所以将不同的任务分别给多个GPU和CPU来进行同时计算是可行的,最后通过任务回收获得完整的回波信息;

在星载SAR回波模拟仿真过程中,将任务分成两组,第一组由CPU进行计算,第二组由GPU进行计算;任务在任务池中进行分发,在内存中进行,然后CPU负责的计算从任务池中取出任务并通过OpenMP+AVX协同进行回波计算,而GPU负责的计算从任务池中取出任务交由不同的GPU进行多GPU并行处理;

CPU端的处理首先将任务从内存取出存入AVX寄存器中,然后通过AVX矢量化分别并行计算斜距历史、波束脚印判断和目标点回波计算,然后将计算结果返回内存,串行进行方位向回波信号的累加,最后通过与距离向卷积得到最后的回波信号,并根据开始从任务池中取出任务的序号存在相应的内存位置;

GPU的处理第一步跟CPU端的处理一致,CPU负责将任务取出并交由GPU进行处理,GPU通过并行的计算斜距历史、波束脚印判断、目标点回波计算和原子加操作得到方位向回波信号,然后通过与距离向信号的卷积得到最后的回波结果,最后通过开始从任务池中取出的任务序号放在相应的内存位置上;

在程序的运行过程中通过单独的socket线程向用户传递信息。

2.根据权利要求1所述的基于深度协同的合成孔径雷达回波并行模拟方法,其特征在于:向用户传递信息包括仿真中间参数和仿真进度。

说明书 :

基于深度协同的合成孔径雷达回波并行模拟方法

技术领域

[0001] 本发明涉及一种基于深度协同的合成孔径雷达回波并行模拟方法,属于合成孔径雷达应用技术领域。

背景技术

[0002] 合成孔径雷达(Synthetic Aperture Radar,SAR)是一种可以提供高分辨率成像效果的雷达,由于它能够在特殊的气象条件下得到较高分辨率的雷达图像,并且能够有效的穿透掩盖物和识别伪装等特点,被广泛的应用在军用和民用领域。通常在合成孔径雷达正式投入使用之前,为了减少不必要的成本投入,需要进行SAR的回波仿真模拟,作为保证雷达工作之后能够正常运转的一个不可缺少的前提,同时在雷达成像之前,需要SAR的回波数据作为有力的支撑。
[0003] 然而随着技术的发展,合成孔径雷达的技术越来越成熟,出现了不同的雷达工作模式,对分辨率的要求也逐渐提高,雷达的仿真测绘带逐渐变宽,由此造成了回波原始数据的海量增加,而传统的串行仿真对于这种情况就会显的捉襟见肘,通常进行一次大场景的回波运算需要非常长的时间,严重的制约了成像算法的设计和研究进度,所以减少回波模拟数据的生成时间,提高回波模拟运算效率成了一个亟需解决的问题。
[0004] SAR回波模拟效率的提升主要有三种思路,分别是信号处理方法、硬件加速和高性能计算方法。基于信号处理方法的回波模拟加速一直是国内外研究的热点,一般通过二维频域、混合域等方法进行加速,但是难以模拟实际系统误差;基于硬件加速的方法,一方面成本过高,另一方面由于存储的限制,难以模拟大场景、长条带的回波数据;基于高性能计算的方法,能够有效弥补前两者的不足,在有限的硬件成本(GPU卡)条件下,实现大场景SAR回波的精确模拟。但是现有的基于GPU的SAR回波高性能模拟方法,严重低估了CPU的计算能力,CPU在回波模拟过程中仅仅承担输入输出、逻辑控制等小计算量处理步骤,没有参与到高计算密度的回波计算过程,是一种计算资源的浪费。因此本发明深度挖掘CPU的计算能力,给出了基于SIMD统一框架的CPU多核矢量化并行和GPU众核并行计算方法,使得CPU作为一种计算资源真正参与到回波计算过程中,实现CPU和GPU的深度协同。

发明内容

[0005] 本发明的主要目的是提供一种基于深度协同的合成孔径雷达回波并行模拟方法。
[0006] 随着高性能并行计算的发展,就如何快速准确的得到海量的回波数据的问题目前可以给出一个很好的解决方案。传统的CPU+GPU异构计算模式下,通常CPU是处理逻辑性较强的运算,而GPU是处理数据相对比较密集且适合并行进行的计算。本发明在充分调研了国内外对SAR回波快速模拟相关文献的基础上,借鉴了相关星载SAR回波模拟的并行仿真算法,提出了一种基于SIMD异构并行的星载SAR回波快速模拟仿真方法,通过SSE/AVX+OpenMP+CUDA充分的利用计算机的计算资源,并在此基础上进行了冗余计算的优化和针对SAR回波过程中不规则问题计算的深度并行优化,实验结果表明通过经优化的CPU/GPU异构协同的模式相比于传统的计算方法能够有效的提高运算效率80倍左右。合成孔径雷达通常有机载和星载两种方式,本发明主要进行的是星载合成孔径雷达回波模拟技术的研究,这两种方式核心的回波模拟仿真算法差异较小。
[0007] 本发明的技术方案具体来说,主要包括如下技术内容:
[0008] 1、基于深度协同的合成孔径雷达回波并行模拟方法,其特征在于:
[0009] 该方法主要包括如下内容,
[0010] S1分块处理;目标分块:由于仿真场景的增大,将整个仿真场景都传入GPU中进行运算会造成传输延时的增长和计算量的冗余,同时GPU显存的限制也会造成运算无法流畅地进行;根据以上问题,本方法采用了目标场景分块的处理方法,减少了在回波过程中产生的冗余计算量,减少了GPU内存的使用,同时也尽量隐藏了场景信息的传输延时;任务分块:对任务池中的任务进行分块处理,将分块处理的任务分配给CPU和GPU并同时进行计算;
[0011] S2不规则数据的规约:基于一维卷积的回波算法在通过并行实现的时候存在距离门的冲突问题,针对SAR回波时遇到的这种不规则数据问题,本方法采用将不规则的数据进行规则化处理然后进行并行规约的方法;
[0012] S3CPU和GPU协同进行回波计算:为了充分利用计算机的计算资源,采用了统一于SIMD(但指令多数据)体系的多核矢量化扩展CPU/众核GPU的异构并行计算框架,通过CPU/GPU深度协同加速实现星载SAR回波的实时模拟;
[0013] 实施流程如下:
[0014] 步骤1、雷达信号模型的建立;
[0015] SAR的回波处理分为方位向和距离向,为了获得距离向的高分辨率,通常SAR的发射信号需要大时带宽积、长持续时间以获得大平均功率;本方法采用的SAR发射信号是Chirp信号,如下所示,
[0016]
[0017] 上式中Tp表示脉冲宽度,fc表示载波的频率,kr表示线性调频率,τ表示距离向时间,s(τ)表示在τ时刻的发射信号,j表示复数的虚部;
[0018] 本方法采用的主要是一维卷积算法,该算法由距离时域的相干算法改进得到,方位向时刻的回波能够看作是由一系列的狄拉克函数和发射信号的卷积获得,方位向回波信号通过傅里叶变换在频域完成混叠,并与距离向信号进行卷积然后得到回波数据;根据卷积的性质,通过傅里叶变换,将方位向累积信号和发射信号的频谱进行相乘,然后进行逆傅里叶变换得到最后的回波结果;
[0019]
[0020] 上式中,tn表示仿真第n条回波对应的方位向时刻,S(ζ)表示去载频后的发射信号频谱,ζ表示发射信号频率,T表示需要进行仿真的回波信号数量,n表示回波信号的序号,其中方位向的累积信号sa(tn,τ)为式(3);
[0021]
[0022] 式中,λ表示波长,δ表示狄拉克冲击响应函数,c代表光速,r表示目标点斜距,i代表场景中目标点的序号;
[0023] 根据式(2)和式(3),在进行回波算法模拟仿真时,距离向信号和方位向信号能够分别处理,距离向信号的频谱由Chirp信号通过傅里叶变换得到,对于方位向信号,需要根据空间几何关系求得在某一时刻tn时场景目标点的斜距和视角,通过视角判断目标点是否在波束脚印内,然后计算目标点回波所在的距离门,之后将方位向信号进行叠加处理,当所有目标点都遍历之后将方位向信号进行傅里叶变换,并与发射信号频谱进行相乘,最后通过逆傅里叶变换得到在时刻的一条回波数据,重复上述过程得到所有方位向时刻的回波信号;
[0024] 步骤2、基于CPU的星载SAR回波并行仿真
[0025] 1)使用目标分块的策略以减少回波计算过程中产生的冗余计算;
[0026] 为了减少在回波过程中因判断目标点是否在波束脚印范围内的计算量,提出了一种目标分块的策略;在没有分块之前,需要计算整个场景的目标点斜距和角度信息,在分块之后只需要计算小块场景的信息即可;假设将目标场景均等的分成4块,其中前两块为A和B;但是这样分块存在着一个问题,就是当波束扫到该块的边界时会产生回波累加不完全的情况;当波束扫到A块边界时A1的信息将会丢失,A1表示半个波束宽度,导致最后的回波累加不完全,同样对于B块,当波束扫到边界时,B1和B2的信息将会丢失;B1和B2表示半个波束宽度;
[0027] 所以为了保证回波的正确性,需要进行分块时在边界部分做一下处理,也就是在长度上加上半个波束宽度;为了减少在分块时产生的计算量,选择了以矩形的方式进行划分;不同的线程计算不同场景块的目标点斜距和角度,减少了很大的计算量;
[0028] 假设场景的宽度为w,高度为h,波束宽度为d,N为启动的线程数,那么A的面积如式(4);
[0029]
[0030] 为了量化的分析通过目标分块带来的效果,假设单位面积内计算目标点斜距和角度的计算量为Cvt,每个方位时刻的回波计算量为Cvt_data,分块前后的总计算量分别为Cvt_total和Cvt_tile,并且假设场景中的目标点分布均匀,也就是Cvt和场景块的面积成正比,则有下面的式子;
[0031] Cvt_total=(h×w)×Cvt+Cvt_data  (5)
[0032]
[0033]
[0034] 在式(7)中0<x<N-1,所以1>Ri>N,Ri表示分块前总计算量与分块后总计算向的比值,其中
[0035] 2)基于SSE/AVX和OpenMP的星载SAR回波模拟仿真
[0036] 根据回波模拟的核心算法,对于不同的方位向时刻之间适合采用粗粒度并行,通常采用OpenMP多线程或者MPI多进程的方法,对于每一个方位向回波信号的计算适合采用细粒度并行,采用SSE/AVX指令集矢量化的方式进行;
[0037] 对于每一个方位向时刻,在具体的计算回波时可以通过细粒度并行的方式对目标点斜距和角度等进行计算,也就是相当于粗粒度的一个单位中有更小粒度的并行,由于每一个方位向时刻在计算各自的回波信号时相互之间没有影响,所以可以通过并行嵌套的方式进行更深度的并行;
[0038] 步骤3、基于GPU的星载SAR回波并行仿真算法
[0039] 1)基于CUDA的星载SAR大场景回波仿真
[0040] 星载SAR空间几何关系计算分为两部分,第一部分是通过已知的卫星轨道信息和六根数,求得场景中所有目标点在惯性坐标系下的坐标;第二部分是利用已求得的坐标和卫星在轨道上不断运动产生的真近心角变化,进而求得目标点此时刻在卫星天线坐标系下的坐标;对于上面两步,主要对第二步可采用并行的方式,对于求得每一个目标点的斜距和视角,相互之间不产生干扰;GPU在分配线程的时候可以分配与场景大小相同数量的线程,每一个线程处理一个目标点,当场景中点的个数太多时,实际的效果并不是申请的线程数越多计算效果就越好,在GPU计算能力还没有完全用到时,加速比较稳定,当GPU的计算能力已经完全用上时,场景越大,加速效果会越来越小;
[0041] 经过上一步的计算,已经得到了场景目标点在天线坐标系下的坐标,那么通过空间几何关系就可以得到目标点的斜距和角度信息;在计算斜距和角度、目标点所在距离门和方位向信号时,目标点之间相互没有影响,可以并行的进行计算;然而,在进行方位向信号回波叠加的时候不能采用上述的并行方法,因此将用串行的方式进行;CUDA中对相同存储地址中写入数据时提供了一个原子函数,可以保证线程之间的串行进行;在进行回波计算时,主要用到的原子函数是atomicFloatAdd函数;
[0042] 下面是回波部分并行程序的伪代码:
[0043]
[0044] 2)基于多GPU的星载SAR回波仿真算法
[0045] 基于多GPU的星载SAR回波仿真算法采用步骤2中提到的方法,每个GPU由不同的线程或者进程控制进行粗粒度的并行,而每个GPU负责方位向信号具体计算的细粒度并行,并且采用目标分块的方法,减少在计算过程中产生的冗余计算量,这样不但可以节省GPU显存的使用量,减少经济成本,又能提高程序的执行效率;
[0046] 步骤4、基于GPU深度优化的星载SAR回波仿真算法
[0047] 1)基于规约的GPU并行冲突优化
[0048] 在星载SAR模拟仿真的方位向回波累加过程中,存在两个不规则问题,第一个是积累的回波数量不一定,第二个是积累的回波可能来自非连续的分布目标;
[0049] 对于连续分布的一组数据,假设进行累加求和可以通过规约的方法得到结果,但是由于在星载SAR回波模拟过程中的特殊性,需要在进行规约之前进行数据整理;
[0050]
[0051] 式(8)中c为光速,R0为斜距,Rnear是近距点,fs是采样频率;
[0052] 根据式(8)计算出波束脚印内目标点所在的距离门,首先每一个目标点对应一个所在距离门所存储的地址序号,对于这个地址的计算是每计算一个点所在的距离门,该点在该距离门中的序号是之前已经在该距离门中的点的数量加1,那么如图6中第一个斜线填充的点所在距离门序号为1,第二个斜线填充的点所在距离门的序号为2,对于其他的距离门中的点类似;将所有点的距离门序号计算完成之后,根据距离门序号将计算出的回波信号存到相应的地址空间中,这时候每个距离门所对应的地址空间中的所有数据都是整齐的,然后再通过并行规约的方法进行求和;
[0053] 步骤5、基于CPU/GPU异构的星载SAR回波模拟深度并行优化
[0054] 将步骤2、3、4结合起来,采用了CPU+GPU的深度协同计算模式;CPU由于强大的控制核心以及多线程矢量化能力,不仅处理逻辑性较强的计算,还处理计算密度较大的计算,而GPU由于强大的算术计算单元处理计算密度大的计算,两者发挥各自优势,这种深度协同模式是对传统异构计算模式的深化,可以应用在很多通用领域;
[0055] 本系统通过PCIE进行数据传输,在构成异构系统的时候,CPU和GPU各自有独立的存储空间,数据通过PCIE进行传输,这种传输会存在较大的传输延时,但是根据程序本身,在进行优化时,通过流水线的技术合理的隐藏这部分传输时间;
[0056] 1)面向异构计算的星载SAR回波仿真任务分块方法
[0057] 本步骤使用的针对星载SAR回波仿真任务的分块方法与步骤1中提到的分块方法相似,在进行场景分块的时候需要根据波束脚印在场景块边缘多分出半个波束宽度,目的是为了保证波束在扫到场景块边缘的时候能够扫到所有需要的目标点信息,保证最后回波的正确性,与调度方法相结合,根据不同的调度策略合理的分配场景块的大小;
[0058] 2)面向异构计算的星载SAR回波仿真任务调度方法
[0059] 第一种是静态调度划分,也就是根据给定的分配比例进行划分,例如,对于星载SAR回波模拟仿真使用4块相同的GPU进行仿真,可以将所有的方位向时刻按1:1:1:1:1的任务分配方式将任务分给不同的GPU和CPU进行处理,为了减少计算量对场景目标也进行相同的分块即可,每个GPU和CPU可以得到不同的场景块分别进行处理,最后由CPU收集计算的回波结果,所以回波模拟时间由最后一块计算完的计算设备(GPU或者CPU)的运行时间决定;
[0060] 第二种是基于任务池的动态任务调度划分,图7左侧矩形部分为任务池中的任务,其中1进程负责任务调度,2到5进程分别控制不同的计算单元,首先1进程将ABCD四个任务分给2到5进程,然后根据不同计算单元的计算完成时间再从任务池进行任务分配,直至任务池中所有的任务全部计算完成;由于在一开始是不需要将所有任务都分配下去的,所有在星载SAR回波模拟中的任务块要更小,场景块也应相应减小;
[0061] 第三种是通过实际计算效能进行分配的动态调度划分;这种方法与第二种的区别是,一开始将所有的任务分发下去,当一个进程任务先完成之后,暂停第二个进程的计算,然后根据两个计算单元在相同时间内完成的任务量计算出之后的任务分配,然后继续进行,经过动态分配达到计算能力的均衡利用;
[0062] 3)CPU/GPU协同加速的星载SAR回波实时模拟
[0063] 对于传统的CPU+GPU异构计算模式下,通常CPU是处理逻辑性较强的运算,而GPU是处理数据相对比较密集且适合并行进行的计算;本发明方法,利用多线程矢量化扩展技术提升CPU的计算能力,更加有效的利用异构系统的计算性能,可以使得CPU和GPU同时参与计算;
[0064] 由实验结果发现在CPU下用OpenMP+AVX和在4GPU下用原子加操作进行星载SAR回波模拟所用的时间相差不大,且通过对星载SAR的粗粒度分析得出,两者是可以同时进行计算,分别处理不同的计算任务的;根据粗粒度进行任务的划分是根据方位向时刻来划分的,相互之间不会相互干扰,所以将不同的任务分别给多个GPU和CPU来进行同时计算是可行的,最后通过任务回收获得完整的回波信息;
[0065] 在星载SAR回波模拟仿真过程中,将任务分成两组,第一组由CPU进行计算,第二组由GPU进行计算;任务在任务池中进行分发,在内存中进行,然后CPU负责的计算从任务池中取出任务并通过OpenMP+AVX协同进行回波计算,而GPU负责的计算从任务池中取出任务交由不同的GPU进行多GPU并行处理;
[0066] CPU端的处理首先将任务从内存取出存入AVX寄存器中,然后通过AVX矢量化分别并行计算斜距历史、波束脚印判断和目标点回波计算,然后将计算结果返回内存,串行进行方位向回波信号的累加,最后通过与距离向卷积得到最后的回波信号,并根据开始从任务池中取出任务的序号存在相应的内存位置;
[0067] GPU的处理第一步跟CPU端的处理一致,CPU负责将任务取出并交由GPU进行处理,GPU通过并行的计算斜距历史、波束脚印判断、目标点回波计算和原子加操作得到方位向回波信号,然后通过与距离向信号的卷积得到最后的回波结果,最后通过开始从任务池中取出的任务序号放在相应的内存位置上;
[0068] 在程序的运行过程中通过单独的socket线程向用户传递信息。
[0069] 向用户传递信息包括仿真中间参数和仿真进度。
[0070] 从实验的结果分析,星载SAR回波模拟仿真非常适合通过高性能并行计算进行优化处理,并且可以达到很高的加速比。对于CPU下的并行,通过OpenMP处理粗粒度并行,AVX矢量化处理细粒度并行可以达到相比于串行35倍左右的加速效果。对于GPU下的并行,通过OpenMP或者MPI处理粗粒度并行,GPU处理细粒度并行可以达到相比于串行50倍左右的加速效果,本发明中提出通过数据整理和并行规约的方法进行在细粒度的方面进行深度优化,加速性能会进一步提升30%左右。步骤5结合前4个步骤,优化了CPU/GPU的协同处理模式,加速效果更为明显,通过实验验证相比于串行的加速效果可以达到2-3个数量级。

附图说明

[0071] 图1为回波仿真流程示意图。
[0072] 图2为目标分块策略示意图。
[0073] 图3为粒度分析示意图
[0074] 图4为SAR回波模拟数据流图
[0075] 图5为基于插值优化冲突的示意图
[0076] 图6为基于规约优化冲突的示意图
[0077] 图7为基于任务池的动态调度方法示意图
[0078] 图8为基于CPU/GPU协同的星载SAR回波模拟仿真系统流程图(整个仿真流程从下向上进行)

具体实施方式

[0079] 如图1-8所示,基于深度协同的合成孔径雷达回波并行模拟方法,该方法主要包括如下内容,
[0080] S1分块处理;目标分块:由于仿真场景的增大,将整个仿真场景都传入GPU中进行运算会造成传输延时的增长和计算量的冗余,同时GPU显存的限制也会造成运算无法流畅地进行;根据以上问题,本方法采用了目标场景分块的处理方法,减少了在回波过程中产生的冗余计算量,减少了GPU内存的使用,同时也尽量隐藏了场景信息的传输延时;任务分块:对任务池中的任务进行分块处理,将分块处理的任务分配给CPU和GPU并同时进行计算;
[0081] S2不规则数据的规约:基于一维卷积的回波算法在通过并行实现的时候存在距离门的冲突问题,针对SAR回波时遇到的这种不规则数据问题,本方法采用将不规则的数据进行规则化处理然后进行并行规约的方法;
[0082] S3CPU和GPU协同进行回波计算:为了充分利用计算机的计算资源,采用了统一于SIMD(但指令多数据)体系的多核矢量化扩展CPU/众核GPU的异构并行计算框架,通过CPU/GPU深度协同加速实现星载SAR回波的实时模拟;
[0083] 实施流程如下:
[0084] 步骤1、雷达信号模型的建立;
[0085] SAR的回波处理分为方位向和距离向,为了获得距离向的高分辨率,通常SAR的发射信号需要大时带宽积、长持续时间以获得大平均功率;本方法采用的SAR发射信号是Chirp信号,如下所示,
[0086]
[0087] 上式中Tp表示脉冲宽度,fc表示载波的频率,kr表示线性调频率,τ表示距离向时间,s(τ)表示在τ时刻的发射信号,j表示复数的虚部;
[0088] 本方法采用的主要是一维卷积算法,该算法由距离时域的相干算法改进得到,方位向时刻的回波能够看作是由一系列的狄拉克函数和发射信号的卷积获得,方位向回波信号通过傅里叶变换在频域完成混叠,并与距离向信号进行卷积然后得到回波数据;根据卷积的性质,通过傅里叶变换,将方位向累积信号和发射信号的频谱进行相乘,然后进行逆傅里叶变换得到最后的回波结果;
[0089]
[0090] 上式中,tn表示仿真第n条回波对应的方位向时刻,S(ζ)表示去载频后的发射信号频谱,ζ表示发射信号频率,T表示需要进行仿真的回波信号数量,n表示回波信号的序号,其中方位向的累积信号sa(tn,τ)为式(3);
[0091]
[0092] 式中,λ表示波长,δ表示狄拉克冲击响应函数,c代表光速,r表示目标点斜距,i代表场景中目标点的序号;
[0093] 根据式(2)和式(3),在进行回波算法模拟仿真时,距离向信号和方位向信号能够分别处理,距离向信号的频谱由Chirp信号通过傅里叶变换得到,对于方位向信号,需要根据空间几何关系求得在某一时刻tn时场景目标点的斜距和视角,通过视角判断目标点是否在波束脚印内,然后计算目标点回波所在的距离门,之后将方位向信号进行叠加处理,当所有目标点都遍历之后将方位向信号进行傅里叶变换,并与发射信号频谱进行相乘,最后通过逆傅里叶变换得到在时刻的一条回波数据,重复上述过程得到所有方位向时刻的回波信号;
[0094] 步骤2、基于CPU的星载SAR回波并行仿真
[0095] 1)使用目标分块的策略以减少回波计算过程中产生的冗余计算;
[0096] 为了减少在回波过程中因判断目标点是否在波束脚印范围内的计算量,提出了一种目标分块的策略;在没有分块之前,需要计算整个场景的目标点斜距和角度信息,在分块之后只需要计算小块场景的信息即可;假设将目标场景均等的分成4块,其中前两块为A和B;但是这样分块存在着一个问题,就是当波束扫到该块的边界时会产生回波累加不完全的情况;当波束扫到A块边界时A1的信息将会丢失,A1表示半个波束宽度,导致最后的回波累加不完全,同样对于B块,当波束扫到边界时,B1和B2的信息将会丢失;B1和B2表示半个波束宽度;
[0097] 所以为了保证回波的正确性,需要进行分块时在边界部分做一下处理,也就是在长度上加上半个波束宽度;为了减少在分块时产生的计算量,选择了以矩形的方式进行划分;不同的线程计算不同场景块的目标点斜距和角度,减少了很大的计算量;
[0098] 假设场景的宽度为w,高度为h,波束宽度为d,N为启动的线程数,那么A的面积如式(4);
[0099]
[0100] 为了量化的分析通过目标分块带来的效果,假设单位面积内计算目标点斜距和角度的计算量为Cvt,每个方位时刻的回波计算量为Cvt_data,分块前后的总计算量分别为Cvt_total和Cvt_tile,并且假设场景中的目标点分布均匀,也就是Cvt和场景块的面积成正比,则有下面的式子;
[0101] Cvt_total=(h×w)×Cvt+Cvt_data  (5)
[0102]
[0103]
[0104] 在式(7)中0<x<N-1,所以1>Ri>N,Ri表示分块前总计算量与分块后总计算向的比值,其中
[0105] 2)基于SSE/AVX和OpenMP的星载SAR回波模拟仿真
[0106] 根据回波模拟的核心算法,对于不同的方位向时刻之间适合采用粗粒度并行,通常采用OpenMP多线程或者MPI多进程的方法,对于每一个方位向回波信号的计算适合采用细粒度并行,采用SSE/AVX指令集矢量化的方式进行;
[0107] 对于每一个方位向时刻,在具体的计算回波时可以通过细粒度并行的方式对目标点斜距和角度等进行计算,也就是相当于粗粒度的一个单位中有更小粒度的并行,由于每一个方位向时刻在计算各自的回波信号时相互之间没有影响,所以可以通过并行嵌套的方式进行更深度的并行;
[0108] 步骤3、基于GPU的星载SAR回波并行仿真算法
[0109] 1)基于CUDA的星载SAR大场景回波仿真
[0110] 星载SAR空间几何关系计算分为两部分,第一部分是通过已知的卫星轨道信息和六根数,求得场景中所有目标点在惯性坐标系下的坐标;第二部分是利用已求得的坐标和卫星在轨道上不断运动产生的真近心角变化,进而求得目标点此时刻在卫星天线坐标系下的坐标;对于上面两步,主要对第二步可采用并行的方式,对于求得每一个目标点的斜距和视角,相互之间不产生干扰;GPU在分配线程的时候可以分配与场景大小相同数量的线程,每一个线程处理一个目标点,当场景中点的个数太多时,实际的效果并不是申请的线程数越多计算效果就越好,在GPU计算能力还没有完全用到时,加速比较稳定,当GPU的计算能力已经完全用上时,场景越大,加速效果会越来越小;
[0111] 经过上一步的计算,已经得到了场景目标点在天线坐标系下的坐标,那么通过空间几何关系就可以得到目标点的斜距和角度信息;在计算斜距和角度、目标点所在距离门和方位向信号时,目标点之间相互没有影响,可以并行的进行计算;然而,在进行方位向信号回波叠加的时候不能采用上述的并行方法,因此将用串行的方式进行;CUDA中对相同存储地址中写入数据时提供了一个原子函数,保证线程之间的串行进行;在进行回波计算时,主要用到的原子函数是atomicFloatAdd函数;
[0112] 下面是回波部分并行程序的伪代码:
[0113]
[0114] 2)基于多GPU的星载SAR回波仿真算法
[0115] 基于多GPU的星载SAR回波仿真算法采用步骤2中提到的方法,每个GPU由不同的线程或者进程控制进行粗粒度的并行,而每个GPU负责方位向信号具体计算的细粒度并行,并且采用目标分块的方法,减少在计算过程中产生的冗余计算量,这样不但可以节省GPU显存的使用量,减少经济成本,又能提高程序的执行效率;
[0116] 步骤4、基于GPU深度优化的星载SAR回波仿真算法
[0117] 2)基于规约的GPU并行冲突优化
[0118] 在星载SAR模拟仿真的方位向回波累加过程中,存在两个不规则问题,第一个是积累的回波数量不一定,第二个是积累的回波可能来自非连续的分布目标;
[0119] 对于连续分布的一组数据,假设进行累加求和可以通过规约的方法得到结果,但是由于在星载SAR回波模拟过程中的特殊性,需要在进行规约之前进行数据整理;
[0120]
[0121] 式(8)中c为光速,R0为斜距,Rnear是近距点,fs是采样频率;
[0122] 根据式(8)计算出波束脚印内目标点所在的距离门,首先每一个目标点对应一个所在距离门所存储的地址序号,对于这个地址的计算是每计算一个点所在的距离门,该点在该距离门中的序号是之前已经在该距离门中的点的数量加1,那么如图6中第一个斜线填充的点所在距离门序号为1,第二个斜线填充的点所在距离门的序号为2,对于其他的距离门中的点类似;将所有点的距离门序号计算完成之后,根据距离门序号将计算出的回波信号存到相应的地址空间中,这时候每个距离门所对应的地址空间中的所有数据都是整齐的,然后再通过并行规约的方法进行求和;
[0123] 步骤5、基于CPU/GPU异构的星载SAR回波模拟深度并行优化
[0124] 将步骤2、3、4结合起来,采用了CPU+GPU的深度协同计算模式;CPU由于强大的控制核心以及多线程矢量化能力,不仅处理逻辑性较强的计算,还处理计算密度较大的计算,而GPU由于强大的算术计算单元处理计算密度大的计算,两者发挥各自优势,这种深度协同模式是对传统异构计算模式的深化,能够应用在很多通用领域;
[0125] 本系统通过PCIE进行数据传输,在构成异构系统的时候,CPU和GPU各自有独立的存储空间,数据通过PCIE进行传输,这种传输会存在较大的传输延时,但是根据程序本身,在进行优化时,通过流水线的技术合理的隐藏这部分传输时间;
[0126] 1)面向异构计算的星载SAR回波仿真任务分块方法
[0127] 本步骤使用的针对星载SAR回波仿真任务的分块方法与步骤1中提到的分块方法相似,在进行场景分块的时候需要根据波束脚印在场景块边缘多分出半个波束宽度,目的是为了保证波束在扫到场景块边缘的时候能够扫到所有需要的目标点信息,保证最后回波的正确性,与调度方法相结合,根据不同的调度策略合理的分配场景块的大小;
[0128] 2)面向异构计算的星载SAR回波仿真任务调度方法
[0129] 第一种是静态调度划分,也就是根据给定的分配比例进行划分,对于星载SAR回波模拟仿真使用4块相同的GPU进行仿真,将所有的方位向时刻按1:1:1:1:1的任务分配方式将任务分给不同的GPU和CPU进行处理,为了减少计算量对场景目标也进行相同的分块即可,每个GPU和CPU可以得到不同的场景块分别进行处理,最后由CPU收集计算的回波结果,所以回波模拟时间由最后一块计算完的计算设备GPU或者CPU的运行时间决定;
[0130] 第二种是基于任务池的动态任务调度划分,任务池中的任务中,1进程负责任务调度,2到5进程分别控制不同的计算单元,首先1进程将ABCD四个任务分给2到5进程,然后根据不同计算单元的计算完成时间再从任务池进行任务分配,直至任务池中所有的任务全部计算完成;由于在一开始是不需要将所有任务都分配下去的,所有在星载SAR回波模拟中的任务块要更小,场景块也应相应减小;
[0131] 第三种是通过实际计算效能进行分配的动态调度划分;这种方法与第二种的区别是,一开始将所有的任务分发下去,当一个进程任务先完成之后,暂停第二个进程的计算,然后根据两个计算单元在相同时间内完成的任务量计算出之后的任务分配,然后继续进行,经过动态分配达到计算能力的均衡利用;
[0132] 3)CPU/GPU协同加速的星载SAR回波实时模拟
[0133] 对于传统的CPU+GPU异构计算模式下,通常CPU是处理逻辑性较强的运算,而GPU是处理数据相对比较密集且适合并行进行的计算;本方法利用多线程矢量化扩展技术提升CPU的计算能力,更加有效的利用异构系统的计算性能,可以使得CPU和GPU同时参与计算;
[0134] 在CPU下用OpenMP+AVX和在4GPU下用原子加操作进行星载SAR回波模拟所用的时间相差不大,且通过对星载SAR的粗粒度分析得出,两者能够同时进行计算,分别处理不同的计算任务的;根据粗粒度进行任务的划分是根据方位向时刻来划分的,相互之间不会相互干扰,所以将不同的任务分别给多个GPU和CPU来进行同时计算是可行的,最后通过任务回收获得完整的回波信息;
[0135] 在星载SAR回波模拟仿真过程中,将任务分成两组,第一组由CPU进行计算,第二组由GPU进行计算;任务在任务池中进行分发,在内存中进行,然后CPU负责的计算从任务池中取出任务并通过OpenMP+AVX协同进行回波计算,而GPU负责的计算从任务池中取出任务交由不同的GPU进行多GPU并行处理;
[0136] CPU端的处理首先将任务从内存取出存入AVX寄存器中,然后通过AVX矢量化分别并行计算斜距历史、波束脚印判断和目标点回波计算,然后将计算结果返回内存,串行进行方位向回波信号的累加,最后通过与距离向卷积得到最后的回波信号,并根据开始从任务池中取出任务的序号存在相应的内存位置;
[0137] GPU的处理第一步跟CPU端的处理一致,CPU负责将任务取出并交由GPU进行处理,GPU通过并行的计算斜距历史、波束脚印判断、目标点回波计算和原子加操作得到方位向回波信号,然后通过与距离向信号的卷积得到最后的回波结果,最后通过开始从任务池中取出的任务序号放在相应的内存位置上;
[0138] 在程序的运行过程中通过单独的socket线程向用户传递信息。
[0139] 向用户传递信息包括仿真中间参数和仿真进度。
[0140] 从实验的结果分析,星载SAR回波模拟仿真非常适合通过高性能并行计算进行优化处理,并且可以达到很高的加速比。对于CPU下的并行,通过OpenMP处理粗粒度并行,AVX矢量化处理细粒度并行可以达到相比于串行35倍左右的加速效果。对于GPU下的并行,通过OpenMP或者MPI处理粗粒度并行,GPU处理细粒度并行可以达到相比于串行50倍左右的加速效果,本发明中提出通过数据整理和并行规约的方法进行在细粒度的方面进行深度优化,加速性能会进一步提升30%左右。步骤5结合前4个步骤,优化了CPU/GPU的协同处理模式,加速效果更为明显,通过实验验证相比于串行的加速效果可以达到80倍左右。