Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ソルバー プロファイラー

ソルバー性能のボトルネックを特定します。

説明

ソルバー プロファイラーを使用して、ソルバーとモデルの動作を調査し、シミュレーション性能を低下させる可能性のある問題を特定します。

ソルバー プロファイラーを使用して、モデルを解析し、そのシミュレーションに影響するパターンを調べます。ソルバー プロファイラーはシミュレーション、ソルバー設定、イベント、エラーに関するグラフィカルで統計的な情報を表示します。このデータを使用してシミュレーションのボトルネックの原因となった箇所をモデル内で特定できます。

さらに、シミュレーションの速度を制限する可能性がある要因は複数あります。ソルバー プロファイラーは、モデルのシミュレーション中に発生するすべての主要なイベントを記録し、レポートします。

  • ゼロクロッシング イベント

  • ソルバーの例外イベント

  • ソルバーのリセット イベント

  • ヤコビアン計算イベント

これらのイベントは一般的であり、正確なシミュレーションに必要です。ただし、これらによって計算コストが発生し、頻繁に発生することで処理が遅くなったり、シミュレーションが失速することもあります。

使用可能なアクション

  • トレース

  • 構成

  • 探索

情報ペイン

  • 統計

  • ステップ サイズ

  • 提案

ソルバー プロファイラー を開く

  • Simulink® ツールストリップ: [デバッグ] タブの [パフォーマンス] セクションで [パフォーマンス アドバイザー] をクリックし、[ソルバー プロファイラー] を選択します。

    On the Debug tab, the Performance advisor list is expanded with the pointer paused on the Solver Profiler option.

  • [ソルバー情報] メニュー: [ソルバー情報] メニューを開くには、Simulink エディターの下部のステータス バーの右にあるハイパーリンクをクリックします。その後、[ソルバー プロファイラー] をクリックします。

    The Solver information menu has the pointer paused on the button that opens the Solver Profiler.

すべて展開する

ソルバー プロファイラーを使用して、跳ねるボールのモデルのシミュレーションで発生するゼロクロッシングのソースを特定します。

モデル BouncingBallWithSwitch を開きます。

ソルバー プロファイラーを開きます。Simulink™ ツールストリップの [デバッグ] タブにある [パフォーマンス] セクションで [パフォーマンス アドバイザー] ボタンの矢印をクリックします。その後、[ソルバー プロファイラー] を選択します。

ソルバー プロファイラーで [実行] をクリックします。ソルバー プロファイラーでモデルがシミュレートされ、発生するソルバー イベントについての情報が収集されます。シミュレーションが完了すると、ソルバー プロファイラーの [統計] ペインに情報が表示され、シミュレーションの各ステップで計算されたステップ サイズのプロットが表示されます。

[統計] ペインを下にスクロールしてイベントの情報を確認します。シミュレーション中に 1 つのソースから 45 件のゼロクロッシング イベントが発生したことがわかります。

ゼロクロッシング イベントのソースに関する情報を表示するには、[ゼロクロッシング] タブを選択します。ゼロクロッシング イベントは Switch ブロックから発生しています。

ステップ サイズのプロットにゼロクロッシング イベントの注釈を付けるには、[統計] ペインで [ゼロクロッシングの総数] 行の値をクリックします。ゼロクロッシングが発生したそれぞれの時点が黄色の点で示されます。ゼロクロッシングが発生した時点でステップ サイズが大幅に減少しています。

ゼロクロッシングを発生させた Switch ブロックをブロック線図で強調表示するには、[ゼロクロッシング] タブでブロック パスを選択します。その後、状態エクスプローラーのツールストリップの [トレース] セクションで [ブロックを強調表示] をクリックします。

関連する例

パラメーター

すべて展開する

設定

プロファイラーがモデルの解析を開始するシミュレーションの時間 (秒単位)。これは、シミュレーションの開始時間と同じではありません。

プロファイラーがモデルをプロファイリングするシミュレーションの時間 (秒単位)。既定では、シミュレーションが終了するまで解析は続行します。このパラメーターを変更しても、[モデル コンフィギュレーション パラメーター] で指定するモデルの終了時間は変わりません。

値がモデルの設定された終了時間より小さいと、StopTime でプロファイリングとシミュレーションが停止します。

ログに記録されるイベントの最大数。ログに記録されるイベントの数がこの値に達してもメモリが利用可能である場合は、BufferSize を増やします。メモリに制限がある場合、この値を減らすことを検討します。

既定では、プロファイラーはモデルの状態を保存しません。このパラメーターを有効にすると、プロファイラーが状態をプロファイラー データの MAT ファイルに保存するように設定されます。

このパラメーターを選択すると、状態エクスプローラーが有効になります。

Simscape の状態をプロファイラー データの MAT ファイルに保存するには、このパラメーターを有効にします。

このパラメーターを選択すると、Simscape エクスプローラーが有効になります。

ゼロクロッシング情報をプロファイラー データの MAT ファイルに保存するには、このパラメーターを有効にします。

このパラメーターを選択すると、ゼロクロッシング エクスプローラーが有効になります。

ソルバーのヤコビ行列をメモリに記録するオプションです。このオプションは、陰的なソルバーを使用するシミュレーションに役立ちます。ソルバーの比較については、ソルバーの比較を参照してください。

ソルバーのヤコビアンの詳細については、陰的なソルバーに対するヤコビ メソッドの選択を参照してください。

Simscape の状態に関するスティッフの解析を記録します。配列として指定します。このパラメーターは、[Simscape の剛性] の状態をプロファイラー データの MAT ファイルに記録する時間点の配列を提供します。このパラメーターを有効にすると、提案ペインに [Simscape の剛性] タブが表示されます。

Simscape の状態に関するスティッフの解析をプロファイラー データの MAT ファイルに記録するには、このパラメーターを有効にします。スティッフおよびその他の物理系の概念の Simscape 表現の詳細については、Simscape モデルによる物理システムの表現 (Simscape)を参照してください。

ソルバー プロファイラーで [ルールのカスタマイズ] をクリックし、ルール セットにアクセスします。これらのルールのほとんどのしきい値を変更し、シミュレーションの実行中に選択的に適用するルールを選択することもできます。

ルールを変更するには、カスタマイズを有効にしてから、希望するしきい値を入力します。

カスタム ルール セット

カスタム ルール セットを指定して、[Rule Set] ダイアログ ボックスの設定をオーバーライドできます。

ルール セットを MATLAB® スクリプトとして作成し、[Rule Set] ダイアログ ボックスの [カスタム ルール セット] セクションでスクリプトのパスを指定します。

単純なルール セット例は以下のようになります。

function diagnosticsString = customRule(profilerData)
		if isempty(profilerData.zcEvents)
			diagnosticsString{1} = 'No zero crossing event detected.';
		else
			diagnosticsString{1} = 'Zero-crossing events detected.';
		end
end
関数への入力は profilerData と呼ばれる構造体の配列です。この構造体の配列はプロファイリングの実行中にソルバー プロファイラーが収集するすべての情報を整理します。これには、以下のサブ構造体が含まれます。

サブ構造体フィールド
stateInfo:ブロック状態に関する情報を格納
  • name:ブロック名

  • value:状態値

  • blockIdx:ブロック ID

blockInfo:ブロックおよび状態 ID の相互参照
  • name:ブロック名

  • stateIdx:状態 ID

zcSrcInfo:ゼロクロッシング イベントを発生させるブロックに関する情報を格納
  • name:ブロック名

  • blockIdx:ブロック ID

zcEvents:ゼロクロッシング イベントのタイム スタンプと対応する状態 ID の相互参照
  • t:イベントのタイムスタンプ

  • srcIdx:ブロック ID

exceptionEvents:例外イベントのタイムスタンプ、イベントの原因となった対応する状態の ID およびその原因の相互参照
  • t:イベントのタイムスタンプ

  • stateIdx:状態 ID

  • cause:例外の原因

resetTime:ソルバー リセットのタイムスタンプを格納なし
tout:シミュレーション時間を格納なし

ビュー

ソルバー プロファイラーの [ステップ サイズ] プロットでソルバーの例外イベントを強調表示するには、このパラメーターを有効にします。

ソルバー プロファイラーの [ステップ サイズ] プロットでソルバーのリセット イベントを強調表示するには、このパラメーターを有効にします。

ソルバー プロファイラーの [ステップ サイズ] プロットでヤコビアンの更新イベントを強調表示するには、このパラメーターを有効にします。

ソルバー プロファイラーの [ステップ サイズ] プロットでゼロクロッシング イベントを強調表示するには、このパラメーターを有効にします。

ヒント

  • シミュレーションのパフォーマンスを解析して向上させる際には、パフォーマンス アドバイザーを使用してモデルおよびシミュレーションの構成を解析することから解析を開始することを検討してください。

  • パフォーマンス アドバイザーを使用してモデルおよびシミュレーションの構成を解析した後には、ソルバー プロファイラーおよび Simulink プロファイラーを使用したプロファイリング シミュレーションによって解析を深めることができます。

    • ソルバー プロファイラーはモデルに対して選択したソルバーのパフォーマンスを解析します。ソルバー プロファイラーは、可変ステップ ソルバーを使用するシミュレーションのパフォーマンスを解析するのに特に役立ちます。プロファイリングの結果は、ステップ サイズがいつどうして制限されているのかを特定するのに役立ちます。

    • Simulink プロファイラーは、モデル コンポーネント間でのシミュレーション実行時間の分布を解析することで、シミュレーションのパフォーマンスのボトルネックを特定するのに役立ちます。

バージョン履歴

R2016a で導入