ベクター レジスタ レーンの並べ替え - 2023.2 日本語

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

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

AI エンジンの固定小数点ベクター ユニットのデータパスは、次の 3 つの個別に使用可能なパスで構成されます。

  • メイン MAC データパス
  • シフト/丸め/飽和パス
  • アップシフト パス

メインの乗算パスはベクター レジスタから値を読み出し、ユーザー制御可能な方法でこれらを並べ替え、前置加算 (オプション) の後に乗算を実行し、後置加算した値をアキュムレータ レジスタの直前の値に加算します。

メイン データパスはアキュムレータに格納されますが、シフト/丸め/飽和パスはアキュムレータ レジスタから読み出され、ベクター レジスタまたはデータ メモリに格納されます。メイン データパスと並行して、アップシフト パスが実行されます。乗算は実行されませんが、単にベクターを読み出し、シフトアップして、結果をアキュムレータに送ります。固定点および浮動点データパスの詳細は、 『Versal アダプティブ SoC AI エンジン アーキテクチャ マニュアル』 (AM009) を参照してください。これらのデータパスの実行に使用できる組み込み関数の詳細は、 『AI エンジン組み込み関数ユーザー ガイド』 (UG1078) を参照してください。

次の図に示すように、MAC データパスの基本的な機能には、X バッファーと Z バッファーからのデータ間のベクター積和演算があります。その他のパラメーターとオプションを使用すると、ベクター内でデータを柔軟に選択して出力レーン数を指定でき、オプションの機能により、異なる入力データ サイズおよび前置加算を使用できます。乗算前に X バッファーの値と前置加算できる Y バッファーという入力バッファーもあります。組み込み関数の結果は、アキュムレータに追加されます。

図 1. MAC データパスの機能の概要

この演算は、レーンを使用して説明できます。レーン数は、組み込み関数の呼び出しから生成される出力値の数です。列数は出力レーンごとに実行される乗算の数であり、各乗算結果は加算されます。次に例を示します。

acc0 += z00*(x00+y00) + z01*(x01+y01) + z02*(x02+y02) + z03*(x03+y03)
acc1 += z10*(x10+y10) + z11*(x11+y11) + z12*(x12+y12) + z13*(x13+y13)
acc2 += z20*(x20+y20) + z21*(x21+y21) + z22*(x22+y22) + z23*(x23+y23)
acc3 += z30*(x30+y30) + z31*(x31+y31) + z32*(x32+y32) + z33*(x33+y33)

この場合、4 つの出力が生成されるため、各出力 (X および Y バッファーからの前置加算を含む) に 4 つのレーンと 4 つの列があります。

組み込み関数のパラメーターを使用すると、各レーンおよび列の異なる入力バッファーから柔軟にデータを選択できます。パラメーターのパターンはすべて同じになります。次のセクションでは、データ選択 (またはデータ並べ替え) 方法について、shuffle および select 組み込み関数の詳細な例を使用して説明します。mac 組み込み関数とそのバリエーションの詳細も、次のセクションで説明します。