GPU Coder

生成された CUDA コードを示すコード生成レポート。

MATLAB からの CUDA コードの生成

デスクトップ RTX カードから、データセンター、組み込みの Jetson や DRIVE プラットフォームに至るまで、広く利用されている NVIDIA GPU 上で MATLAB アルゴリズムから生成された CUDA コードをコンパイルおよび実行します。生成されたコードを無償で顧客に展開します。

車線および車両検出器の Simulink モデル。

Simulink からの CUDA コードの生成

Simulink Coder を GPU Coder と共に使用して、Simulink モデルから CUDA コードを生成し、NVIDIA GPU に展開します。Simulink シミュレーションの計算量の多い部分を NVIDIA GPU 上で高速化します。

NVIDIA Jetson プラットフォームの写真。

NVIDIA Jetson および DRIVE への展開

GPU Coder は、生成されたコードの NVIDIA Jetson および DRIVE プラットフォームへの展開を自動化します。周辺機器にアクセスし、センサーデータを取得し、周辺機器のインターフェイス コードと共にアルゴリズムをボードに展開し、スタンドアロンでの実行を可能にします。

Simulink の車両および車線検出アプリケーションの一部として使用する道路交通を示す 2 つのカメラビュー。

ディープラーニング用コードの生成

事前定義またはカスタマイズされたさまざまなディープラーニング ネットワークを NVIDIA GPU に展開します。前処理と後処理用のコードを学習済みディープラーニング ネットワークのコードと共に生成して、アルゴリズム全体を展開します。

FP32 と INT8 データ型を使用した場合の 1 秒毎の画像数の増加を示す “Inference with ResNet-50” (ResNet-50 による推論) というタイトルの棒グラフ。

生成コードの最適化

GPU Coder では、メモリ管理、カーネル融合、および自動調整などの最適化が自動的に適用されます。INT8 または bfloat16 コードの生成によりメモリフットプリントを低減します。TensorRT との統合によりパフォーマンスがさらに高まります。

生成されたコードのプロファイリング情報を示す GPU パフォーマンス アナライザー ツールのレポート。

生成コードのプロファイリングと解析

GPU パフォーマンス アナライザーを使用して、生成された CUDA コードをプロファイリングし、実行速度とメモリフットプリントをさらに向上させる機会を特定します。

ステンシル処理の設計パターンがどのように機能するかを概念レベルで示す図。

設計パターンを使用してパフォーマンスを向上

ステンシル処理や削減などの設計パターンは、利用可能な場合には生成コードのパフォーマンスを向上させるために自動的に適用されます。また、特定のプラグマを使用して手動で呼び出すこともできます。

MATLAB コードと生成された CUDA コード間の対話的な双方向のトレーサビリティを示す、コード生成レポート。

信号のロギング、パラメーターの調整、コード動作の検証

Simulink Coder を GPU Coder と共に使用して、リアルタイムで信号をロギングし、パラメーターを調整します。Embedded Coder の追加により、MATLAB と生成された CUDA コード間を対話的にトレースし、生成された CUDA コードの動作を SIL テストで数値的に検証します。

高速化のために GPU Coder と NVIDIA GPU を使用した ECG 予測アルゴリズムの Simulink モデル。

MATLAB および Simulink シミュレーションの高速化

生成した CUDA コードを MEX 関数として MATLAB コードから呼び出すと実行速度が向上します。Simulink Coder を GPU Coder と共に使用して、Simulink モデルに含まれる MATLAB Function ブロックの計算量の多い部分を NVIDIA GPU 上で高速化できます。

「データの注釈付けからディープラーニング モデルの選択、学習、テスト、微調整に至るまで、MATLAB には当社が必要とするすべてのツールが用意されていました。また、GPU の使用経験は限られていましたが、GPU Coder を使用することで NVIDIA GPU にすばやく展開できました。」