GPU Coder

NVIDIA GPU のための CUDA コードを生成

GPU Coder™ は、ディープラーニング、組み込みビジョン、および自律システムのための最適化された CUDA® コードを MATLAB® コードから生成します。生成されたコードは、cuDNN、cuSolver、および cuBLAS などの最適化された NVIDIA CUDA ライブラリを呼び出します。それらをソースコード、スタティック ライブラリ、またはダイナミック ライブラリとしてプロジェクトに統合し、NVIDIA Tesla® や NVIDIA Tegra® のような GPU でのプロトタイピングに使用することができます。生成された CUDA を MATLAB 内で使用して、MATLAB コードの大量の計算を必要とする部分を高速化できます。GPU Coder を使用すると、既存の CUDA コードを MATLAB アルゴリズムおよび生成されたコードに組み込むことができます。

Embedded Coder® と共に使用すると、GPU Coder ではソフトウェアインザループ (SIL) テストを実行して、生成したコードの数値的動作を検証できます。

詳細を見る:

高速かつ配布可能な CUDA コードの生成

最適化された CUDA コードを生成。コード配布は無償です。

アルゴリズムの配布が無償

デスクトップシステムやデータセンター、組み込みハードウェアなどの一般的な NVIDIA GPU で、生成したコードをコンパイルして実行します。生成したコードはロイヤリティフリーなので、商用アプリケーションで顧客に無料配布することができます。

ギャラリーを探す (2 画像)

GPU Coder のユーザー事例

さまざまな産業分野のエンジニアや研究者がアプリケーションの CUDA コードの生成に GPU Coder を使用しています。

AirbusがNVIDIA Jetson TX2上で自動欠陥検出をプロトタイプ.

サポートされているツールボックスと関数からコードを生成

MATLAB 言語の幅広い機能を使用して GPU Coder で生成されるコードにより、設計エンジニアは大規模システムのコンポーネントとして使用するアルゴリズムを開発できます。MATLAB および関連ツールボックスから 390 以上の演算子と関数を利用できます。

コード生成のための MATLAB 言語とツールボックスのサポート

レガシーコードの統合

レガシーコードの統合機能を使用して、信頼された、または高度に最適化された CUDA コードを 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 を使用した学習済みディープラーニング ネットワークの展開

エンドツーエンドのディープラーニング アルゴリズムの展開

ResNet-50 や SegNet などのさまざまな学習済みディープラーニング ネットワークを Deep Learning Toolbox™ から NVIDIA GPU に展開します。前処理と後処理用のコードを学習済みディープラーニング ネットワークと共に生成して、完成したアルゴリズムを展開します。

SegNet などの学習済みディープラーニング ネットワークを展開

推論に最適化されたコードを生成

GPU Coder は特定のアルゴリズムでの推論を実施するために必要なコードのみを生成するので、他のディープラーニング ソリューションと比べて小さいフットプリントを持つコードを生成します。生成されたコードは、TensorRT™ や cuDNN などの最適化されたライブラリを呼び出します。

cuDNN を使用して Titan V GPU 上の VGG-16 で単一の画像を推論

TensorRT を使用してさらに最適化

ディープラーニングでの推論を高性能に最適化して実行する、NVIDIA TensorRT と統合するコードを生成します。標準の FP32 データタイプを超える性能改善のため、INT8 または FP16 データタイプを選択できます。

TensorRT と INT8 データタイプで実行速度を改善

ディープラーニングの量子化

ディープラーニング ネットワークを int8 に量子化し、Model Quantization Library のサポート パッケージを使用して、選択した層の重みとバイアスを量子化する精度のトレードオフを解析します。

ハードウェアでのプロトタイピング

アルゴリズムの CUDA コードへの自動変換によりハードウェアに迅速に展開

NVIDIA Jetson および DRIVE プラットフォームでのプロトタイピング

GPU Coder™ Support Package for NVIDIA® GPU を使用して、生成されたコードを NVIDIA Jetson™ と DRIVE™ プラットフォームで自動的にクロスコンパイルして展開します。

NVIDIA Jetson プラットフォームでのプロトタイピング

MATLAB と生成されたコードから周辺機器とセンサーにアクセス

MATLAB から NVIDIA ターゲットへリモートで通信して、Web カメラや他のサポートされる周辺機器から初期プロトタイピングのためデータを収集します。周辺機器のインターフェイス コードと共にアルゴリズムを構築してボードへ展開し、スタンドアロンの実行を可能にします。

MATLAB と生成されたコードからの周辺機器とセンサーへのアクセス

プロトタイピングから量産への移行

Embedded Coder® と共に GPU 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 を使用したアルゴリズムの高速化

生成した CUDA コードを MEX 関数として MATLAB コードから呼び出すと実行速度が向上しますが、実際のパフォーマンスは 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.