説明
このルールは、AI エンジン コアのストール率をチェックします。
説明
AIE コアのストールには、メモリ、ストリーム、カスケード、ロックなど多くの種類があります。
- MEMORY_STALL: Time AI エンジンはメモリ ストール中でした。これには、同一サイクル内で同一バンクに複数のメモリ アクセスがあったり、複数のカーネルが同一バンクの複数のメモリにアクセスしたり、といった複数の理由が考えられます。
- STREAM_STALL: Time AI エンジンはストリーム ストール中でした。これには、ストリームが書き込みよりも速く読み出されたり、PL からのストリームにより遅い周波数のクロックが使用されるなど、複数の原因がある可能性があります。
- CASCADE_STALL: Time AI エンジンはカスケード ストール中でした。これには、カスケード ストリームが書き込みよりも速く読み出されたり、PL からのストリームにより遅い周波数のクロックが使用されるなど、複数の原因がある可能性があります。
- LOCK_STALL: Time AI エンジンはロック ストール中でした。これには、バッファーが書き込まれるよりも速く読み込まれたり、PL 間のストリームにより遅い周波数のクロックが使用されるなど、複数の原因がある可能性があります。
推奨
サポートされるストールすべての詳細は、 『AI エンジン ツールおよびフロー ユーザー ガイド』 (UG1076) を参照してください。
- MEMORY_STALL: このストールは、トレース結果を使用してアクセス パターンを調べ、メモリを異なるバンクに配置するか、Aiecompiler の BufferOptLevel マップ オプションを使用すると、回避できます。
- 異なるバンクにメモリを送信します メモリには、システム メモリ、RTP、ウィンドウ バッファー、データ メモリが含まれます。
- メモリ バンクが枯渇している場合は、プロファイルとトレースで、より良いソリューションを見つけます。
- aiecompiler で BufferOptLeve オプションを指定し、デザインを構築します。
- STREAM_STALL: このストールは、トレース結果を使用してストリームのアクセス パターンを調べ、ストリームの FIFO の深さを増やしたり、バランスを調整したりするか、AI エンジンへの PL 帯域幅を最大化すると、回避できます。
- FIFO の深さを増加します。
- ループ内のストリームの読み出しおよび書き込み命令を調整します。
- 複数ストリーム: DMA FIFO を挿入するか、異なるデスティネーション ネットには異なる FIFO の深さを設定します。
- PLIO: AIE-PL インターフェイスの帯域幅を最大化します。例は、64 ビット インターフェイス、PL の最高周波数 (AIE 周波数は 1/2)、BLI レジスタ (チャンネルあり) などです。
- CASCADE_STALL: このストールは、トレース結果を使用してストリームのアクセス パターンを調べ、入力/出力ストリーム間で一致するようにループ内の命令を調整するか、AI エンジンへの PL 帯域幅を最大化すると回避できます。
- ループ内の命令を調整します。
- LOCK_STALL: このストールは、トレース結果を使用してバッファーのアクセス パターンを調べ、バッファーの取得と解放を時間どおりに実行すると、回避できます。ローカル バッファーを使用しても、問題が解決することがあります。また、PL インターフェイスがストールのソースまたはデスティネーションである場合、PL インターフェイスのスループットが AI エンジンのスループットと一致するようにする必要があります。
- ピンポン バッファー (デフォルト) を使用します。
- カーネル間のスループットのバランスを調整します。
- バッファーを時間内に取得して解放します。必要に応じてローカル バッファーを使用します。