主要内容

工作流

  1. GPU Coder™依赖于MATLAB®编码器™因此,故障排除过程的第一步是确保您有MATLAB编码器兼容的代码。的编程需求和最佳实践MATLAB编码器,请参阅代码生成的MATLAB编程

  2. GPU Coder对兼容的函数有不同的支持MATLAB编码器和图像处理工具箱™。提供了一个功能列表,已测试与GPU CoderGPU的MATLAB算法设计.这些函数分为完全支持的函数、不支持的函数和在特定条件下支持的函数。例如,有些函数在基于向量的操作中工作,但在循环体中使用时就不能。然而,建议在可能的情况下用纯MATLAB重写工具箱函数。

  3. GPU Coder使用程序并行性分析来检测for循环的并行性。传统的串行算法在可并行性方面差异很大。有些问题是令人尴尬的平行的,很容易被分成几个部分。另一方面,有些算法需要进行一些重构来暴露其固有的并行性。GPU Coder执行的并行分析是保守的。因此,在某些情况下,循环确实是并行的,但依赖分析无法检测到并行性。

  4. 必须静态绑定循环以确定内核尺寸。例如,虽然循环、带有break语句的循环和迭代范围不能静态确定的循环不容易映射到CUDA®内核,必须重写。有关更多信息,请参阅内核分析部分。

  5. 在考虑并纠正了这些问题之后,现在就可以生成CUDA代码了。完成代码生成的最简单方法是插入pragmacoder.gpu.kernelfun进入到入口点函数。然后可以按照中描述的步骤进行操作开始使用GPU Coder从命令行或使用GPU Coder应用程序生成CUDA代码。

  6. 为了评估生成的CUDA代码的性能,我们可以使用MATLAB抽搐而且toc函数并确定执行时间。如果产生的GPU加速不令人满意,你可以执行以下高级诊断:

    • 内核分析

    • 内存瓶颈分析

    • 使用NVIDIA Visual Profiler进行分析(nvvp)工具

相关的话题

Baidu
map