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 で、生成したコードをコンパイルして実行します。生成したコードはロイヤリティフリーなので、商用アプリケーションで顧客に無料配布することができます。

Explore gallery (2 images)

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

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

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

レガシーコードの統合

レガシーコードの統合機能を使用して、信頼された、または高度に最適化された CUDA コードを MATLAB アルゴリズムに統合してテストし、同じ CUDA コードを生成されたコードからも呼び出します。

生成されたコードに既存の CUDA コードを統合

ディープラーニング ネットワークからの 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 データタイプで実行速度を改善

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

GPU Coder により生成されたコードに自動的に適用される最適化を利用。設計パターンを使用して性能をさらに改善

CPU-GPU間のメモリ転送の最小化と メモリの使用を最適化

GPU Coder は、CPU または GPU で実行する MATLAB コードのセグメントを自動的に解析、識別して分割します。また、CPU と GPU の間でのデータコピーの数を最小化します。他の可能性のあるボトルネックの特定にはプロファイリング ツールを使用します。

可能性のあるボトルネックを特定するプロファイルレポート

最適化されたライブラリの呼び出し

GPU Coder で生成されたコードは、TensorRT、cuDNN、cuSolver、cuFFT、cuBLAS、および Thrust などの最適化された NVIDIA CUDA ライブラリを呼び出します。MATLAB ツールボックスの関数より生成されたコードは、可能なときはいつでも最適化されたライブラリにマッピングされます。

生成されたコードに既存の CUDA コードを統合

設計パターンを使用してさらに高速化

ステンシル処理のような設計パターンは共有メモリを使用してメモリの帯域幅を改善します。これらは、畳み込みのような特定の関数を使用すると自動的に適用されます。また、特定のプラグマを使用して手動で呼び出すこともできます。

ステンシル処理設計パターン

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

アルゴリズムの 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 を併用する対話型のトレーサビリティ レポート

アルゴリズムの高速化

CUDA コードを生成し、MATLAB 内で使用できるようにコンパイルします。

GPU を使用したアルゴリズムの高速化

生成した CUDA コードを MEX 関数として MATLAB コードから呼び出すと実行速度が向上しますが、実際のパフォーマンスは MATLAB コードの性質によって異なります。生成した MEX 関数をプロファイリングし、ボトルネックを特定して最適化の対象を絞り込みます。

新機能

長期短期記憶 (LSTM) ネットワーク

LSTM などの再帰型ネットワークのためのコードを生成

Deep Learning ターゲット

Arm Mali GPU プロセッサに深層学習ネットワークを展開

ディープラーニング ネットワーク

DeepLab-v3+、MobileNet-v2、Xception、および DenseNet-201 向けコードを生成

YOLO v2 オブジェクト検出器

cuDNN および TensorRT ターゲット向けの YOLO v2 オブジェクト検出器からコードを生成

Dynamic Parallelism

GPU上で実行中のスレッドからカーネルを起動

GPU での 1 次元リダクション演算

プロセッサインザループ (PIL) テスト

NVIDIA GPU で生成された CUDA コードの数値的動作を検証

NVIDIA ハードウェアサポート

オンボードカメラモジュールへのアクセスと、VideoReaderファンクションのための CUDA コードを生成

これらの機能および対応する関数の詳細については、リリースノート を参照してください。

無料評価版を入手する

30 日間の無料評価版はこちら

今すぐダウンロード

あなたは学生ですか?

MATLAB および Simulink 学生向けソフトウェアの入手

詳細を見る