このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
アクセラレータモードとラピッドアクセラレータモードは,ノーマルモードに比べて,シミュレーションの実行時間がコード生成に必要な時間を超えるときに速度の向上が最大になります。このため,アクセラレータモードとラピッドアクセラレータモードは通常,シミュレーションの実行時間が数分以上のときにノーマルモードよりパフォーマンスが向上します。ただしStateflow®またはMATLAB函数ブロックの数が多いモデルでは,ノーマルモードに比べてわずかな速度向上が見られるだけです。これは,ノーマルモードでは,これらのブロックはコード生成を通してシミュレーションを実行するからです。
モデルに調整可能なパラメーターを含めた場合も,シミュレーション時間が長くなります。
次の図は,ノーマル,アクセラレータ,およびラピッドアクセラレータモードでシミュレーションを実行した仮想モデルのパフォーマンスを一般論として示しています。
図の実線は,ターゲットコードをリビルドしなければならない場合のパフォーマンスを示しています(“所有目标日期”“すべてのターゲットが無効”)。この仮想モデルの場合,タイムスケールは分の順番ですが,複雑なモデルではさらに長くなります。
図で要約したように,ノーマルモードでモデルをコンパイルするのに必要な時間は,アクセラレータターゲットまたはラピッドアクセラレータの実行可能ファイルをビルドする時間より短くなります。この図から明らかなことは,シミュレーションの停止時間が小さい場合,ノーマルモードの方がアクセラレータモードまたはラピッドアクセラレータモードよりも全般的なシミュレーション時間が早くなります。
アクセラレータモードまたはラピッドアクセラレータモードで実行時間が早くなる交差ポイントは,モデルの複雑度と内容に依存します。たとえば,インタープリター型コードを使用する多数のブロックが含まれたアクセラレータモードで実行しているモデル(アクセラレータモード用のブロックの選択を参照)はシミュレーションの停止時間が非常に大きい場合を除いて,ノーマルモードの実行速度と大差ありません。同様に,Stateflow图表ブロックまたはMATLAB函数ブロックが多数含まれているモデルでは,シミュレーションの停止時間が長い場合を除いて,ノーマルモードと比べてさほど大きな速度の向上は見られません。コード生成を通じて,Stateflow图表ブロックまたはMATLAB函数ブロックでモデルを高速化できます。
図解の目的で,グラフィックスは多数のStateflow图表ブロックまたはMATLAB函数ブロックがあるモデルを表しています。”“ノーマルというラベルの曲線は,モデルにこれらのブロックが含まれていなければ,初期経過時間がこれよりずっと小さくなります。
図の破線が示すように(“所有目标日期”“すべてのターゲットが最新”),アクセラレータターゲットまたはラピッドアクセラレータ実行可能ファイルが最新かどうかを仿真软件金宝app®ソフトウェアが判別する時間は,コードの生成(“所有目标日期”“すべてのターゲットが無効”)にかかる時間より大幅に少なくなります。さまざまな設計のトレードオフをテストするときには,この特性を利用できます。
たとえば,アクセラレータモードのターゲットコードを一度作成し,それを使用して一連のゲイン設定でモデルをシミュレーションできます。この種の変更はターゲットコードの再生成を引き起こさないため,これは,アクセラレータまたはラピッドアクセラレータモードを使用する場合に特に効率的な方法です。つまり,ターゲットコードはモデルの初回実行時に生成され,以降模型金宝appコードはターゲットが最新かどうかの確認に必要な時間だけを費やします。このプロセスはコードの実行より速いので,以降の実行は初回の実行より大幅に高速化されることがあります。
ターゲットのチェックはコードの生成より速いため,コードを生成しなければならない場合よりもターゲットが最新の場合に,交差ポイントが小さくなります。つまり,モデルの以降の実行は,停止時間が短い場合でも,ノーマルモードに比べてアクセラレータまたはラピッドアクセラレータモードでシミュレーションが高速に実行される可能性があります。
アクセラレータモードまたはラピッドアクセラレータモードの実行時間をノーマルモードと比較するには,抽搐
、toc
、sim卡
の各コマンドを使用できます。
モデルを開きます。
[シミュレーション]タブの[シミュレーション]セクションで,ドロップダウンメニューから[ノーマル]
を選択します。
コマンドラインプロンプトで抽搐
、toc
,およびsim卡
コマンドを使用して,モデルのシミュレーションにかかる時間をノーマルモードで測定します。
抽搐,t, x, y = sim (myModel, 10000); toc
抽搐
とtoc
は連携して経過時間を記録して返し,次のようなメッセージを表示します。
运行时间为17.789364秒。
[シミュレーション]タブの[シミュレーション]セクションで,ドロップダウンメニューから[アクセラレータ]
または[ラピッドアクセラレータ]
を選択します。[実行]をクリックしてモデルの実行可能ファイルをビルドします。モデルの構造に変更がない限り,アクセラレータモードは以降のシミュレーションでこの実行可能ファイルを使用します。高速化されたモデルでのコードの再生成では,モデルのリビルドを引き起こす要素について説明しています。
コマンドプロンプトで,コンパイル済みモデルを再実行します。
抽搐,t, x, y = sim (myModel, 10000); toc
表示される経過時間は,加速したモデルの実行時間を示します。以下に例を示します。
运行时间为12.419914秒。
経過時間の差(この例では5.369450秒)は,モデルを加速して得られた改善を示しています。