最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
コードの生成元となる Simulink® モデルを開発する場合は、モデル コンフィギュレーション パラメーターを使用して、RAM と ROM の消費量を減らし、コードの実行速度を向上させます。効率性の一部を犠牲にしてより防御的なコードにする場合は、これらのパラメーターの 1 つ以上を無効にできます。
メモリの使用量または実行速度の改善が必要なターゲット ハードウェアおよびコード セクションのリアルタイム要件を、生成されたコードが満たしているかどうかを確認する、コード実行プロファイリングを構成できます。また、コード生成アドバイザーを使用すると、モデルの現在のコンフィギュレーションがデバッグやコード実行に最適化されているかどうかを確認できます。
モデルを変更してコード ジェネレーターによるコード生成速度を上げます。
モデル アドバイザーなどのツールおよびテクニックを適用してコード生成のためにモデルを最適化する。
makefile のコンパイラの最適化を Simulink UI レベルで制御します。
非正規数計算のレイテンシのために実行に時間がかかったり、オーバーランする可能性を最小化します。
範囲外の値をラップする浮動小数点から整数への変換コードを削除
アプリケーションにおける入力値が出力型の範囲にある場合、範囲外の浮動小数点から整数への変換コードを削除します。
アプリケーションに NaN
の入力値が存在しない場合、NaN
を整数ゼロにマッピングするコードをコード ジェネレーターで削除するように指定します。
コード置換ライブラリ (CRL) カスタマイズ エントリを使用して、数学関数の非有限数のチェックおよび数学関数のインライン化を選択的に無効化できます。
コード ジェネレーターは、モデル内の個々のブロックに対して別々のコード ステートメントとストレージ宣言を生成する代わりに、ブロック演算を単一の式に畳み込みます。
式の畳み込みでは、コードを最適化して、ブロック出力での中間結果の計算や、そのような中間結果の一時的なバッファーや変数への保存を最小にします。
生成されたコードにおけるローカル ブロック出力の有効化と再利用
可能な場合、コード ジェネレーターは、ブロック出力をローカル変数として宣言し、これらの変数を再利用できるようにします。
生成されたコードの効率性を最大化するためにバスをモデル化する。
生成されたコード内でシンボリック名ではなく不変信号の数値を使用します。
関数 memcpy を使用したベクトルの代入に対する生成コードの最適化
コード ジェネレーターは、for
ループを関数 memcpy
の呼び出しで置き換え、ベクトルの代入に対して生成されたコードを最適化します。
生成されたコードの効率性を最大化するためにバスをモデル化する。
コード ジェネレーターは、一時ローカル配列をローカル変数に置き換えることで、スタック メモリを削減します。
boolean 変数およびステート コンフィギュレーション変数に関するメモリ使用量の削減
ステート コンフィギュレーション変数と Boolean
変数を保存するメモリ量を削減します。
関数 memset
は、型にかかわらず内部ストレージを整数ビット パターン 0 (つまり、全ビットがオフ) にクリアします。
スタックの最大許容サイズを制御し、生成されたコードでデータをローカルとグローバルのどちらで定義するのかに関する一部の制御を提供します。
既定値の 5 からスタートし、コード ジェネレーターは信号またはパラメーターの配列の要素に値を割り当てるために、個別のステートメントではなく for
ループの使用を開始します。
たとえば、単精度プロセッサをターゲットとするなど、浮動小数点データ型が単精度のみのコードを生成します。
ブロック パラメーターのデータ型を指定した効率的なコードの生成
さらに効率的なコードを生成するには、パラメーター データ型と信号のデータ型を一致させるか、パラメーターをさらにサイズが小さいデータ型で格納します。
論理信号の boolean データを使用した生成コードの最適化
コード ジェネレーターは、論理信号を Boolean
データ型として保存し、生成されたコードを最適化します。
コード ジェネレーターが経過時間または絶対時間に割り当てるメモリを最適化します。
コード ジェネレーターはデータの依存関係の解析を使用して、for
構造を組み合わせて静的なコード サイズとランタイム分岐を削減します。
既定値の 5 からスタートし、コード ジェネレーターは信号またはパラメーターの配列の要素に値を割り当てるために、個別のステートメントではなく for
ループの使用を開始します。
コード ジェネレーターはデッド (つまり、未使用) コード パスを生成されたコードから除去します。
効率的な乗算をサポートするプロセッサの場合、勾配設定を補正する浮動小数点の乗算を使用して、コードの効率を向上します。
コード ジェネレーターは、計算結果に影響しないコードを削除することで、実行速度を改善して ROM の消費を低減します。
ブロック パラメーターのリテラル数値をインライン化し、グローバル RAM 使用量を軽減します。
Simulink®、Stateflow® および MATLAB® の固定小数点データを使用した生成コードの最適化
Simulink、Stateflow® および MATLAB® に固定小数点コードを生成します。
生成されたアルゴリズム コードをターゲット固有の最適化でカスタマイズします。
Switch ブロックと Multiport Switch ブロックでは、Simulink は制御入力と制御入力によって選択されたデータ入力を計算するブロックのみを実行します。
コード ジェネレーターは、生成されたコードで信号を表す構造体に対し、さまざまな最適化を実行します。
MATLAB Function ブロックからの生成コード内の線形代数の高速化
MATLAB Function ブロックで特定の線形代数関数に対して LAPACK 呼び出しを生成する。使用する LAPACK ライブラリを指定する。
MATLAB Function ブロックからの生成コード内の行列演算の高速化
特定の低水準行列演算の BLAS 呼び出しを生成します。使用する BLAS ライブラリを指定します。
MATLAB Function ブロックからの生成コード内の高速フーリエ変換の高速化
MATLAB Function ブロックの高速フーリエ変換に対する FFTW ライブラリ呼び出しを生成する。FFTW ライブラリを指定する。
MATLAB Function ブロックからの生成コード内のマルチスレッド FFTW 計画の同期
FFT ライブラリ コールバック クラスのメソッドを実装し、サポート C コードを提供して FFTW 計画への同時アクセスを行わないようにする。
MATLAB Function ブロック内の可変サイズ配列に対するメモリ割り当ての制御
MATLAB Function ブロックの動的メモリ割り当てを無効にする、または動的メモリ割り当てのしきい値を指定する。