メモリ ストール - 2023.2 日本語

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

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

マップの目的は、可能な限りバッファーの競合を回避することです。異なるレベルのバッファー最適化もあり、バッファーのサイズを大きくして競合を回避しようとします。バッファーの最適化のレベルの範囲は、0 (デフォルト) ~ 9 です。Xmapper--Xmapper=BufferOptLevel<level num> オプションで指定されます。最高のバッファー最適化レベル (9) では、2 つのバッファーを同じバンクに配置することはできません。バッファーの最適化レベルを高くすると、マップでソリューションを見つけることができず、エラーとなることがあります。メモリ ストールが多数発生している場合はまず BufferOptLevel オプションを異なる設定で試し、bufferOptLevels の値を高くした場合にメモリ ストールが削減されるかを調べます。

別の方法として、2 つのバッファーを同じバンクに配置しないように指定することもできます。スループットの低下がバッファー kernel_0.in[0]kernel_1.out[0] のバンク競合によるメモリ ストールが原因である場合は、次の指示子を指定して、これらのバンクが同じバンクに配置されないようにします。

not_equal(location<buffer>(kernel_0.in[0]), location<buffer>(kernel_1.out[0]));
注記: バッファーは異なるバンクに配置できますが、同じ AI エンジン タイル上に配置されるとは限りません。
デザインで DMA FIFO を使用しており、これらがほかのバッファーと同じバンクに配置されている場合は、XrouterDMAFIFOsInFreeBankOnly オプションを使用して、FIFO が空いているバンクに配置されるようにします。これにより、DMA FIFO とのメモリ競合がなくなります。空いているバンク全体を DMA FIFO 専用に使用できない場合は、ロケーション制約をメモリ バッファーの知識と共に使用できます。この場合、DMA FIFO と競合したときにどのバッファーがストールするかを知っておくことが重要です。制約は次のようになります。
location<fifo>(net2) = { dma_fifo(aie_tile, 15, 0, 0x3100, 32) };