主要内容

加速度的杂波模拟使用GPU和代码生成

这个例子展示了如何模拟杂波图形处理单元(GPU)或通过代码生成(墨西哥人)而不是MATLAB™翻译。示例应用样本矩阵求逆(SMI)算法,一个流行的时空适应性处理(堵塞)技术,通过一个机载雷达接收到的信号six-element均匀线性阵列(ULA)”。关注的例子比较GPU之间的杂波模拟的性能,代码生成,MATLAB翻译。你可以找到的细节的算法仿真和例子介绍自适应时空处理

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

杂波模拟

雷达系统工程师经常需要模拟杂波返回测试信号处理算法,如阻止算法。然而,生成一个高保真杂乱返回包括很多步骤,因此往往需要大量的计算。例如,constantGammaClutter模拟了杂乱使用以下步骤:

  1. 整个地形划分为杂乱的小块。补丁的大小取决于方位补丁跨度和距离分辨率。

  2. 对于每个块,计算其相应的参数,如随机回报,掠射角,天线阵增益。

  3. 结合回报所有杂物补丁生成的杂波总回报。

杂乱补丁的数量取决于地形覆盖,但它通常是在数千甚至数百万个。此外,上面所有步骤需要执行对每个脉冲(假定使用脉冲雷达)。因此,杂波仿真通常是高极系统仿真。

为了提高杂波仿真的速度,一个可以利用并行计算。注意杂物回来后可能取决于脉冲信号中产生脉冲早些时候,所以某些并行MATLAB提供的解决方案,如金宝搏官方网站parfor,并不总是适用。然而,由于每个补丁的计算是独立于计算在其他补丁,它适合GPU加速。

如果你有一个支持GPU和访问金宝app并行计算工具箱,然后你可以利用GPU的生成杂波返回使用gpuConstantGammaClutter而不是constantGammaClutter。在大多数情况下,使用一个gpuConstantGammaClutter系统对象™是唯一你需要做出改变。

如果你有使用MATLAB编码器,你也可以加快杂波模拟生成C代码的ConstantGammaClutter编译的版本,编译和运行。在代码生成模式下运行时,这个例子中编译stapclutter使用codegen命令:

codegen (“stapclutter”,“参数”,…{coder.Constant (maxRange)……coder.Constant (patchAzSpan)});

c的所有属性值onstantGammaClutter必须作为常量值传递。codegen命令将生成墨西哥人文件,stapclutter_mex,称在一个循环中。

杂波仿真时间计时

比较杂乱的MATLAB仿真性能之间的翻译,代码生成,和GPU,推出以下GUI通过输入stapcpugpu在MATLAB命令行。启动GUI是如下图所示。

左边的GUI包含四个情节,显示接收到的原始信号,angle-Doppler响应接收的信号,信号处理,angle-Doppler响应的堵塞处理权重。可以找到的细节处理涉及的例子介绍自适应时空处理。右边的GUI,您控制杂乱补丁的数量通过修改杂乱补丁跨度方向方位(度)和最大杂波距离(公里)。然后您可以单击开始按钮来启动模拟,模拟5相干处理间隔(CPI),每个CPI包含10个脉冲。处理过的信号和CPI angle-Doppler响应更新一次。

下一节展示了不同的模拟运行时间。在这些模拟,每个脉冲由200范围内样品50米的距离分辨率。组合的杂乱补丁跨度和杂乱的最大范围导致各种数量总杂乱的补丁。例如,一片杂乱跨度10度,最高的杂物射程5公里意味着3600杂乱补丁。模拟是进行系统配置如下:

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

  • GPU:特斯拉C2075 6 GB内存

计时结果如下图所示。

helperCPUGPUResultPlot

图包含6轴对象。坐标轴对象1包含3条类型的对象。坐标轴对象2包含3条类型的对象。坐标轴对象3标题杂波仿真时间图表包含对象类型的酒吧。这些对象代表MATLAB,墨西哥人,GPU。坐标轴对象4包含对象类型的酒吧,线。坐标轴对象5包含4对象类型的酒吧,线。坐标轴对象6包含2线类型的对象。这些对象代表GPU加速,墨西哥人加速。

从图中,可以看到,一般几十次的GPU提高仿真速度,有时甚至几百次。两个有趣的观察是:

  • 当混乱补丁的数量很小,只要数据可以适合GPU内存,GPU的性能几乎保持不变。相同的MATLAB翻译是不正确的。

  • 一旦混乱补丁的数量变大,数据不再适合GPU内存。因此,加快GPU在MATLAB提供的翻译开始减少。然而,对于接近十数以百万计的杂乱补丁,GPU仍然提供了一个超过50倍的加速。

仿真速度改善由于代码生成小于GPU的速度提高,但仍然是重要的。代码生成的constantGammaClutterprecalculates收集杂乱的常量值的数组。大量的杂物补丁,数组的大小变得太大,从而减少的速度改进内存管理的开销。代码生成需要访问MATLAB编码器但不需要特殊的硬件。

其他模拟计时结果

虽然在这个例子中使用的模拟计算数以百万计的杂乱补丁,结果数据立方体的大小200 - 6 - 10,显示只有200范围样本在每个脉冲,6通道,和10个脉冲。这个数据立方体是小相比,真正的问题。本例中选择这些参数显示,你可以受益于使用GPU或代码生成同时确保MATLAB中的示例运行在一个合理的时间内翻译。一些大的数据立方体大小模拟产生以下结果:

  • 45-fold使用GPU加速的模拟生成50个脉冲50-element齿龈5000范围样本在每个脉冲,即。,5000 - 50 - 50的数据立方体。10米距离分辨率。雷达总建筑面积60度的方位,与每个杂乱补丁1度。最大的杂乱范围50公里。杂乱的补丁的总数是305000。

  • 60倍加速使用GPU的模拟像上面,除了180度方位覆盖和最大杂乱范围等于视界范围(约130公里)。在这种情况下,混乱补丁的总数是2356801。

总结

这个例子比较了性能通过模拟杂波返回使用MATLAB解释器,GPU,或者代码生成。结果表明,GPU和代码生成提供大速度提升了MATLAB翻译。