ドキュメンテーション

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

パフォーマンスの比較

シミュレーション モードのパフォーマンス

アクセラレータ モードとラピッド アクセラレータ モードは、ノーマル モードに比べて、シミュレーションの実行時間がコード生成に必要な時間を超えるときに速度の向上が最大になります。このため、アクセラレータ モードとラピッド アクセラレータ モードは通常、シミュレーションの実行時間が数分以上のときにノーマル モードよりパフォーマンスが向上します。ただし、Stateflow® または MATLAB Function ブロックの数が多いモードでは、ノーマル モードに比べてわずかな速度向上が見られるだけです。これは、ノーマル モードでは、これらのブロックはコード生成を通してもシミュレーションを実行するからです。

モデルに調整可能なパラメーターを含めた場合も、シミュレーション時間が長くなります。

次の図は、ノーマル、アクセラレータ、およびラピッド アクセラレータ モードでシミュレーションを実行した仮想モデルのパフォーマンスを一般論として示しています。

ターゲットをリビルドしなければならない場合のパフォーマンス

図の実線は、ターゲット コードをリビルドしなければならない場合のパフォーマンスを示しています ("all targets out of date"「すべてのターゲットが無効」)。この仮想モデルの場合、タイム スケールは分の順番ですが、複雑なモデルではさらに長くなります。

図で要約したように、ノーマル モードでモデルをコンパイルするのに必要な時間は、アクセラレータ ターゲットまたはラピッド アクセラレータの実行可能ファイルをビルドする時間より短くなります。この図から明らかなことは、シミュレーションの停止時間が小さい場合、ノーマル モードの方がアクセラレータ モードまたはラピッド アクセラレータ モードよりも全般的なシミュレーション時間が早くなります。

アクセラレータ モードまたはラピッド アクセラレータ モードで実行時間が早くなる交差ポイントは、モデルの複雑度と内容に依存します。たとえば、インタープリター型コードを使用する多数のブロックが含まれたアクセラレータ モードで実行しているモード (「アクセラレータ モード用のブロックの選択」を参照) は、シミュレーションの停止時間が非常に大きい場合を除いて、ノーマル モードの実行速度と大差ありません。同様に、Stateflow Chart ブロックまたは MATLAB Function ブロックが多数含まれているモデルでは、シミュレーションの停止時間が長い場合を除いて、ノーマル モードと比べてさほど大きな速度の向上は見られません。

図解の目的で、グラフィックスは多数の Stateflow Chart ブロックまたは MATLAB Function ブロックがあるモデルを表しています。「ノーマル」というラベルの曲線は、モデルにこれらのブロックが含まれていなければ、初期経過時間がこれよりずっと小さくなります。

ターゲットが最新の場合のパフォーマンス

図の破線が示すように ("all targets up to date"「すべてのターゲットが最新」)、アクセラレータ ターゲットまたはラピッド アクセラレータ 実行可能ファイルが最新かどうかを Simulink® ソフトウェアが判別する時間は、コードの生成 ("all targets out of date"「すべてのターゲットが無効」) にかかる時間より大幅に少なくなります。さまざまな設計のトレードオフをテストするときには、この特性を利用できます。

たとえば、アクセラレータ モードのターゲット コードを一度作成し、それを使用して一連のゲイン設定でモデルをシミュレーションできます。この種の変更はターゲット コードの再生成を引き起こさないため、これは、アクセラレータまたはラピッド アクセラレータ モードを使用する場合に特に効率的な方法です。つまり、ターゲット コードはモデルの初回実行時に生成され、以降 Simulink コードはターゲットが最新かどうかの確認に必要な時間だけを費やします。このプロセスはコードの実行より速いので、以降の実行は初回の実行より大幅に高速化されることがあります。

ターゲットのチェックはコードの生成より速いため、コードを生成しなければならない場合よりもターゲットが最新の場合に、交差ポイントが小さくなります。つまり、モデルの以降の実行は、停止時間が短い場合でも、ノーマル モードに比べてアクセラレータまたはラピッド アクセラレータ モードでシミュレーションが高速に実行される可能性があります。

パフォーマンスの測定

アクセラレータ モードまたはラピッド アクセラレータ モードの実行時間をノーマル モードと比較するには、tic コマンド、toc コマンド、および sim コマンドを使用できます。

  1. モデルを開きます。

  2. [シミュレーションモード] メニューの [ノーマル] を選択します。

  3. コマンド ライン プロンプトで tictoc、および sim コマンドを使用して、モデルのシミュレーションにかかる時間をノーマル モードで測定します。

    tic,[t,x,y]=sim('myModel',10000);toc

    tictoc は連携して経過時間を記録して返し、次のようなメッセージを表示します。

    Elapsed time is 17.789364 seconds.

  4. [シミュレーションモード] メニューの [アクセラレータ] または [ラピッド アクセラレータ] を選択し、[実行] ボタンをクリックしてモデルの実行可能ファイルをビルドします。モデルの構造に変更がない限り、アクセラレータ モードは以降のシミュレーションでこの実行可能ファイルを使用します。「高速化されたモデルでのコードの再生成」では、モデルのリビルドを引き起こす要素について説明しています。

  5. コマンド プロンプトで、コンパイル済みモデルを再実行します。

    tic,[t,x,y]=sim('myModel',10000);toc

  6. 表示される経過時間は、加速したモデルの実行時間を示します。以下に例を示します。

    Elapsed time is 12.419914 seconds.
    

経過時間の差 (この例では 5.369450 秒) は、モデルを加速して得られた改善を示しています。

関連する例

詳細

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