GPU Coder

为 NVIDIA GPU 生成 CUDA 代码

MATLAB® 的 GPU Coder™ 生成优化的 CUDA® 代码,用于深度学习、嵌入式视觉和自主系统。生成的代码会调用优化的 NVIDIA CUDA 库,包括 cuDNN、cuSolver 和 cuBLAS。该代码可以以源代码、静态库或动态库形式集成到您的项目中,而且可以用于在 NVIDIA Tesla® 和 NVIDIA Tegra® 等 GPU 上开发原型。您可以在 MATLAB 中使用生成的 CUDA 代码,加速 MATLAB 代码中计算量密集型部分。使用 GPU Coder,您还可以将既有 CUDA 代码整合到您的 MATLAB 算法和生成的代码中。

GPU Coder 与 Embedded Coder® 结合使用,可通过软件在环 (SIL) 测试验证生成代码的数值行为。

开始:

生成快速、灵活的 CUDA 代码

生成优化的 CUDA 代码。部署免特许费代码

部署免特许费算法

在流行的 NVIDIA GPU 上编译和运行生成的代码,从桌面系统到数据中心再到嵌入式硬件皆可。生成的代码免特许费 - 可免费部署在客户的商业应用中。

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

GPU Coder 成功案例

了解各行业工程师和科学家如何使用 GPU Coder 为其应用生成 CUDA 代码。

Airbus公司开发了缺陷自动检测原型用于NVIDIA Jetson TX2 平台。

从已支持的工具箱和函数生成代码

GPU Coder 可将范围广泛的 MATLAB 语言特性生成代码,设计工程师使用这些语言特性来为大型系统开发算法组件。这包括来自 MATLAB 以及配套工具箱的超过 390 个运算符和函数。

MATLAB 为代码生成提供的语言和工具箱支持。

整合既有代码

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

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

Generate CUDA Code from Simulink Models

Create models in Simulink and generate optimized CUDA code.

Run Simulations and Generate Optimized Code for NVIDIA GPUs

When used with Simulink Coder™, GPU Coder accelerates compute-intensive portions of MATLAB Function blocks in your Simulink models on NVIDIA GPUs. You can then generate optimized CUDA code from the Simulink model and deploy it to your NVIDIA GPU target.

Simulink model of a Sobel edge detector running on a GPU.

Deploy End-to-End Deep Learning Algorithms

Use a variety of trained deep learning networks (including ResNet-50, SegNet, and LSTM) from Deep Learning Toolbox™ in your Simulink model and deploy to NVIDIA GPUs. Generate code for preprocessing and postprocessing along with your trained deep learning networks to deploy complete algorithms.

Using ResNet-50 to classify an input image in Simulink.

Log Signals, Tune Parameters, and Numerically Verify Code Behavior

When used with Simulink Coder, GPU Coder enables you to log signals and tune parameters in real time using external mode simulations. Use Embedded Coder with GPU Coder to run software-in-the-loop and processor-in-the-loop tests that numerically verify the generated code matches the behavior of the simulation.

Use External Mode to log signals and tune parameters in Simulink.

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

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

部署端到端深度学习算法

从 Deep Learning Toolbox™ 到 NVIDIA GPU,部署各种经过训练的深度学习网络,如 ResNet-50 和 SegNet。生成用于预处理和后处理的代码以及经过训练的深度学习网络,以部署完整的算法。

部署 SegNet 和其他经过训练的深度学习网络。

为推理生成优化代码

与其他深度学习解决方案相比,GPU Coder 生成的代码占用空间较小,因为它仅生成你的算法运行推理所需的特定代码。生成的代码会调用优化的库,包括 TensorRT™ 和 cuDNN。

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

使用 TensorRT 进一步优化

生成代码,与 NVIDIA TensorRT(一种高性能深度学习推理优化器和运行时)集成。与标准 FP32 数据类型相比,使用 INT8 或 FP16 数据类型可获得额外性能提升。

通过 TensorRT 和 INT8 数据类型提高执行速度。

深度学习量化

使用 Model Quantization Library 支持包,将您的深度学习网络量化为 INT8,并分析选定层的权重和偏差因量化而发生的准确性取舍。

硬件原型实现

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

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

使用适用于 NVIDIA® GPU 的 GPU Coder™支持包,自动将生成的代码交叉编译和部署到 NVIDIA Jetson™ 和 DRIVE™ 平台上。

在 NVIDIA Jetson 平台上开发原型。

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

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

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

从原型到产品

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

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

Optimize the Generated Code

GPU Coder automatically optimizes the generated code. Use design patterns to further increase performance.

Minimize CPU-GPU Memory Transfers and Optimize Memory Usage

GPU Coder automatically analyzes, identifies, and partitions segments of MATLAB code to run on either the CPU or GPU. It also minimizes the number of data copies between CPU and GPU. Use profiling tools to identify other potential bottlenecks.

Profile reports identifying potential bottlenecks.

Invoke Optimized Libraries

Code generated with GPU Coder calls optimized NVIDIA CUDA libraries, including TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS, and Thrust. Code generated from MATLAB toolbox functions are mapped to optimized libraries whenever possible.

Generated code calling functions in the optimized cuFFT CUDA library.

Use Design Patterns for Further Acceleration

Design patterns such as stencil processing use shared memory to improve memory bandwidth. They are applied automatically when using certain functions such as convolution. You can also manually invoke them using specific pragmas.

The stencil processing design pattern.

加速算法

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

使用 GPU 加速算法

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

Accelerate Simulink Simulations Using NVIDIA GPUs

When used with Simulink Coder, GPU Coder accelerates compute-intensive portions of MATLAB Function blocks in your Simulink models on NVIDIA GPUs.

最新特性

Simulink Support

Generate, build, and deploy Simulink models to NVIDIA GPUs

Deep Learning Simulink Support

Generate, build, and deploy deep learning networks in Simulink models to NVIDIA GPUs

Persistent Variables

Create persistent memory on the GPU

Wavelet Toolbox Code Generation

Generate code for FFT-based FIR filtering and Short-time Fourier transform using dwt, dwt2, modwt, and modwtmra

Deep Learning

Generate code for custom layers

Multi-Input Networks

Generate code for networks that have multiple inputs

Long Short-Term Memory (LSTM) Networks

Generate code for convolutional LSTM and network activations

IO Block Library for NVIDIA Hardware

Access NVIDIA hardware peripherals using GPU Coder Support Package for NVIDIA GPUs

See the release notes for details on any of these features and corresponding functions.