MATLAB Coder は、デスクトップ システムから組み込みハードウェアまで、さまざまなハードウェア プラットフォームに対応した C コードと C++ コードを MATLAB コードから生成します。この製品は、MATLAB 言語の大部分とさまざまなツールボックスをサポートしています。また、生成されたコードをソースコード、スタティック ライブラリまたはダイナミック ライブラリとしてプロジェクトに統合できます。生成コードは可読性および移植性に優れています。これを既存の C コードと C++ コードおよびライブラリの主要部分と組み合わせることができます。また、MATLAB 環境で使用できるように、生成したコードを MEX 関数としてパッケージ化することもできます。
Embedded Coder を併用することで、MATLAB Coder にコードのカスタマイズ、ターゲット固有の最適化、コードのトレーサビリティ、ソフトウェアインザループ (SIL) とプロセッサインザループ (PIL) の検証機能が追加されます。
MATLAB プログラムをスタンドアロン アプリケーションとして配布するには、MATLAB Compiler を使用します。他のプログラミング言語へ統合するソフトウェア コンポーネントを生成するには、MATLAB Compiler SDK を使用します。
詳細を見る:
MATLAB Coder を使用し、 MATLAB アルゴリズムから、スタンドアロン ANSI C ソースコードと、MEX ファイルを生成する最適な方法をご紹介します。
今すぐ始めるアルゴリズムの配布が無償
任意の C/C++ コンパイラを使用して、生成したコードをコンパイルし、デスクトップ システムからモバイル デバイス、組み込みハードウェアまであらゆるハードウェアで実行できます。生成したコードはロイヤリティフリーなので、商用アプリケーションで顧客に無料配布することができます。
MATLAB Coder のユーザー事例
さまざまな産業分野のエンジニアや研究者がアプリケーションの C/C++ コードの生成に MATLAB Coder を使用しています。その一部をご紹介します。
サポートされているツールボックスと関数
MATLAB 言語の幅広い機能を使用して MATLAB Coder で生成されるコードにより、設計エンジニアは大規模システムのコンポーネントとして使用するアルゴリズムを開発することができます。MATLAB および関連ツールボックスから 2500 以上の演算子と関数を利用できます。
名前空間を使用した 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++ 予測コードを再生成せずに、展開済みモデルのパラメーターを更新します。
デスクトップおよびクラウド プラットフォームでのプロトタイピング
MATLAB Coder アプリまたは同等のコマンドライン関数を使用すると、簡単にコードを生成し、使用するハードウェア用にコンパイルできます。信号処理、コンピューター ビジョン、ディープラーニング、制御システムをはじめ、幅広いアプリケーションに対応します。
組み込みおよびモバイル プラットフォームでのプロトタイピング
生成したコードとアプリケーションを手動で統合すれば、すべてのデバイスをターゲットにできます。Raspberry Pi 用の MATLAB サポート パッケージを使用すれば、Raspberry Pi のプロセスを自動化することができます。
プロトタイピングから量産への移行
MATLAB Coder と Embedded Coder を併用すると、標準的な ANSI/ISO C/C++ コードよりも実行速度に優れた、プロセッサ固有の機能を利用したコードも生成できます。
簡単に統合できるシンプルなインターフェイスでコードを生成
生成されるコードは自動的に C/C++ 型を使用するため、外部コードとの統合が容易です。生成したコードをソースコードやライブラリとして統合することができます。信頼できる C/C++ ライブラリやコンポーネントを MATLAB に統合して、より忠実度の高いテストを実施できるだけでなく、生成したコードから自動的に呼び出すことも可能です。
生成されたコードのパフォーマンスの最適化
最適化を適用することで、実行速度、メモリ使用量、可読性、移植性のトレードオフを調整できます。ボトルネックの特定にはプロファイリング ツールを使用します。パフォーマンスをさらに高めるには、マルチコア対応の OpenMP コードを生成し、使用可能な場合に LAPACK、BLAS、FFTW などの最適化済みライブラリを呼び出します。
統合前の生成コードの検証に MATLAB テストを再利用
対話型の MATLAB 環境で、既存の MATLAB テストを再利用して生成コードの動作を検証します。MATLAB ユニット テスト フレームワークを使用すると、生成した C/C++ コードの検証に使用できる多種多様な回帰テストを簡単に開発できます。
CPU でのアルゴリズムの高速化
生成したコードを MEX 関数として MATLAB コードから呼び出すと実行速度が向上しますが、実際のパフォーマンスは MATLAB コードの性質によって異なります。生成した MEX 関数をプロファイリングし、ボトルネックを特定して最適化の対象を絞り込むことができます。
GPU を使用したアルゴリズムの高速化
Parallel Computing Toolbox を使用すると、MATLAB でのアルゴリズムの実行を高速化できます。最新の NVIDIA GPU での高速化や配布に対応した CUDA コードを生成するには GPU Coder を使用します。