Kernel Stall - 2024.1 日本語

Vitis ガイダンス メッセージ (UG1315)

Document ID
UG1315
Release Date
2024-05-30
Version
2024.1 日本語

詳細

アプリケーションが、ランタイム中に高レベルのカーネル ストールをレポートしました。これは、アプリケーションの全体的なパフォーマンスに影響する可能性があります。

説明

ランタイムによりレポートされるストールには、次の 3 つの種類があります。

[Intra-Kernel Dataflow Stalls (%)]
カーネル内のデータ ストリーミング中にストールした時間の実行時間に対する割合。これらのストールは、内部データフロー ブロックのストール信号のいずれかが High になったときのサイクルです。たとえば、内部ブロック、プロデューサーおよびコンシューマーはそれぞれ II=1、II=2 でパイプライン処理されます。これは、プロデューサーが 1 クロック サイクルおきにしかデータを生成できないのに対し、コンシューマーは各サイクルでデータを受信できるため、50% のストールとしてレポートされます。
[External Memory Stalls (%)]
CU 外のメモリ転送でストールした時間の実行時間に対する割合。これは、複数のポートが同時にメモリにアクセスすることで競合が発生し、転送が停止してしまうことが原因です。
[Inter-Kernel Pipe Stalls (%)]
CU 外とのデータ ストリーミング中にストールした時間の実行時間に対する割合。これらは、カーネル間でフルの FIFO に書き込んだり、カーネル間で空の FIFO から読み込んだりすることが原因です。

回避策

次を実行すると、ストールが改善される可能性があります。

[Intra-Kernel Dataflow Stalls]
  • HW エミュレーションを実行すると、階層的なストール信号を使用するため、より詳細な情報を得ることができます。
  • カーネルの内部ブロック/ループ内の FIFO サイズを増加します。
[External Memory Stall]
アプリケーションで可能な場合は、アクセスのためのメモリ ポート数を増加します。
[Inter-Kernel Pipe Stalls]
HW エミュレーションを実行すると、階層的なストール信号を使用するため、より詳細な情報を得ることができます。
  • カーネル間の FIFO の深さを増加すると、パフォーマンスが向上します。
  • プロデューサーの FIFO への書き込みよりコンシューマーの読み出しの方が速い場合は、コンシューマーがスターブ状態にならないよう、プロデューサーのスループットを向上させて、FIFO を満たすようにします。
  • プロデューサーの FIFO への書き込みよりコンシューマーの読み出しの方が遅い場合は、コンシューマーのスループットを向上させ、プロデューサーが FIFO フルのために待たされることがないようにします。