主要内容

使用GPU和代码生成加速杂波仿真

此示例显示如何在图形处理单元(GPU)上或通过代码生成(MEX)而不是MATLAB解释器模拟杂波。该示例应用样品矩阵反转(SMI)算法,流行的空间时间自适应处理(STAP)技术之一,通过使用6元件均匀的线性阵列(ULA)由机载雷达接收的信号。该示例侧重于比较GPU,代码生成和MATLAB解释器之间的杂波模拟性能。有兴趣的读者可以在示例中找到仿真和算法的详细信息时空自适应处理简介

此示例的完整功能需要并行计算工具箱™和MATLAB编码器™。

杂乱仿真

雷达系统工程师经常需要模拟杂波返回测试信号处理算法,例如STAP算法。然而,生成高保真杂波返回涉及许多步骤,因此通常是计算昂贵的。例如,ConstantGammacluttutht使用以下步骤模拟杂乱:

  1. 将整个地形划分为小杂波斑块。补丁的大小取决于方位角修补程序跨度和范围分辨率。

  2. 对于每个补丁,计算其相应的参数,例如随机返回,放牧角度和天线阵列增益。

  3. 组合来自所有杂波修补程序的返回,以生成总杂波返回。

杂波贴片的数量取决于地形覆盖范围,但它通常在数千万到百万的范围内。另外,需要对每个脉冲进行上述所有步骤(假设使用脉冲雷达)。因此,杂波仿真通常是系统仿真中的高杆。

为了提高杂波仿真的速度,可以利用并行计算。请注意,从以后的脉冲返回的杂波可以取决于早期脉冲中产生的信号,因此Matlab提供的某些并行解决方案,例如金宝搏官方网站议案,并不总是适用。但是,由于每个补丁的计算与其他贴片的计算无关,所以它适用于GPU加速度。

如果您有支持的GPU并访问并金宝app行计算工具箱,则可以利用GPU通过使用生成杂乱返回GpuconstantGammaclutter而不是C.OnstantGammaclutter。在大多数情况下,使用aGpuconstantGammaclutter系统对象是您需要的唯一更改。

如果您可以访问Matlab编码器,您还可以通过为C生成C代码来加速杂波仿真OnstantGammaclutter,编译它并运行编译版本。在代码生成模式下运行时,此示例编译Stapclutter使用codegen命令:

codegen('stapclutter',' -  args',... {coder.constant(maxrange),...编码器.constant(patchazspan)});

C的所有属性值OnstantGammaclutter必须作为常数值传递。Codegen命令将生成MEX文件stapclutter_mex,该文件将在循环中调用。

比较杂波模拟时间

要比较Matlab解释器,代码生成和GPU之间的杂波仿真性能,通过键入启动以下GUIStapcpugpu.在matlab命令行中。推出的GUI如下图所示:

GUI的左侧包含四个图形,示出了RAG接收信号,接收信号的角度 - 多普勒响应,处理信号和STAP处理权重的角度 - 多普勒响应。同样,细节可以在示例中找到时空自适应处理简介。在GUI的右侧,通过修改方位方向(以度)和最大杂波(IM)修改杂波贴片跨度来控制杂波贴片的数量。然后,您可以单击“开始”按钮开始模拟,这会模拟每个CPI包含10个脉冲的5个相干处理间隔(CPI)。每次CPI都会更新处理的信号和角度多普勒响应。

下一节显示了不同模拟运行的时序。在这些模拟中,每个脉冲由200个范围样本组成,范围分辨率为50米。杂波贴片跨度的组合和最大杂波范围导致各种总杂波贴片。例如,杂波贴片跨度为10度,最大杂波范围为5km意味着3600杂波贴片。模拟是在以下系统配置上执行的:

  • CPU:Xeon X5650,2.66 GHz,24 GB内存

  • GPU:Tesla C2075,6 GB内存

定时结果如下图所示。

Helpercpugpuliteultplot.

图包含6个轴。轴1包含3型栏的物体。轴2包含3型栏的3个物体。带有标题杂波仿真时间图的轴3包含3个类型栏的3个对象。这些对象代表MATLAB,MEX,GPU。轴4包含4型杆,线路的4个物体。轴5包含4型杆,线路的4个物体。轴6包含2个类型的物体。这些对象代表GPU加速,MEX加速。

从图中,您可以看到通常,GPU通过几十次提高模拟速度,有时甚至百次。两个有趣的观察是:

  • 当杂波块的数量很小时,只要数据可以拟合到GPU内存中,GPU的性能几乎是恒定的。Matlab解释器也不是真的。

  • 一旦杂波修补程序的数量变大,数据就无法再符合GPU存储器。因此,GPU在MATLAB解释器上提供的加速开始减少。然而,为了接近10万次杂波贴片,GPU仍然提供了50倍的加速度。

代码生成引起的仿真速度提高小于GPU速度改善,但仍然是显着的。代码生成ConstantGammaclutter预先计算收集的杂波作为恒定值的阵列。对于较大数量的杂波贴片,阵列的大小变得太大,因此降低了由于内存管理的开销引起的速度改善。代码生成需要访问MATLAB编码器,但不需要特殊的硬件。

其他模拟时序结果

尽管在该示例中使用的模拟来计算数百万杂波贴片,所得到的数据立方体的尺寸为200x6x10,表示每个脉冲,6个通道和10个脉冲内的200范围样本。与真正的问题相比,这种数据立方体很小。此示例选择这些参数以显示您可以使用GPU或代码生成获得的好处,同时确保示例在Matlab解释器中的合理时间内运行。具有较大数据多维数据集大小的一些模拟产生以下结果:

  • 使用GPU的45倍加速,用于模拟,用于为50元元ULA生成50个脉冲,每个脉冲中有5000个范围样本,即5000x50x50数据立方体。范围分辨率为10米。雷达覆盖了总方位角60度,每个杂波贴片中的1度。最大杂波范围为50公里。杂波斑块的总数为305,000。

  • 使用GPU进行60倍的加速,以类似于上面的模拟,除了180度方位覆盖和等于地平线范围的最大杂波范围(约130公里)。在这种情况下,杂波贴片的总数为2,356,801。

概括

此示例比较通过使用MATLAB解释器,GPU或代码生成模拟杂波返回来实现的性能。结果表明GPU和代码生成提供了对Matlab解释器的大速度改进。