このガイドは、シミュレーションをスピードアップさせ、Simulink® モデルのパフォーマンスの向上に役立ちます。以下の手順では、状況に応じてモデルのパフォーマンスを修正または解析するために使用できるいくつかのツールをご紹介します。これらの手順を実行する際に問題が生じた場合、または問題を解決できない場合は、テクニカルサポートにお問い合わせください。手順を進めていく中で、データを収集するように求められます。このデータは、追加のサポートが必要になった場合に、テクニカルサポートが問題をより早く理解するのに役立ちます。
手順 1: 最近の変更の検討
モデルまたは MATLAB リリースの変更をきっかけに、パフォーマンスの問題が発生しましたか?
モデルの比較
新しい MATLAB® リリースへのアップグレード プロセスの一環としてモデルを変更した場合は、元のバージョンとモデルを比較して、パフォーマンスに悪影響を与えている可能性のある変更をスキャンします。
比較が完了したら、[パブリッシュ] をクリックしてレポートを保存します。
アップグレード アドバイザー
新規バージョンにアップグレードし、比較ツールで問題が特定されなかった場合は、アップグレード アドバイザーを実行します。アップグレード アドバイザーは、モデルを変更して Simulink の新機能と設定を使用することで利点が得られるケースを特定できます。
アップグレード アドバイザーによるチェックの実行が完了したら、レポートを保存します。
モデルの比較
モデルを大幅に変更した場合に、速度低下の原因がわからないときは、元のバージョンとモデルを比較して、パフォーマンスに悪影響を与えている変更をスキャンします。
比較が完了したら、[パブリッシュ] をクリックしてレポートを保存します。
手順 2: パフォーマンス アドバイザーの実行
パフォーマンス アドバイザーは、モデルを解析して、シミュレーションの速度を低下させる可能性があるコンフィギュレーション設定とモデリングパターンがないかどうかを調べ、パフォーマンスを向上させるアクションを提案します。モデルに変更を加えた後に、パフォーマンス アドバイザーによって最終的な妥当性確認を行って、得られた改善を表示できます。
アドバイザーによる最終的な妥当性確認が完了したら、レポートを保存します。
パフォーマンスを向上させるために追加の手法を試す場合は、手順 3 に進みます。
手順 3: 初期化のプロファイリング
最近のシミュレーションの結果を含む SimulationOutput
オブジェクトはありますか?
次のコマンドを使用して、モデルの初期化に必要な時間を確認します。必要に応じて、out
を SimulationOutput
オブジェクトの名前に置き換えてください。
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
初期化時間が予想より長く、さらに調査したい場合は、手順 3 の後半のパートに進みます。シミュレーションの潜在的な問題に焦点を当てる場合は、手順 4 に進みます。
次のコマンドを使用して、モデルの初期化に必要な時間を確認します。必要に応じて、out
を SimulationOutput
オブジェクトの名前に置き換えてください。
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
必要に応じて、out
を SimulationOutput
オブジェクトの名前に置き換えてください。
初期化時間が予想より長く、さらに調査したい場合は、手順 3 の後半のパートに進みます。シミュレーションの潜在的な問題に焦点を当てる場合は、手順 4 に進みます。
ほとんどの場合、Simulink シミュレーションを実行すると、シミュレーションに関する情報を含むオブジェクトが作成されます。
モデルの SimulationOutput
オブジェクトを生成するには、MyModel
をモデルの名前に置き換えて次のコマンドを実行します。
mdl = "MyModel";
out = sim(mdl,StopTime=“0”,CaptureErrors=“on”);
これらのコマンドはモデルを初期化し、時間 0 でシミュレーションを停止します。シミュレーションで生成された SimulationOutput
オブジェクトには、初期化時間に関する情報が含まれています。
out
が得られたら、次のコマンドを使用してモデルの初期化に必要な時間を確認します。
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
初期化時間が予想より長く、さらに調査したい場合は、手順 3 の後半のパートに進みます。シミュレーションの潜在的な問題に焦点を当てる場合は、手順 4 に進みます。
ほとんどの場合、Simulink シミュレーションを実行すると、シミュレーションに関する情報を含むオブジェクトが作成されます。新しいオブジェクトを取得する前に、ベースワークスペースに "1x1 SimulationOutput
" という値を持つ既存のオブジェクトがないかを確認します。
モデルの SimulationOutput
オブジェクトを生成するには、MyModel
をモデルの名前に置き換えて次のコマンドを実行します。
mdl = "MyModel";
out = sim(mdl,StopTime=“0”,CaptureErrors=“on”);
これらのコマンドはモデルを初期化し、時間 0 でシミュレーションを停止します。シミュレーションで生成された SimulationOutput
オブジェクトには、初期化時間に関する情報が含まれています。
out
が得られたら、次のコマンドを使用してモデルの初期化に必要な時間を確認します。
out.SimulationMetadata.TimingInfo.InitializationElapsedWallTime
初期化時間が予想より長く、さらに調査したい場合は、手順 3 の後半のパートに進みます。シミュレーションの潜在的な問題に焦点を当てる場合は、手順 4 に進みます。
MATLAB プロファイラーを使用して、初期化を遅くしている可能性のあるコードを探します。
MATLAB プロファイラー
時には、大規模な MATLAB コードベースを含むモデルコールバックや初期化スクリプトが存在することがあります。MATLAB プロファイラーは、モデルに関連した MATLAB コードの実行にかかる時間を解析し、潜在的なボトルネックを特定するのに役立ちます。
シミュレーションを実行する前に、コマンドウィンドウで次のコマンドを実行します。
profile clear; profile on;
シミュレーションが完了したら、次のコマンドを実行します。
p = profile('info');
MATLAB プロファイラーを実行した後に、[印刷] をクリックしてレポートを PDF として保存します。
プロファイラーの結果を確認します。予期していなかった関数やスクリプトがあった場合、または一部の MATLAB コードの実行に予想よりも時間がかかっている場合は、修正する時間を取ります。
パフォーマンスを向上させるために追加の手法を試す場合は、手順 4 に進みます。
手順 4: シミュレーションのプロファイリング
可変ステップソルバーを使用していますか?
わからない場合は、[コンフィギュレーション パラメーター] ダイアログ ボックスで [ソルバー] ペインを確認します。
Simulink プロファイラー
Simulink プロファイラーは、モデル シミュレーションの実行に必要な時間を解析し、コンポーネントごとに分けて示します。この情報を使用してベースラインを設定し、モデル内で潜在的に問題のある構成を特定できます。自己時間に多くの時間を費やすモデルに注意します。
プロファイルが完了したら、[共有] の [レポートの生成] をクリックし、レポートを保存します。
モデルでこれらの手順によって解決されない状況が生じた場合は、手順 5 に進みます。
Simulink プロファイラー
Simulink プロファイラーを実行します。
Simulink プロファイラーは、モデル シミュレーションの実行に必要な時間を解析し、コンポーネントごとに分けて示します。この情報を使用してベースラインを設定し、モデル内で潜在的に問題のある構成を特定できます。自己時間に多くの時間を費やすモデルに注意します。
プロファイルが完了したら、[共有] の [レポートの生成] をクリックし、レポートを保存します。
ソルバー プロファイラー
ソルバー プロファイラーを実行します。
ソルバー プロファイラーはモデルのダイナミクスを解析し、小さなタイムステップや主要なシミュレーション イベント (ソルバー例外やソルバーのリセットを含む) が原因でシミュレーション パフォーマンスが低下している場合にそれを特定するのに役立ちます。
プロファイリングが完了したら、[タブのエクスポート] をクリックしてグラフを保存し、.fig ファイルとして保存します。
モデルでこれらの手順によって解決されない状況が生じた場合は、手順 5 に進みます。
手順 5: 追加的な手順
モデルのパフォーマンスは十分に向上しましたか?
Simulink パフォーマンスガイドをご利用いただきありがとうございます。
以下のその他のリソースで、スムーズにモデルを実行し続けるためにパフォーマンスを向上させる手法をご確認ください。
デバッグと診断情報の収集に時間を割いていただきありがとうございます。
サポートまでお問い合わせください。その際、このプロセス中に生成されたレポートを提供してください。