GPU Coder™ 可从 MATLAB® 代码和 Simulink® 模型生成优化的 CUDA® 代码。所生成的代码包含 CUDA 内核,针对深度学习、嵌入式视觉和信号处理算法的可并行化部分。为了提高性能,生成的代码会调用优化的 NVIDIA® CUDA 库,包括 TensorRT™、cuDNN、cuFFT、cuSolver 和 cuBLAS。您可以将这些代码作为源代码、静态库或动态库集成到您的项目,也可以针对桌面、服务器和嵌入到 NVIDIA Jetson™、NVIDIA DRIVE™ 及其他平台的 GPU 进行编译。您可以使用在 MATLAB 中生成的 CUDA 代码,对深度学习网络以及算法中的其他计算密集型部分进行加速。使用 GPU Coder,您可以将手写 CUDA 代码整合到您的 MATLAB 算法和生成的代码中。
您可以将 GPU Coder 与 Embedded Coder® 结合使用,以通过软件在环 (SIL) 测试和处理器在环 (PIL) 测试验证生成代码的数值行为。
开始:
免版权费部署算法
在主流 NVIDIA GPU 上编译和运行生成的代码,无论是桌面系统、数据中心还是嵌入式硬件皆可。生成的代码免版权费,您可将其免费部署到面向客户的商用应用。
GPU Coder 成功案例
了解各行各业的工程师和科学家如何使用 GPU Coder 为应用生成 CUDA 代码。
使用支持的工具箱和函数生成代码
GPU Coder 可使用多种 MATLAB 语言功能生成代码,设计工程师基于这些功能开发算法以用作大型系统组件。这包括来自 MATLAB 以及配套工具箱的数百个运算符和函数。
整合既有代码
使用既有代码集成功能,将受信任的或高度优化的 CUDA 代码整合到您的 MATLAB 算法中,以在 MATLAB 中进行测试。然后,您就可以从生成的代码调用这些 CUDA 代码。
运行仿真并为 NVIDIA GPU 生成优化的代码
您可以将 GPU Coder 与 Simulink Coder™ 结合使用,以在 NVIDIA GPU 上加速 Simulink 模型中 MATLAB Function 模块的计算密集型部分。然后,您可以从 Simulink 模型生成优化的 CUDA 代码,并将其部署到您的 NVIDIA GPU 目标。
部署端到端深度学习算法
Deep Learning Toolbox™ 提供各种经过训练的深度学习网络,包括 ResNet-50、SegNet 和 LSTM,您可以在 Simulink 模型中使用这些网络,并将其部署到 NVIDIA GPU。除了经过训练的深度学习网络,您还可以同时为预处理和后处理生成代码,以部署完整的算法。
记录信号、调整参数并验证代码的数值行为
您可以将 GPU Coder 与 Simulink Coder 结合使用,以使用外部模式仿真实时记录信号和调整参数。将 GPU Coder 与 Embedded Coder 结合使用,则可以运行软件在环测试和处理器在环测试,这些测试可以验证生成代码的数值行为是否与仿真的行为一致。
部署端到端深度学习算法
将 Deep Learning Toolbox 提供的各种经过训练的深度学习网络(包括 ResNet-50、SegNet 和 LSTM)部署到 NVIDIA GPU。您可以使用预定义的深度学习层,也可以针对特定应用自定义层。除了经过训练的深度学习网络,您还可以同时为预处理和后处理生成代码,以部署完整的算法。
针对推断生成优化代码
与其他深度学习解决方案相比,GPU Coder 生成的代码占用的内存较少,因为它仅生成您的算法运行推断所需的代码。生成的代码会调用优化的库,包括 TensorRT 和 cuDNN。
使用 TensorRT 进一步优化
生成代码以实现 NVIDIA TensorRT 集成,这是一个高性能的深度学习推断优化器和运行时环境。相比标准 FP32 数据类型,使用 INT8 或 FP16 数据类型可实现进一步的性能提升。
深度学习量化
量化您的深度学习网络,以减少内存使用并增强推断性能。使用深度网络量化器,对性能与推断准确性之间的权衡进行分析和可视化。
最大限度地减少 CPU-GPU 内存传输并优化内存使用
GPU Coder 可对 MATLAB 代码段进行自动分析、识别和分区,以分别在 CPU 或 GPU 上运行。它还最大程度地减少了 CPU 与 GPU 之间的数据副本量。使用性能分析工具确定其他潜在瓶颈。
调用优化库
使用 GPU Coder 生成的代码会调用优化的 NVIDIA CUDA 库,包括 TensorRT、cuDNN、cuSolver、cuFFT、cuBLAS 和 Thrust。从 MATLAB 工具箱函数生成的代码也会尽可能映射到优化库。
使用设计模式进一步加速
设计模式(如模板处理)使用共享内存来提高内存带宽。使用某些函数(如卷积)时,将自动应用设计模式。您还可以使用特定编译控制指令手动调用它们。
在 NVIDIA Jetson 和 DRIVE 平台上开发原型
使用 GPU Coder Support Package for NVIDIA GPUs,自动将生成的代码交叉编译和部署到 NVIDIA Jetson 和 DRIVE 平台上。
通过 MATLAB 和生成的代码访问外设和传感器
通过 MATLAB 与 NVIDIA 目标进行远程通信,从网络摄像头和其他支持的外设获取数据,以便进行早期原型开发。将您的算法与外设接口代码一起部署到板卡,以便独立执行。
从原型到生产
将 GPU Coder 与 Embedded Coder 结合使用,以交互方式在 MATLAB 代码与生成的 CUDA 代码之间进行追溯。通过软件在环 (SIL) 和处理器在环 (PIL) 测试,验证在硬件上运行的生成代码的数值行为。
在 MATLAB 中使用 GPU 加速算法
在 MATLAB 代码中以 MEX 函数的形式调用生成的 CUDA 代码以加速执行,不过性能将因 MATLAB 代码本身的特性而异。对生成的 MEX 函数开展性能分析,以确定瓶颈并重点优化。
使用 NVIDIA GPU 加速 Simulink 仿真
您可以将 GPU Coder 与 Simulink Coder 结合使用,以在 NVIDIA GPU 上加速 Simulink 模型中 MATLAB Function 模块的计算密集型部分。