MATLAB Coder

多種多様な実行環境

可読性と移植性に優れた ANSI C/C++ ソース コードを生成します。コード配布は無償です。

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

任意の C/C++ コンパイラを使用して、生成したコードをコンパイルし、デスクトップ システムからモバイル デバイス、組み込みハードウェアまであらゆるハードウェアで実行できます。生成したコードはロイヤリティフリーなので、商用アプリケーションで顧客に無料配布することができます。

行列乗算用に生成されたコード。

行列乗算用に生成されたコード。

サポートされているツールボックスと関数

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

MATLAB から C++ コードを配布

生成コードをオブジェクト指向の C++ ソース コードと統合します。

名前空間を使用した C++ コードの生成

MATLAB Coder では、名前空間で C++ コードを生成することができるので、同一の関数名またはデータ型名を持つ可能性がある他のソースコードとの統合が簡単になります。コード生成では、生成されたすべての関数および型定義は名前空間にパッケージされます。

生成されたコードは、名前空間を使用して同じデータ型名を持つ変数を統合します。

生成されたコードは、名前空間を使用して同じデータ型名を持つ変数を統合します。

MATLAB クラスから C++ クラスを生成

MATLAB Coder は、値クラス、ハンドルクラス、およびシステム オブジェクトを含む MATLAB コード内のクラスから C++ クラスを生成します。生成されたコードは C++ ライブラリまたは実行可能ファイルにコンパイルすることができ、既存の C++ ソースコードに統合することもできます。

生成された関数インターフェイスで動的に割り当てられた C++ 配列の使用

コンパイル時にサイズが不明な配列、または定義されたしきい値を超える配列を受け取る、または返すMATLAB 関数のための C++ コードを生成します。生成されたコードでは、配列用のメモリは動的に割り当てられ、coder::array という名称でクラス テンプレートとして実装されます。例外セーフなメモリの割り当て解除に加え、coder::array は動的配列にアクセスして管理する API を提供します。

生成された関数に動的に割り当てられた配列を渡します。

生成された関数に動的に割り当てられた配列を渡します。

ディープラーニング ネットワークと機械学習モデルの展開

学習済みのディープラーニング ネットワークおよび機械学習モデルからコードを生成します。

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

LSTM その他の層に加え、ResNet-50 や MobileNet-v2 などのさまざまな学習済みディープラーニング ネットワークを Deep Learning Toolbox から Intel® および ARM® Cortex® CPU に展開します。前処理と後処理用のコードを学習済みディープラーニング ネットワークと共に生成して、完成したアルゴリズム全体を展開します。

ディープラーニングの推論用に最適化されたコードの生成

MATLAB Coder は特定のアルゴリズムで推論を実行するために必要なコードのみを生成するため、コードは他のディープラーニング ソリューションより高速でメモリ使用量も少なくなります。生成されたコードは、Intel プロセッサ用 Intel MKL-DNN や ARM Cortex プロセッサ用 ARM Compute Library などの最適化されたライブラリを呼び出します。最新の NVIDIA® GPU で実行する CUDA® コードを生成して、アルゴリズムを高速化または配布するには GPU Coder を使用します。

エンドツーエンドの機械学習モデルの展開

前処理と後処理を含む機械学習アルゴリズム全体の C/C++ コードを生成して、統計モデルおよび機械学習モデルを展開します。C/C++ 予測コードを再生成せずに、展開済みモデルのパラメーターを更新します。

機械学習モデル用のコード生成ワークフロー。

機械学習モデル用のコード生成ワークフロー。

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

アルゴリズムを C/C++ に自動変換することでハードウェア開発期間を短縮します。

デスクトップおよびクラウド プラットフォームでのプロトタイピング

MATLAB Coder アプリまたは同等のコマンドライン関数を使用すると、簡単にコードを生成し、使用するハードウェア用にコンパイルできます。信号処理、コンピューター ビジョン、ディープラーニング、制御システムをはじめ、幅広いアプリケーションに対応します。

組み込みおよびモバイル プラットフォームでのプロトタイピング

生成したコードとアプリケーションを手動で統合すれば、すべてのデバイスをターゲットにできます。Raspberry Pi 用の MATLAB  サポート パッケージを使用すれば、Raspberry Pi のプロセスを自動化することができます。

組み込みおよびモバイル プラットフォームでアルゴリズムを簡単にプロトタイピング。

組み込みおよびモバイル プラットフォームでアルゴリズムを簡単にプロトタイピング。

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

MATLAB Coder と Embedded Coder  を併用すると、標準的な ANSI/ISO C/C++ コードよりも実行速度に優れた、プロセッサ固有の機能を利用したコードも生成できます。

生成したスタンドアロン コードの実行時間のプロファイリング。

生成したスタンドアロン コードの実行時間のプロファイリング。

ソフトウェアとの統合

ソフトウェア環境内で MATLAB アルゴリズムを C/C++ コードとして再利用します。

簡単に統合できるシンプルなインターフェイスでコードを生成

生成されるコードは自動的に C/C++ 型を使用するため、外部コードとの統合が容易です。生成したコードをソースコードやライブラリとして統合することができます。信頼できる C/C++ ライブラリやコンポーネントを MATLAB に統合して、より忠実度の高いテストを実施できるだけでなく、生成したコードから自動的に呼び出すことも可能です。

MATLAB Coder と Embedded Coder を併用する対話型のトレーサビリティ レポート。

MATLAB Coder と Embedded Coder を併用する対話型のトレーサビリティ レポート。

生成されたコードのパフォーマンスの最適化

最適化を適用することで、実行速度、メモリ使用量、可読性、移植性のトレードオフを調整できます。ボトルネックの特定にはプロファイリング ツールを使用します。パフォーマンスをさらに高めるには、マルチコア対応の OpenMP コードを生成し、使用可能な場合に LAPACK、BLAS、FFTW などの最適化済みライブラリを呼び出します。

OpenMP を呼び出す生成コードの例。

OpenMP を呼び出す生成コードの例。

統合前の生成コードの検証に MATLAB テストを再利用

対話型の MATLAB 環境で、既存の MATLAB テストを再利用して生成コードの動作を検証します。MATLAB ユニット テスト フレームワークを使用すると、生成した C/C++ コードの検証に使用できる多種多様な回帰テストを簡単に開発できます。

アプリケーションに統合する前に生成したコードの動作を検証。

アプリケーションに統合する前に生成したコードの動作を検証。

アルゴリズムの高速化

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

CPU でのアルゴリズムの高速化

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

パフォーマンスのボトルネックを特定するための MEX 関数のプロファイリング。

パフォーマンスのボトルネックを特定するための MEX 関数のプロファイリング。

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

Parallel Computing Toolbox を使用すると、MATLAB でのアルゴリズムの実行を高速化できます。最新の NVIDIA  GPU での高速化や配布に対応した CUDA コードを生成するには GPU Coder を使用します。