MATLAB Coder

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

 

MATLAB Coder™ は、デスクトップ システムから組み込みハードウェアまで、さまざまなハードウェア プラットフォームに対応した C コードと C++ コードを MATLAB® コードから生成します。また、MATLAB 言語の大部分とさまざまなツールボックスをサポートしています。生成されたコードをソースコード、スタティック ライブラリまたはダイナミック ライブラリとしてプロジェクトに統合できます。生成コードは可読性および移植性が良好です。既存の C コードやライブラリと統合して、アルゴリズムの重要な部分で非常に高い効率を実現したり、信頼性の高いコードを再利用したりすることができます。また、検証または高速化のため MATLAB 環境で使用できるように、生成したコードを MEX 関数としてパッケージ化することも可能です。

Embedded Coder® は、量産向けコード生成のため、MATLAB Coder にコード カスタマイズ、ターゲット固有の最適化、コード トレーサビリティ、ソフトウェアインザループ (SIL) とプロセッサインザループ (PIL) の検証サポートを追加して拡張します。

ユーザー インターフェイスを含む完全なアプリケーションの配布には、MATLAB Compiler SDK™ を使用します。

詳細を見る:

多種多様な実行環境

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

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

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

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

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

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

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

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

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

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

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

デスクトップおよびクラウド プラットフォームでアルゴリズムを簡単にプロトタイピング

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

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

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

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

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

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

ソフトウェアとの統合

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

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

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

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

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

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

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

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

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

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

アルゴリズムの高速化

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

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

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

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

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

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

Prototyping algorithms quickly on embedded and mobile platforms.

Move from Prototyping to Production

Use MATLAB Coder with Embedded Coder to generate code that takes advantage of processor-specific intrinsics that can execute faster than standard ANSI/ISO C/C++ code.

Profile execution time of the generated standalone code.

Integrate with Software

Reuse MATLAB algorithms as C/C++ code within your software environment.

Generate Code with Simple Interfaces That Are Easy to Integrate

Generated code uses C/C++ types in a natural way, simplifying integration with external code. You can integrate generated code as source code or libraries. Trusted C/C++ libraries or components can be brought into MATLAB for higher-fidelity testing and are automatically called from generated code as well.

Interactive traceability report using MATLAB Coder with Embedded Coder.

Optimize the Performance of Generated Code

Apply optimizations to adjust tradeoffs between execution speed, memory usage, readability, and portability. Use profiling tools to identify bottlenecks. To further boost performance, generate multicore OpenMP code and call optimized libraries such as LAPACK, BLAS, and FFTW when available.

Example of generated code with calls to OpenMP.

Reuse MATLAB Tests on Generated Code Prior to Integration

Reuse existing MATLAB tests to verify the behavior of generated code in the interactive MATLAB environment. Use the MATLAB unit test framework to quickly develop a rich set of regression tests that can be used to verify the generated C/C++ code.

Verifying behavior of generated code before integrating with your application.

Accelerate Algorithms

Generate C/C++ code and compile it for use inside MATLAB.

Accelerate Algorithms on CPUs

You can call generated code as MEX functions from your MATLAB code to speed execution, though performance will vary depending on the nature of your MATLAB code. You can profile generated MEX functions to identify bottlenecks and focus your optimization efforts.

Profile MEX functions to identify bottlenecks in performance.

Accelerate Algorithms Using GPUs

Use Parallel Computing Toolbox™ to accelerate algorithms running in MATLAB. Use GPU Coder to generate CUDA code for acceleration or deployment that runs on any modern NVIDIA GPU.

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

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