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