Main Content

ソルバー プロファイラー

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

説明

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

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

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

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

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

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

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

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

使用可能なアクション

  • トレース

  • フィルター

  • エクスプローラー

情報ペイン

  • 統計

  • ステップ サイズ

  • 提案

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

Simulink® エディターの右下隅にあるハイパーリンクをクリックして、ソルバー プロファイラーを開きます。

すべて展開する

この例では、地面から跳ね返るボールをシミュレートするモデルを使用して、特定のソルバー イベントのソースを検出する方法を説明します。ボールが静止するにつれ、ゼロクロッシングの密度が上がり、ソルバーの速度が低下します。

まず、ex_spi_show_zc モデルを開き、ソルバー プロファイラーを開始します。

[実行] をクリックし、モデルをプロファイリングします。

モデルに 45 個のゼロクロッシング イベントがあることを確認し、[結果] ペインの [ゼロクロッシング] タブを選択します。

[結果] ペインで ex_spi_show_zc/Switch フィールドを選択します。Switch ブロックによって発生したすべてのゼロクロッシング イベントが [ステップ サイズ] プロットに強調表示されます。

ツールストリップの [トレース] セクションで [ブロックを強調表示] を選択します。

Switch ブロックがゼロクロッシング イベントを発生させていることが分かります。

関連する例

パラメーター

設定

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

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

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

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

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

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

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

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

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

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

フィルター

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

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

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

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

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

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

カスタム ルール セット

カスタム ルール セットを指定して、[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:シミュレーション時間を格納なし

データ型: double

詳細

すべて展開する

R2016a で導入