Ram Cherukuri,MathWorks
了解如何使用GPU编码器™ 使您能够在NVIDIA上加速信号和图像处理方面的高计算应用程序®GPU。使用SAR处理示例,我们将演示如何将模拟时间减少几个数量级。
GPU巨大的并行计算能力使各种高性能计算任务得以实现和加速。在这个视频中,我们将考虑如何应用于雷达应用,以及如何使用GPU编码器加速GPU上的此类应用。
我们将使用一个合成孔径雷达处理示例来说明这一点,因为SAR通常用于机载雷达,也用于汽车雷达应用。
SAR利用雷达天线在目标区域上的运动提供比传统波束扫描雷达更高的空间分辨率。
这里我们有三个点目标的原始回波数据,图中显示了天线的运动。
你可以从一个移动天线连续记录的用于照亮目标的脉冲的雷达回波中合成SAR图像。
这里我们有我们的算法,使用时域反向传播来构建三个点的SAR图像,注意该算法是高度并行的,由三个for循环组成。
因此,我们得到了三个点的预期SAR图像,但让我们注意处理时间。对于2000x10000大小的输入数据,该算法在我的桌面CPU上花费了大约3000秒。
为了利用该算法的并行性并在GPU上加速,我们将利用mex工作流,从该算法生成CUDA代码,并从MATLAB运行编译后的CUDA代码。
您可以看到,编译后的CUDA代码运行速度快了大约两个数量级。
代码生成报告提供了有关生成代码的其他详细信息和见解。
例如,这里的绿色突出显示表示生成的代码映射到GPU,在本例中,整个函数映射到GPU。
您可以在metrics报告中看到关于内核以及线程和块分配的其他详细信息。这里生成的代码只有一个内核,我们只使用四个块。
但我们的算法中有三个循环,有可能调整我们的算法,使其更具数据并行性。
通过简单地将这三行代码移动到内部循环,两个外部循环现在就完美地嵌套在一起,而不改变代码的行为。如果运行生成的mex,可以看到额外的10倍加速。您可以通过为内核代码指定额外的参数(如块大小)来进一步控制并行性。
现在更进一步,使用gpucoder。profile,我们可以profile和获得时间信息,让你探索相对的时间花在处理内核与时间花在移动数据从GPU来回。
这可以进一步帮助您确定更新应用程序以提高性能的更多方法。
这些相同的原理可用于加速其他信号处理和雷达应用以及计算机视觉和图像处理应用。
请参考视频下方的文档链接了解更多信息。
您还可以从以下列表中选择网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。