データ シャッフル - 2023.2 日本語

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

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

AI エンジン シャッフル組み込み関数は、開始パラメーターとオフセット パラメーターに従って、1 つの入力データ バッファーからデータを選択します。これにより、値を配置し直さなくても、入力ベクター値を柔軟に並べ替えることができます。xbuff は入力データ バッファーで、xstartxbuff データ バッファー内の各レーンの開始位置オフセットを示し、xoffset はデータ バッファーに適用される位置オフセットを示します。シャッフル組み込み関数には、8、16、および 32 レーンのバリエーション (shuffle8shuffle16、および shuffle32) があります。データの主な並べ替え (xoffsets) は 32 ビット粒度で、xsquare は主な並べ替え後に 16 ビット粒度の並べ替えを実行します。つまり、8 ビットおよび 16 ビット ベクターの組み込み関数には、より複雑な並べ替え用に square パラメーターを追加で設定できます。

たとえば、shuffle16 組み込み関数には次の関数プロトタイプがあります。

v16int32 shuffle16	(	      v16int32 xbuff,
	int xstart,
	unsigned int xoffsets,
	unsigned int xoffsets_hi 
)	

データ並べ替えは 32 ビット粒度で実行されます。データ サイズが 32 ビットまたは 64 ビットの場合、開始およびオフセットはフル データ幅 (32 ビットまたは 64 ビット) を基準にします。レーン選択は、通常のレーン選択方式に従って実行されます。

f: result [lane number] = (xstart + xbuff [lane number]) Mod input_samples

次に、v16int32 ベクターのシャッフルの例を示します。xoffset および xoffset_hi の各レーンは 4 ビットです。この例では、バッファーの偶数要素と奇数要素をバッファーの下位部分と上位部分に移動します。

図 1. int32 型のデータ シャッフル

データ並べ替えが 16 ビット データで実行される場合、組み込み関数には別の xsquare パラメーターが含まれるので、データの 4 x 16 ビット ブロックごとにデータを柔軟に選択できます。xoffset は対になっています。最初の 16 進数値は絶対 32 ビット オフセットで、2 x 16 ビット値 (インデックス、インデックス + 1) を取得します。2 つ目の 16 進値は、最初の値 + 1 (32 ビット オフセット) からオフセットされ、2 x 16 ビット値を取得します。たとえば、0x00 はインデックス 0、1 およびインデックス 2、3 を選択します。0x24 はインデックス 8、9 およびインデックス 14、15 を選択します。次に、v32int16 ベクターのシャッフルの例を示します。

図 2. int16 型のデータ シャッフル