MATLAB Coder

MATLAB コードからの C コードと C++ コードの生成

 

MATLAB Coder™ は、デスクトップ システムから組み込みハードウェアまで、さまざまなハードウェア プラットフォームに対応した C コードと C++ コードを MATLAB® コードから生成します。この製品は、MATLAB 言語の大部分とさまざまなツールボックスをサポートしています。また、生成されたコードをソースコード、スタティック ライブラリまたはダイナミック ライブラリとしてプロジェクトに統合できます。生成コードは可読性および移植性に優れています。これを既存の C コードと C++ コードおよびライブラリの主要部分と組み合わせることができます。また、MATLAB 環境で使用できるように、生成したコードを MEX 関数としてパッケージ化することもできます。

Embedded Coder® を併用することで、MATLAB Coder にコード カスタマイズ、ターゲット固有の最適化、コード トレーサビリティ、ソフトウェアインザループ (SIL) とプロセッサインザループ (PIL) の検証機能が追加されます。

MATLAB プログラムをスタンドアロン アプリケーションとして配布するには、MATLAB Compiler™ を使用します。他のプログラミング言語へ統合するソフトウェア コンポーネントを生成するには、MATLAB Compiler SDK™ を使用します。

詳細を見る:

多種多様な実行環境

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

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

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

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

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

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

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

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

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

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

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

統合の前に生成したコードで MATLAB テストを再利用

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

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

アルゴリズムの高速化

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

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

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

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

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

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

新機能

C++ コード生成

識別子の命名の改善、名前空間の使用法の拡大、より自然なファイルレイアウトの実現

データ型のサポート

datetime、duration、table、timetable、カテゴリカル配列のコード生成を拡張

固有値と固有ベクトル

関数 eig のコード生成サポートを拡張

関数インライン処理のグローバル設定

生成されたコードの可読性と速度を微調整

ローカル変数の宣言

ローカル変数宣言の順序パターンを明確化

ディープラーニングのカスタム層

Intel および ARM CPU 用のカスタム層のコードを生成

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

Intel CPU 用に LSTM、ステートフル LSTM、双方向 LSTM 向けコードを生成

Intel Mac 用のディープラーニング

macOS の Intel CPU 上で作動するディープラーニング ネットワークからコードを生成

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

Panel Navigation

MATLAB から C コードを簡単に生成するには

MATLAB Coder の使用に関するヒントとベスト プラクティスをご紹介します。Delphi、Baker Hughes、iSonea、dorsaVi など、各社の生成コードの事例もご覧いただけます。