GPU Coder

 

GPU Coder

为 NVIDIA GPU 生成 CUDA 代码

开始:

生成快速、灵活的 CUDA 代码

生成优化的 CUDA 代码。免版权费部署代码。

免版权费部署算法

在主流 NVIDIA GPU 上编译和运行生成的代码,无论是桌面系统、数据中心还是嵌入式硬件皆可。生成的代码免版权费,您可将其免费部署到面向客户的商用应用。

深入了解图片库(2 张图像)

空中客车在 NVIDIA Jetson TX2 上进行自动缺陷检测原型开发。

使用支持的工具箱和函数生成代码

GPU Coder 可使用多种 MATLAB 语言功能生成代码,设计工程师基于这些功能开发算法以用作大型系统组件。这包括来自 MATLAB 以及配套工具箱的数百个运算符和函数。

MATLAB 语言和工具箱支持代码生成。

整合既有代码

使用既有代码集成功能,将受信任的或高度优化的 CUDA 代码整合到您的 MATLAB 算法中,以在 MATLAB 中进行测试。然后,您就可以从生成的代码调用这些 CUDA 代码。

将现有 CUDA 代码整合到生成的代码中。

从 Simulink 模型生成 CUDA 代码

在 Simulink 中创建模型并生成优化的 CUDA 代码。

运行仿真并为 NVIDIA GPU 生成优化的代码

您可以将 GPU Coder 与 Simulink Coder™ 结合使用,以在 NVIDIA GPU 上加速 Simulink 模型中 MATLAB Function 模块的计算密集型部分。然后,您可以从 Simulink 模型生成优化的 CUDA 代码,并将其部署到您的 NVIDIA GPU 目标。

在 GPU 上运行的 Sobel 边缘检测器 Simulink 模型。

部署端到端深度学习算法

Deep Learning Toolbox™ 提供各种经过训练的深度学习网络,包括 ResNet-50、SegNet 和 LSTM,您可以在 Simulink 模型中使用这些网络,并将其部署到 NVIDIA GPU。除了经过训练的深度学习网络,您还可以同时为预处理和后处理生成代码,以部署完整的算法。

记录信号、调整参数并验证代码的数值行为

您可以将 GPU Coder 与 Simulink Coder 结合使用,以使用外部模式仿真实时记录信号和调整参数。将 GPU Coder 与 Embedded Coder 结合使用,则可以运行软件在环测试和处理器在环测试,这些测试可以验证生成代码的数值行为是否与仿真的行为一致。

从深度学习网络生成 CUDA 代码

使用 Deep Learning Toolbox 部署经过训练的深度学习网络。

部署端到端深度学习算法

将 Deep Learning Toolbox 提供的各种经过训练的深度学习网络(包括 ResNet-50、SegNet 和 LSTM)部署到 NVIDIA GPU。您可以使用预定义的深度学习层,也可以针对特定应用自定义层。除了经过训练的深度学习网络,您还可以同时为预处理和后处理生成代码,以部署完整的算法。

针对推断生成优化代码

与其他深度学习解决方案相比,GPU Coder 生成的代码占用的内存较少,因为它仅生成您的算法运行推断所需的代码。生成的代码会调用优化的库,包括 TensorRT 和 cuDNN。

在使用 cuDNN 的 Titan V GPU 上通过 VGG-16 进行单图像推断。

使用 TensorRT 进一步优化

生成代码以实现 NVIDIA TensorRT 集成,这是一个高性能的深度学习推断优化器和运行时环境。相比标准 FP32 数据类型,使用 INT8 或 FP16 数据类型可实现进一步的性能提升。

综合运用 TensorRT 和 INT8 数据类型提高执行速度。

深度学习量化

量化您的深度学习网络,以减少内存使用并增强推断性能。使用深度网络量化器,对性能与推断准确性之间的权衡进行分析和可视化。

优化生成的代码

GPU Coder 可自动优化所生成的代码。使用设计模式进一步提升性能。

最大限度地减少 CPU-GPU 内存传输并优化内存使用

GPU Coder 可对 MATLAB 代码段进行自动分析、识别和分区,以分别在 CPU 或 GPU 上运行。它还最大程度地减少了 CPU 与 GPU 之间的数据副本量。使用性能分析工具确定其他潜在瓶颈。

性能分析报告识别出潜在的瓶颈。

调用优化库

使用 GPU Coder 生成的代码会调用优化的 NVIDIA CUDA 库,包括 TensorRT、cuDNN、cuSolver、cuFFT、cuBLAS 和 Thrust。从 MATLAB 工具箱函数生成的代码也会尽可能映射到优化库。

生成的代码,其中调用了优化的 cuFFT CUDA 库中的函数。

使用设计模式进一步加速

设计模式(如模板处理)使用共享内存来提高内存带宽。使用某些函数(如卷积)时,将自动应用设计模式。您还可以使用特定编译控制指令手动调用它们。

模板处理设计模式。

硬件原型

将算法自动转换为 CUDA 代码,以快速访问硬件。

在 NVIDIA Jetson 和 DRIVE 平台上开发原型

使用 GPU Coder Support Package for NVIDIA GPUs,自动将生成的代码交叉编译和部署到 NVIDIA Jetson 和 DRIVE 平台上。

在 NVIDIA Jetson 平台上开发原型。

通过 MATLAB 和生成的代码访问外设和传感器

通过 MATLAB 与 NVIDIA 目标进行远程通信,从网络摄像头和其他支持的外设获取数据,以便进行早期原型开发。将您的算法与外设接口代码一起部署到板卡,以便独立执行。

通过 MATLAB 和生成的代码访问外设和传感器。

从原型到生产

将 GPU Coder 与 Embedded Coder 结合使用,以交互方式在 MATLAB 代码与生成的 CUDA 代码之间进行追溯。通过软件在环 (SIL) 和处理器在环 (PIL) 测试,验证在硬件上运行的生成代码的数值行为。

结合使用 GPU Coder 和 Embedded Coder,生成交互式可追溯性报告。

加速算法

生成 CUDA 代码并进行编译以在 MATLAB 和 Simulink 内使用。

在 MATLAB 中使用 GPU 加速算法

在 MATLAB 代码中以 MEX 函数的形式调用生成的 CUDA 代码以加速执行,不过性能将因 MATLAB 代码本身的特性而异。对生成的 MEX 函数开展性能分析,以确定瓶颈并重点优化。

使用 NVIDIA GPU 加速 Simulink 仿真

您可以将 GPU Coder 与 Simulink Coder 结合使用,以在 NVIDIA GPU 上加速 Simulink 模型中 MATLAB Function 模块的计算密集型部分。