実行速度
生成されたコードの実行速度を改善する
コード ジェネレーターでは、グローバル変数をローカル変数に置き換えたり、データ コピーを削除したり、関数 memset と関数 memcpy を使用したり、データを保存するためのメモリ量を減らすことで、可能な限り生成コードの実行速度を向上させます。コンパイラとプロセッサ固有の最適化を実装したり、バッファーの再利用を指定したり、必要のないコードを削除することで、生成コードの実行速度を向上させることができます。
モデル設定
トピック
実行速度の最適化の基礎
- 効率的なコード生成に向けてモデルを最適化する設計手法
設計ツールおよび設計手法を適用してコード生成向けにモデルを最適化する。 - Optimize Generated Code Using Code Efficiency Tools and Techniques
When generating production code from your model to deploy into a real-time embedded system, code efficiency is an important consideration. - コード生成アドバイザーを使用したコード生成の目的に合わせたモデルの設定
コード生成アドバイザーを使用してコード生成の目的に対してモデルをチェックします。 - Generate Efficient Code by Setting Model Configuration Parameters
Choose the efficiency level and priorities for your generated code.
プロセッサ固有の最適化
- Control Data and Function Placement in Memory by Inserting Pragmas
Increase code efficiency on your hardware by inserting pragmas in the generated code. Pragmas specify locations in memory to store data and functions. - boolean の特定の整数データ型への置換
boolean組み込みデータ型を特定の整数データ型に置き換えることにより、生成コードの実行速度を改善する。 - 非正規数の実行速度
非正規数計算のレイテンシのために実行に時間がかかったり、オーバーランする可能性を最小化します。 - 傾き設定を補正する浮動小数点の乗算
効率的な乗算をサポートするプロセッサの場合、傾き設定を補正する浮動小数点の乗算を使用して、コードの効率を向上します。 - アルゴリズム コード内でのターゲット最適化の生成
生成されたアルゴリズム コードをターゲット固有の最適化でカスタマイズします。 - Intel プラットフォームの Simulink ブロックからの SIMD コードの生成
Intel® SSE および Intel AVX テクノロジーを使用して生成コードの実行速度を改善する。 - Apple シリコン プラットフォーム用の Simulink ブロックからの SIMD コードの生成
ARM® Neon テクノロジーを使用して、Apple シリコン プラットフォーム用に生成されたコードの実行速度を向上させる。 - Optimize SIMD Code by Performing Fused Multiply Add Operations
For processors that support FMA instructions, improve execution efficiency by performing fused multiply-add operations.
実行効率性を向上させる最適化
- グローバル変数の使用の最適化
メモリ使用量および実行速度の要件を満たすためのグローバル変数参照の最適化を選択する。 - Improve Execution Efficiency by Reordering Block Operations in the Generated Code
The code generator can change the block execution order to improve execution efficiency. - ループ展開のしきい値の構成
既定値の 5 からスタートし、コード ジェネレーターは信号またはパラメーターの配列の要素に値を割り当てるために、個別のステートメントではなくforループの使用を開始します。 - 関数 memcpy を使用したベクトルの代入に対する生成コードの最適化
コード ジェネレーターは、forループを関数memcpyの呼び出しで置き換え、ベクトルの代入に対して生成されたコードを最適化します。 - 条件付き入力分岐実行の使用
Switch ブロックと Multiport Switch ブロックでは、Simulink® は制御入力と制御入力によって選択されたデータ入力を計算するブロックのみを実行します。 - MATLAB Function ブロック内の可変サイズ配列に対するメモリ割り当ての制御
MATLAB Function ブロックの動的メモリ割り当てを無効にする、または動的メモリ割り当てのしきい値を指定する。 - MATLAB Function ブロックからの生成コード内の線形代数の高速化
MATLAB Function ブロックで特定の線形代数関数に対して LAPACK 呼び出しを生成する。使用する LAPACK ライブラリを指定する。 - MATLAB Function ブロックからの生成コード内の行列演算の高速化
特定の低水準行列演算の BLAS 呼び出しを生成します。使用する BLAS ライブラリを指定します。 - MATLAB Function ブロックからの生成コード内の高速フーリエ変換の高速化
MATLAB Function ブロックの高速フーリエ変換に対する FFTW ライブラリ呼び出しを生成する。FFTW ライブラリを指定する。 - MATLAB Function ブロックからの生成コード内のマルチスレッド FFTW 計画の同期
FFT ライブラリ コールバック クラスのメソッドを実装し、サポート C コードを提供して FFTW 計画への同時アクセスを行わないようにする。 - Optimize Performance of Memory Access by Using Data Alignment
Optimize the alignment of data in memory for your hardware.
Halide コード生成を使用した最適化
- Speed Up Generated Code Execution with Halide Code
Generate Halide code from Simulink models for faster array computation. - When to Use Halide Code for Efficiency
Determine when to use Halide code to provide greater execution speed. - Enhance Generated Code Performance Using Halide from a MATLAB Function Block
Generate Halide code from MATLAB Function blocks in a Simulink model for faster array computation.
