Performance Metrics ビューでは、ストリーム ストールを解析する必要があるかどうかを判断し、ストールの原因となっているタイル/タイルを特定できます。
Vitis IDE の Performance Metrics ビューから開始して、ストリーム ストールを解析するには、次の手順に従います。
-
Performance
Metrics ビューで Stream
Stall Time (%) を選択し、すべてのタイルにおけるストリーム ストールを表示します。解析するタイルを特定します。Performance Metrics ビューのオブジェクトは、Trace ビュー、Graph ビュー、および Array ビューにクロスプローブできます。たとえば、 Performance
Metrics ビューでタイルを選択すると、Trace ビューでタイルがハイライトされ、すばやく見つけることができます。
-
Trace ビューを選択します。
-
Stream Stalls ビューを選択します。Stalls ビューでは、ストリーム ストールに関する次の情報が表示され、青で表示されているオブジェクトをクリックするとほかのビューにクロスプローブできます。
- NAME
- ストリーム ストールには、
SS_<NUM>
という名前が付けられます。発生した順番に番号が付けられます。番号は、ストールのすべてのタイプの間で固有です。 - Stalled Tile
- ストールしたカーネルが存在する AI エンジン タイル。
- Stalled Kernel
- ストールしたカーネル。
<Kernel_function_name>.<Schedule_ID>.<Graph_instance_name>
という名前です。_main
と表示されることもあり、その場合はクロスプローブして実際のカーネル関数を見つける必要があります。 - Start (ps)
- ストールの開始時間。
- Duration (ps)
- ストール時間の長さ。
- [PC]
- ストールが発生したときのプログラム カウンター。
- Stalled Port
- ストールしたカーネルのポート。
- Related Stalls
- ストールを発生させる可能性のあるほかのストール。
- Full Destination
- フルであるためにストールしたカーネルで書き込むことができなかったポート。
- Empty Source
- 空であるためにストールしたカーネルで読み出すことができなかったポート。
- Stalls ビューでストリーム ストールをクリックすると、そのストールの開始に移動します。必要に応じてストールを右クリックし、Filter Trace をクリックします。トレースをフィルターすると、Trace ビューにストールに関連する信号が表示されます。関連しない信号は非表示になります。デザインが大きい場合は、フィルター トレースを使用してトレースを調べるとわかりやすくなります。
- Stalls ビューで青で表示されるオブジェクトは、クリックしてクロスプローブできます。たとえば、Stalls ビューでカーネルをクリックすると、そのカーネルが Trace ビューでハイライトされます。
- Trace ビューを拡大/縮小して、ストールを調べます。ストールの位置から、類似のストールが発生する頻度、ストール前のイベント、関連するストール (ある場合) から、その発生理由を示すヒントが得られます。
- フィルターされたトレースをクリアするには、右クリックして Clear All Filters をクリックします。
-
Graph ビューでストール パスの全体図を表示すると有益です。Graph ビューを選択し、ドロップダウン リストから Tile View をクリックします。
- Stalls ビューを選択し、ドロップダウン リストから Stream Stalls をクリックします。
-
Stalls ビューでストリーム ストールを確認します。[Stalls] ビューでストリーム ストールをクリックすると、そのストールの全体図がグラフに表示されます。ストールが発生しているパスは赤で示されます。ストールしたカーネルから完全なデスティネーション ポート、または空のソース ポートからストールしたカーネルです。ヒント: ストリームが複数のデスティネーションにマルチキャストされ、ストリームにすべてのデスティネーションに対する十分な FIFO がない場合、ハイライトされているストールしたカーネルとストールしたネットが接続されていないことがあります (別々に赤で表示)。つまり、ストリーム ストールの解析では、マルチキャスト ストリーム全体のすべてのデスティネーション調べる必要があります。次の図に、Graph ビューのマルチキャスト ストリーム ストールの例を示します。
-
Graph ビューまたは Array ビューから、のソース コードまたはカーネルのソース コードを開くことができます。Stalls ビューでカーネル オブジェクトをクリックするか、Graph ビューでカーネルをクリックして、カーネル インスタンスを選択します。
- Graph ビューでカーネル インスタンスを右クリックし、Goto Graph Source または Goto Kernel Source をクリックします。グラフのソース コードまたはカーネルのソース コードが開きます。
- グラフのソース コードとカーネルのソース コードを、解析しているストールに関連付け、必要に応じてソース コードを編集します。
次の表に、ストリーム ストールが発生する状況と可能なソリューションを示します。
ソース | デスティネーション | ストール タイプ | 可能なソリューション | 注記 |
---|---|---|---|---|
ストリーム | ストリーム | ストリーム ストール |
|
|
ストリーム | 複数のストリーム | ストリーム ストール |
|
マルチキャスト |
ストリーム | 同じ AI エンジンにある複数のカーネルの複数のストリーム | ストリーム ストール |
|
マルチキャスト |
複数のストリーム | 複数のストリーム | ストリーム ストール |
|
|
PLIO | ストリーム | ストリーム ストール |
|
|
ストリーム | PLIO | ストリーム ストール | 同上。 | |
ストリーム (反復につき 32 ビット) | PLIO | ストリーム ストール | 32 ビットごとに TLAST を送信します。 『AI エンジン カーネルおよびグラフ プログラミング ガイド』 (UG1079) の AI エンジンと PL のインターフェイスのパフォーマンスを参照してください。 |