ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Simulink パフォーマンス アドバイザーのチェック

Simulink パフォーマンス アドバイザーのチェックの概要

パフォーマンス アドバイザーのチェックを使用して、モデルのシミュレーション時間を改善します。

参考

「パフォーマンス アドバイザーでシミュレーションのパフォーマンスを改善する仕組み」

ベースライン

パフォーマンス アドバイザーでパフォーマンスを改善したら、測定を実行してシミュレーションのパフォーマンスを比較します。

参考

「パフォーマンス アドバイザーのベースライン測定の作成」

ブロック線図の更新を必要とするチェック

これらのチェックを行うには、[ブロック線図の更新] を実行する必要があります。

参考

「パフォーマンス アドバイザーでシミュレーションのパフォーマンスを改善する仕組み」

シミュレーションの実行に必要なチェック

これらのチェックでは、十分なパフォーマンス データを収集するためにシミュレーションを実行する必要があります。シミュレーションが完了すると、パフォーマンス アドバイザーにより結果レポートが出力されます。

参考

「パフォーマンス アドバイザーでシミュレーションのパフォーマンスを改善する仕組み」

シミュレーション モード設定のチェック

これらのチェックでは、シミュレーション モード (ノーマル、アクセラレータ、ラピッド アクセラレータ、最新チェックがオフのラピッド アクセラレータ) を評価し、高速なシミュレーションを実現する最適なモードを特定します。

参考

「アクセラレーションとは」

コンパイラ最適化設定のチェック

これらのチェックを使用して、パフォーマンスを改善するためのコンパイラ最適化設定を選択します。

参考

「コンパイラ最適化レベル」

ベースラインの作成

パフォーマンス アドバイザーの実行時にベースラインを作成するには、このチェックをオンにします。ベースラインを手作業で作成することもできます。ベースラインとは、パフォーマンス アドバイザーによるチェックの前に行う、シミュレーションのパフォーマンス測定のことです。ベースラインには、シミュレーションの実行時間とシミュレーションの結果 (ログに記録された信号) が格納されます。モデルのベースラインを作成する前に、[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインにて以下のよう設定にしてください。

  • [状態] チェック ボックスをオンにします。

  • [形式] パラメーターを [時間付き構造体] に設定します。

参考

「パフォーマンス アドバイザーのベースライン測定の作成」

リソース集約的な診断設定の特定

シミュレーションの速度を改善するには、可能な限り診断を無効にします。たとえば、[ソルバー データの不整合][配列範囲の超過] など一部の診断ではシミュレーションの実行時にオーバーヘッドが発生します。

参考

最適化設定をチェック

シミュレーションの速度を改善するには、可能な限り最適化を有効にします。たとえば、[ブロック削減] などの最適化が無効になっている場合は、それらの最適化を有効にしてシミュレーション速度を改善してください。

コンパイラの最適化レベルを設定すると、コンパイル速度とシミュレーション速度をトレード オフすることができます。コンパイラの高速化オプションは既定では無効になっています。これらのオプションを有効にするとシミュレーションの実行速度が上がりますが、ビルド時間が長くなります。アクセラレータ モードとラピッド アクセラレータ モード で使用する C コンパイラの速度と効率は、コンパイル ステップの実行に必要な時間に影響を与えます。

[インライン パラメーター] の最適化を有効にすると、Simulink® はモデル パラメーターのシンボル名ではなく数値を使用します。これにより、シミュレーション中に行われるパラメーター調整の計算が削減されるため、パフォーマンスを改善することができます。

参考

Interpreted MATLAB Function ブロックを検出

シミュレーション速度を改善するには、可能な場合に、Interpreted MATLAB Function ブロックを MATLAB Function ブロックに置き換えます。MATLAB と Simulink との間ではいくつかのソフトウェア レイヤーを介してデータが交換されるため、通常、Interpreted MATLAB Function ブロックはシミュレーション速度を低下させます (特に、多くのデータ交換が必要なモデルの場合)。

さらに、ユーザーが Interpreted MATLAB Function をコンパイルすることはできないため、Interpreted MATLAB Function ブロックが存在すると、シミュレーション速度を向上させるためにアクセラレーション モードを使用することができなくなります。

MATLAB Function ブロックはすべての MATLAB 関数をサポートしていませんが、MATLAB 言語のサブセットは広範囲にサポートします。解釈された MATLAB コードを、組み込み可能な MATLAB サブセットのみ使用するコードに置き換えると、パフォーマンスを改善することができます。

参考

MATLAB Function ブロックのデバッグ設定をチェック

MATLAB のコードが正しく動作することを検証したら、可能な場合に MATLAB Function ブロックのデバッグ サポートを無効にします。[コンフィギュレーション パラメーター] ダイアログ ボックスの [シミュレーション ターゲット] ペインにて、デバッグ/アニメーション、オーバーフローの検出、セミコロンなしのエコー表現を無効にします。

参考

「パフォーマンス アドバイザーでシミュレーションのパフォーマンスを改善する仕組み」

Stateflow ブロックのデバッグ設定をチェック

既定では、Stateflow® のチャートにおいて、現在のアクティブ ステートとモデル実行時の遷移が強調表示されます。この機能はデバッグに役立ちますが、シミュレーションが遅くなります。シミュレーションを高速化するには、すべての Stateflow ブロックのデバッグとアニメーションを無効にします。同様に、Simulink 3D Animation™、SimMechanics™ 可視化、FlightGear などの 3D アニメーション パッケージを使用している場合は、パフォーマンスを改善するために、アニメーションを無効にするかシーンの忠実度を下げることを検討してください。

参考

シミュレーション ターゲット設定の検出

シミュレーションの速度を改善するには、可能な限りシミュレーション ターゲット設定を無効にします。たとえば、[コンフィギュレーション パラメーター] ダイアログ ボックスで、[シミュレーション ターゲット][セミコロンなしのエコー表現] チェック ボックスをオフにすると、シミュレーションの速度を改善できます。

参考

[モデル参照] の [リビルド] 設定をチェック

シミュレーション速度を改善するには、[コンフィギュレーション パラメーター] ダイアログ ボックスで、[モデル参照][リビルド] パラメーターが [既知の依存関係で任意の変更が検出された場合] に設定されていること確認します。

参考

モデル参照パラレル ビルドのチェック

シミュレーションを改善するには、モデル内の参照モデルの数を検証します。複数の参照モデルがある場合、可能であればモデルをパラレルでビルドします。

パフォーマンス アドバイザーはモデルを解析し、さまざまなコア数を使用しているものとして現在のコンピューター上でのビルド時間を推定します。また、コンピューターに Parallel Computing Toolbox™ または MATLAB® Distributed Computing Server™ ソフトウェアがインストールされている場合、推定が実行されるのと同じ方法でモデルのビルド時間を推定します。パフォーマンス アドバイザーは、この推定を次のように実行します。

  1. 他の参照モデルを参照しない参照モデルをモデル内で検索します。

  2. 他の参照モデルを参照しない参照モデルの各々にあるブロックの数の平均値を計算します。

  3. 他の参照モデルを参照しない参照モデルのリストから、ブロックの数が算出された平均値に一番近い参照モデルを選択します。

  4. このモデルをビルドして、ビルド時間を取得します。

  5. この参照モデルのブロック数とビルド時間とに基づき、他のすべての参照モデルのビルド時間を推定します。

  6. これらのビルド時間に基づき、最上位モデルのパラレル ビルド時間を推定します。

パラレル ビルド メカニズムによって導入されたオーバーヘッド時間を計算するには、パラレル ビルドのオーバーヘッド時間推定係数を設定します。パフォーマンス アドバイザーは、オーバーヘッドのあるビルド時間を次のように推定します。

(1 + パラレル ビルドのオーバーヘッド時間推定係数)*(1 台のマシンにおけるビルド時間)

参考

Delay ブロックのリング バッファーの設定のチェック

シミュレーションを改善するには、モデル内の各 Delay ブロックが適切なバッファー タイプを使用していることを確認します。既定では、このブロックは配列バッファーを使用します ([リング バッファーを使用] オプションがオフになっています)。ただし、遅延時間が長い場合は、リング バッファーによりコピー操作の数が一定に保たれるため、実行速度を改善することができます。

Delay ブロックを配列バッファーを現在使用しており、以下のすべての条件が満たされている場合は、パフォーマンス アドバイザーによりリング バッファーが選択されます。

  • Delay ブロックがサンプル ベース モードになっている ([入力処理] パラメーターが [チャンネルとしての要素 (サンプル ベース)] に設定されている。または、入力信号の型が [サンプルベース] に設定されている)。

  • 遅延の長さの値または上限値が 10 以上になっている。

  • 状態のサイズ (遅延の長さをすべての出力信号の幅で掛けた値) が 1000 以上になっている。

参考

ソルバー タイプの選択をチェック

シミュレーションを改善するには、モデルが適切なソルバー タイプを使用していることを確認します。

陽的ソルバーと陰的ソルバー

シミュレーション開始時に、モデルのスティッフネスの近似に応じてソルバーを選択します。スティッフなシステムは、ゆっくり変化する連続ダイナミクスと素早く変化する連続ダイナミクスの両方をもっています。陰的ソルバーはスティッフな問題向けに設計されており、陽的ソルバーはノンスティッフな問題向けに設計されています。ノンスティッフなソルバーをスティッフなシステムの解決に使用すると、効率が悪くなり、間違った結果が出力される恐れがあります。ノンスティッフなソルバーが非常に短いステップ サイズでモデルを解決している場合は、それがスティッフなシステムでないかどうかチェックしてください。

モデル推奨ソルバー
スティッフ システムを表現している場合ode15s
スティッフ システムを表現していない場合ode45

パフォーマンス アドバイザーでは、陽的ソルバーまたは陰的ソルバーを選択するために、表に示す経験則を使用します。

元のソルバー パフォーマンス アドバイザーの動作
可変ステップ ソルバーの場合

まず、0 でシステムのスティッフネスを計算してから、操作:

  • スティッフネスが 1000 より大きい場合、パフォーマンス アドバイザーは ode15s を選択します。

  • スティッフネスが 1000 より小さい場合、パフォーマンス アドバイザーは ode45 を選択します。

固定ステップ連続ソルバーの場合
  • スティッフネスが 1000 より大きい場合、パフォーマンス アドバイザーは ode14x を選択します。

  • スティッフネスが 1000 より小さい場合、パフォーマンス アドバイザーは ode3 を選択します。

シミュレーション時にシステムのスティッフネスが変動しない場合、この経験則は最適に機能します。システムのスティッフネスが時間と共に変化する場合、パフォーマンス アドバイザーが提案するソルバーではなく、そのシステムに最適なソルバーを選択します。

参考

シミュレーション モードの選択

最速のシミュレーション時間を実現するには、このチェックを使用して次のモードを評価し、最適な選択を識別します。

  • ノーマル

  • アクセラレータ

  • ラピッド アクセラレータ

  • 最新チェックがオフのラピッド アクセラレータ

ノーマル モードでは、Simulink はシミュレーション実行中にモデルを解釈します。このモードではコンパイル ステップを別途必要としないなため、モデルが頻繁に変更される場合は、一般にこのモードを推奨します。また、このモードでは最も柔軟にモデルを変更することができます。

アクセラレータ モードでは、Simulink はモデルをバイナリの共有ライブラリ (または可能であれば DLL) にコンパイルします。そのため、ノーマル モードでシミュレーションを解釈する際に発生するブロック間のオーバーヘッドが排除されます。 アクセラレータ モードはデバッガーとプロファイラーをサポートしますが、実行時の診断はサポートしません。

ラピッド アクセラレータ モードでは、シミュレーション速度は最速になりますが、このモードはモデル内のすべてのブロックで C コードが使用できるモデルでのみ機能します。また、このモードは、デバッガーまたはプロファイラーをサポートしていません。

最新チェックがオフのラピッド アクセラレータを選択すると、パフォーマンス アドバイザーはシミュレーション中に最新チェックを実行しません。最新チェックのオーバーヘッドを発生させることなくパラメーターを調整する間に、ラピッド アクセラレータの実行可能ファイルを繰り返し実行することができます。たとえば、大規模モデルや広範囲なモデル参照を作成するモデルがある場合、この実行方法を使用すると効率が向上します。

3 次元信号をもつモデルでは、ノーマル モードやアクセラレータ モードが最適です。

参考

コンパイラの最適化のオン/オフを選択

このチェック ボックスを使用して、コンパイラの最適化の実行でシミュレーション速度を高速化できるかどうか確認します。最適化は、アクセラレータ モードまたはラピッド アクセラレータ モードでのみ実行できます。

    メモ:   MATLAB がコンパイラの最適化を使用するように構成されていない場合、このチェックはスキップされます。

参考

この情報は役に立ちましたか?