優先順位
優先順位に基づく最適化の適用を制御する
モデル コンフィギュレーション ペイン: [コード生成] / [最適化]
説明
[優先順位] パラメーターは、実行効率の向上、RAM 消費量の削減、または実行効率と RAM 消費量のバランスのいずれかを目的として、生成コードを最適化します。
依存関係
このパラメーターは、[レベル] パラメーターを Maximum に設定することで有効になります。
設定
RAM と速度のバランス (既定値) | 実行速度を最大化 | RAM を最小化RAM と速度のバランスRAM と実行速度のバランスを取るように、コード生成設定を構成します。
実行速度を最大化実行速度を最大化するためのコード生成設定を適用します。
RAM を最小化RAM 消費量を最小化するようにコード生成設定を構成します。
ヒント
[優先順位] および [レベル] パラメーターの各値に対して、[詳細] セクションにパラメーターの対応する値があります。これらの各種設定には、次のような重要な違いがあります。
[レベル] パラメーターを
Minimum (debugging)に設定すると、[詳細] セクションのパラメーターはオフに設定されます。コード ジェネレーターは、変数やコードを削除する最適化を実装しません。これにより、生成されたコードのデバッグが容易になります。Balanced with ReadabilityとBalance RAM and speedのパラメーター設定は、次の 3 つのパラメーターを除いて同じです。サイズと次元が異なるバッファーの再利用
グローバル データ アクセスの最適化
生成コードにおけるブロック演算順序の最適化
上記の最適化は、Atomic サブシステムの境界を越えるため、可読性を損なう可能性があります。また、[生成コードにおけるブロック演算順序の最適化] により、生成されたコード内のブロック実行順序がシミュレーションとは異なるように変更される可能性があります。
RAM が限られている場合は、
Minimize RAM設定を選択します。この設定により、実行速度が低下してしまう可能性がありますが、RAM を削減する次の最適化が有効になります。boolean データをビットフィールドにパッキング
サイズと次元が異なるバッファーの再利用
ステート構成を保存するためにビットセットを使用
boolean データを保存するためにビットセットを使用
この設定により、[生成コードにおけるブロック演算順序の最適化] も
Improved Code Execution Speedからoffに変更されます。
次の表では、[優先順位] および [レベル] パラメーターの各値に対して、[詳細] セクションのパラメーターの対応する値をリストします。
| パラメーター | 設定 | 例 | ||||
|---|---|---|---|---|---|---|
| レベル | Minimum (debugging) | Balanced with readability | Maximum | |||
| Priority | 該当なし (N/A) | N/A | Balance RAM and speed | Maximize execution speed | Minimize RAM | |
| 詳細 | ||||||
| ベクトルの代入に対する memcpy の使用 | Off | On | On | On | On | 関数 memcpy を使用したベクトルの代入に対する生成コードの最適化 |
| memcpy しきい値 (バイト) | Off | 64 | 64 | 64 | 64 | 関数 memcpy を使用したベクトルの代入に対する生成コードの最適化 |
| ローカルなブロックの出力を有効にする | Off | On | On | On | On | 生成されたコードにおけるローカル ブロック出力の有効化と再利用 |
| ローカル ブロック出力の再利用 | Off | On | On | On | On | 生成されたコードにおけるローカル ブロック出力の有効化と再利用 |
| 余分なローカル変数の削除 (式の畳み込み) | Off | On | On | On | On | ブロック出力時の中間結果の計算と保存の最小化 |
| グローバル ブロック出力の再利用 | Off | On | On | On | On | 生成コードでのグローバル ブロック出力の再利用 |
| Assignment ブロックおよび Bus Assignment ブロックの更新でインプレース更新を実行する | Off | On | on | On | On | Assignment ブロックおよび Bus Assignment ブロックの更新でインプレース更新を実行する |
| Data Store Read ブロックと Data Store Write ブロックのバッファーの再利用 | Off | On | On | On | On | Data Copy Reduction for Data Store Read and Data Store Write Blocks |
| 配列のインデックスを簡略化する | Off | Off | Off | On | Off | Simplify Multiply Operations in Array Indexing |
| boolean データをビットフィールドにパッキング | Off | Off | Off | Off | On | boolean データをビットフィールドにパッキングすることによる生成コードの最適化 |
| サイズと次元が異なるバッファーの再利用 | Off | Off | On | Off | On | サイズと次元が異なるバッファーの再利用 |
| 並列 for ループの生成 | Off | Off | Off | On | Off | Generate Parallel for-Loops Using the Open Multiprocessing (OpenMP) Application Interface |
| for ループの自動スケジュール | Off | Off | Off | On | Off | Automatically Schedule for-Loops for Neighborhood Processing Subsystems |
| Model ブロックの出力バッファーを再利用する | Off | Off | On | On | On | 参照モデルを含むモデルのメモリ使用量の削減 |
| バッファーの再利用候補の統一 | Off | Off | Off | Off | Off | Generate Efficient Code Using Unified Analysis |
| グローバル データ アクセスの最適化 | None | None | Use global to hold temporary results | None | Use global to hold temporary results | グローバル変数の使用の最適化 |
| 生成コードにおけるブロック演算順序の最適化 | Off | Off | Improved Code Execution Speed | Improved Code Execution Speed | Off | Remove Data Copies by Reordering Block Operations in the Generated Code |
| ステート構成を保存するためにビットセットを使用 | Off | Off | Off | Off | On | boolean 変数およびステート構成変数に関するメモリ使用量の削減 |
| boolean データを保存するためにビットセットを使用 | Off | Off | Off | Off | On | boolean 変数およびステート構成変数に関するメモリ使用量の削減 |
ソフトウェアのアップグレードを予定している場合は、次のことに注意してください。
[レベル] パラメーターと [優先順位] パラメーターを設定すると、後続の各リリースで上記のパラメーター設定に対応する最新の最適化が有効になります。
[カスタム最適化を指定] パラメーターを選択すると、[詳細] セクションで個々のパラメーターを選択できるようになります。将来のリリースでモデルを読み込むときに、ソフトウェアを採用してからアップグレードするまでの間のリリースで導入された最適化パラメーターは
offに設定されます。ソフトウェアのアップグレード時に生成コードにおける変更の数を少なくするには、このオプションが適切な選択肢となる可能性があります。
推奨設定
| アプリケーション | 設定 |
|---|---|
| デバッグ | 影響なし |
| トレーサビリティ | 影響なし |
| 効率性 | Minimize RAM (RAM)、Maximum execution speed (速度)、Balance RAM and speed (バランス) |
| 安全対策 | 影響なし |
プログラムでの使用
パラメーター: OptimizationPriority |
| 型: 文字ベクトル |
値: 'Balanced' | 'Speed' | 'RAM' |
既定: 'Balanced' |
バージョン履歴
R2018a で導入