ロック ストールの解析 - 2023.2 日本語

AI エンジン ツールおよびフロー ユーザー ガイド (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 日本語

Performance Metrics ビューでは、ロック ストールを解析する必要があるかどうかを判断できます。Vitis IDE でロック ストールを解析するには、次の手順に従います。

  1. Trace ビューを選択します。
  2. Lock Stalls ビューを選択します。
    ヒント: Stalls ビューは、Trace ビュー、Graph ビュー、および Array ビューで表示されます。
    図 1. Trace ビューのロック ストール
    各ストールには、次の情報が表示されます。
    NAME
    ロック ストールには、LS_<NUM> という名前が付けられます。番号は、ストールのすべてのタイプの間で固有です。発生した順番に番号が付けられます。
    Stalled Tile
    ストールしたカーネルが存在する AI エンジン タイル。
    Stalled Kernel
    ストールしたカーネル。<Kernel_function_name>.<Schedule_ID>.<Graph_instance_name> という名前です。_main と表示されることもあり、その場合はクロスプローブして実際のカーネル関数を見つける必要があります。
    Start (ps)
    ストールの開始時間。
    Duration (ps)
    ストール時間の長さ。
    PC
    ストールが発生したときのプログラム カウンター。
    Type
    ストールしたカーネルが試みている操作 (バッファーの読み出し (Read) または書き込み (Write))。
    Buffer
    ストールしたカーネルが読み出しまたは書き込みしようとしているバッファー。
    Stalled Port
    ストールしたカーネルのバッファーを読み出しまたは書き込みしようとしているポート。
    Lock Holder
    バッファーのロックを保持しているソース。
    Related Stall
    ストールを発生させる可能性のあるほかのストール。
    ヒント: 緑色でハイライトされている項目は、ほかのビューにクロスプローブできます。
  3. ストールの 1 つの行を選択します。Trace ビューのそのストールの開始に移動します。ストールを右クリックして Filter Trace をクリックすると、ストールに関連する信号をフィルターできます。Trace ビューに、ストールに関連する信号が表示されます。関連しない信号は非表示になります。デザインが大きい場合は、トレースを調べる方が簡単です。
    ヒント: Filter Trace でストールに関連する信号が表示されないことがあります。
  4. Trace ビューは、タイムラインにロック ストールを表示するのに使用できます。特定のロック ストールに対し、書き込みロックおよび読み出しロックが割り当てられたときに表示できます。ストールの位置およびストール前後のイベントから、ストールの原因を解析できます。たとえば、書き込みロックが既に割り当てられており、ロック タイプが Read の場合、バッファーがプロデューサーにより解放されていないことを示します。コンシューマーは、それが読み出し可能になるのを待っている状態です。このプロデューサーは、Lock Holder に示されています。
  5. 以前にフィルターされたトレースをクリアするには、右クリックして Clear All Filters をクリックします。
  6. 通常、Graph ビューでストール パスの全体図を表示すると有益です。Graph ビューを選択し、ドロップダウン リストから Tile View をクリックします。Graph ビューの Tile ビューには、グラフが AI エンジン タイル別に表示されます。
  7. Stalls ビューが表示されていない場合は、ドロップダウン リストから Lock Stalls を選択し、解析するストールを選択します。Graph ビューの Tile ビューに関連するパスがハイライトされます。
  8. ストールが発生しているパスは赤で示されます。ストールが発生しているソースへのパスが白で示されます。
  9. PC 値をクリックします。ソース コードが開き、ストールが発生した行が示されます。

次の表に、ロック ストールが発生する状況と可能なソリューションを示します。

表 1. ロック ストールが発生する状況とソリューション
ソース ターゲット デスティネーション ストール タイプ 可能なソリューション
AI エンジン カーネル 同期ウィンドウのロック AI エンジン カーネル ロック ストール
  • シングル バッファーを使用する場合は、ピンポン バッファー (デフォルト) を使用するか、カーネルを同じ AI エンジン タイルに配置します。
  • カーネルの実行時間のバランスが取られていない場合は、カーネル間でスループットのバランスを取ります。
AI エンジン カーネル 非同期ウィンドウのロック (window_acquire および window_release API) AI エンジン カーネル ロック ストール
  • シングル バッファーを使用する場合は、ピンポン バッファー (デフォルト) を使用します。
  • バッファーを時間内に取得して解放します。必要に応じてローカル バッファーを使用します。
PL インターフェイス ウィンドウのロック AI エンジン カーネル ロック ストール
  • PL インターフェイスのスループットと AI エンジンのスループットが一致していることを確認します。
  • PL フェイスの周波数および幅が適切に設定されていることを確認します。 『AI エンジン カーネルおよびグラフ プログラミング ガイド』 (UG1079)AI エンジン/プログラマブル ロジックの統合を参照してください。
AI エンジン ウィンドウのロック PL インターフェイス ロック ストール
  • PL インターフェイスのスループットと AI エンジンのスループットが一致していることを確認します。
  • PL フェイスの周波数および幅が適切に設定されていることを確認します。 『AI エンジン カーネルおよびグラフ プログラミング ガイド』 (UG1079)AI エンジン/プログラマブル ロジックの統合を参照してください。
注記: DMA ロック ストールは、Vitis IDE のロック ストール解析には含まれません。