メインコンテンツ

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

生成コードの実行時間プロファイリング

実行時間プロファイリングを使用して、次を行うことができます。

  • 生成されたコードが、ターゲット ハードウェアでリアルタイムな展開のための実行時間に対する要件を満たしているかどうかを判別する。

  • 実行速度の向上が必要なコード セクションを特定する。

以下のタスクはコード実行プロファイリングを使用する一般的なワークフローを表しています。

  1. Simulink® モデルでアルゴリズムを設計してシミュレートします。

  2. コード実行プロファイリング用にモデルを構成し、コードを生成して、生成コードをターゲット ハードウェアで実行します。シミュレーション モードの選択の詳細については、以下の表を参照してください。

  3. コード実行プロファイリングのプロットとレポートを使用して実行速度を解析します。たとえば、次のようなことができます。

    • タスクまたはアルゴリズム コードが実行時間の要件を満たしていることを確認する。

    • パフォーマンスを低下させている、最適化が必要なコードの部分を特定する。

    • 機能をさらに追加するために、まだ利用可能なハードウェア リソースを調べる。

    • スケジューリングの問題を早期に検出し、アルゴリズム コードの実行を使用可能なプロセッサ コアに分散する方法を調べる。

    • 機能の変更に起因するパフォーマンスの低下を検出する。

    • 機能、速度、リソースの間のトレードオフがパフォーマンスに影響するかどうかを調べる。

  4. 必要に応じて、モデルを微調整して手順 2 に戻ります。

  5. 十分な数のテスト ケースがある場合は、coder.profile.test.runTests を使用してタスクの実行時間の解析を自動化できます。各タスクで、実行時間が最も長いものと、対応するテスト ケースを識別します。

次の表に、Simulink 製品を使用した実行時間プロファイリングに関する情報を示します。

実行のタイプターゲット 関連製品 目的
ソフトウェアインザループ (SIL) 開発用コンピューター Embedded Coder®

生成コードを開発用コンピューターで実行します。開発用コンピューターがターゲット ハードウェアと異なる場合でも、SIL プロファイリングにより、パフォーマンスのトレンドについての目安が得られます。たとえば、SIL シミュレーションで実行時間が倍増していれば、ターゲット ハードウェアでも増えるものと見込まれます。

SIL プロファイリングは、開発時に次の目的に使用します。

  • タスク プロファイリングのみを有効にして、生成されるタスクの実行時間を測定する。

  • 関数プロファイリングを有効にして、アルゴリズムの重要な関数の実行時間を測定する。

  • 関数プロファイリングを有効にして、パフォーマンスのボトルネックを特定する。

  • パフォーマンスを過去の実行と比較して、変更によって生じたパフォーマンスの低下を検出する。

Create Execution-Time Profile for Generated CodeおよびView and Compare Code Execution Timesを参照してください。

Linux® 開発用コンピューターでは、コンピューターのパフォーマンス監視ユニット (PMU) からのメトリクスを使用してプロファイルを生成できます。Generate Profiles Using PMU Metricsを参照してください。

プロセッサインザループ (PIL) 組み込みハードウェアまたは命令セット シミュレーター Embedded Coder

生成コードをターゲット ハードウェアで実行し、生成コードがリアルタイムの展開のための実行時間に対する要件を満たしているかどうかを調べます。

PIL プロファイリングは、開発時に SIL プロファイリングで行うのと同じタスクを実行するために使用できます。PIL プロファイリングの方が正確な結果が得られます。Create Execution-Time Profile for Generated CodeおよびView and Compare Code Execution Timesを参照してください。

開発のリリース段階で、PIL プロファイリングを使用してパフォーマンスを評価できます。十分な数のテスト ケースがある場合、coder.profile.test.runTests を使用してモデルの実行を自動化し、使用される入力に対して実行時間が最も長いタスクを特定できます。

PIL の結果は、エミュレーターと最終的なターゲット ハードウェアで異なることがあります。ただし、ターゲット ハードウェアが確定的であるほど、PIL の結果の再現性も高まります。

インストルメンテーションによるオーバーヘッドが加わりますが、高度に確定的な (キャッシュ サイズが小さい) ターゲット ハードウェアでは、オーバーヘッドをフィルター処理して正確な結果が得られます。Remove Instrumentation Overheads from Execution Time Measurementsを参照してください。

Linux ハードウェアでは、ハードウェアのパフォーマンス監視ユニット (PMU) からのメトリクスを使用してプロファイルを生成できます。Generate Profiles Using PMU Metricsを参照してください。

XCP エクスターナル モード開発用コンピューターまたはカスタム ハードウェアEmbedded Coder

生成コードをリアルタイムで実行し、実行時間プロファイリングを実行します。Create Execution-Time Profile for Generated Codeおよびコード実行データの解析を参照してください。

XCP エクスターナル モード プロファイリングはタスクの解析に使用します。次のことが可能です。

  • 生成されるタスクの実行時間とプリエンプション時間を測定する。

  • タスクがどのようにスケジュールされているかを確認し、タスク オーバーラン イベントを監視してスケジューリングの問題を迅速に特定する。Visualize Task Scheduling in XCP External Mode Simulationを参照してください。

  • スケジューリングの問題の防止や CPU の作業負荷の軽減のために CPU の実行可能性解析を実行する。Validate Task-to-CPU Mappingを参照してください。

関数プロファイリングを有効にできますが、エクスターナル モード シミュレーション中はインストルメンテーション オーバーヘッドがフィルター処理されず、PIL シミュレーションの場合よりもオーバーヘッドが高くなります。関数の正確な実行時間を取得するには PIL シミュレーションを使用します。

リアルタイム実行Simulink Real-Time™Simulink Coder™, Simulink Real-Time

生成コードの実行時間プロファイリングを Speedgoat® コンピューターでリアルタイムで実行します。Execution Profiling for Real-Time Applications (Simulink Real-Time) を参照してください。

参考

トピック