8x8 ビットに対する MAC - 2023.2 日本語

AI エンジン カーネルおよびグラフ プログラミング ガイド (UG1079)

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

次の図に、int8 の X バッファーと int8 の Z バッファーを使用する MAC を示します。1 つ目の図はデータがどのように並べ替えられるかを示し、2 つ目の図は係数がどのように並べ替えられるかを示します。X バッファーと Z バッファーの並べ替え粒度は、それぞれ 32 ビットと 16 ビットです。xoffsets パラメーターは対になっています。最初の 16 進数値は絶対 32 ビット オフセットで、4 x 8 ビット値 (インデックス、インデックス + 1、インデックス + 2、インデックス + 3) を取得します。2 つ目の 16 進値は、最初の値 + 1 (32 ビット オフセット) からオフセットされ、4 x 8 ビット値を取得します。たとえば、0x00 はインデックス 0、1、2、3 と 4、5、6、7 を選択し、0x24 はインデックス 16、17、18、19 と 28、29、30、31 を選択します。

ほかに、xsquare という主な並べ替え後に 8 ビット粒度の回転を実行するパラメーターもあります。この例での xsquare パラメーターの役割は、次の図の中央に表示されています。

start (xstartzstart) および step (xstepzstep) パラメーターは常にデータ型の粒度に基づきます。つまり、16 ビットの場合は値 2 は 2 * 16 ビット先、8 ビット場合は値 2 は 2 * 8 先になります。step パラメーターは、選択したデータの次のブロックに適用されます。このため、offset パラメーターのペアで 2 * 2 ブロックを選択した場合、step は次の 2 * 2 ブロックに適用されます。インデックス値に追加する step は、並べ替え粒度 (データの場合は 32 ビット、係数の場合は 16 ビット) に揃える必要があります。たとえば、8 ビットのデータの場合、xstep は 4 の倍数にする必要があります。8 ビットの係数の場合、zstep は 2 の倍数にする必要があります。次の 2 つの図に、step がデータと係数にどのように使用されるかを示します。

int8 * int8 型の係数では、2 * 2 インデックス ブロックが複製され、4 * 2 ブロックが作成されます。インデックス 0、1、2 、3 がどのように複製されるかは、図 2 を参照してください。

図 1. int8 x int8 型に対する MAC8 (X 部分)
図 2. int8 x int8 型に対する MAC8 (Z 部分)