データの比較 - 2023.2 日本語

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

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

AI エンジン API を使用して、次のベクター比較演算を実行できます。

  • aie::eq
  • aie::neq
  • aie::le
  • aie::lt
  • aie::ge
  • aie::gt

ベクター比較演算では、2 つのベクターを要素ごとに比較するか、1 つのスカラーを 1 つのベクターと比較して、特殊型 aie::mask を返します。aie::mask の各ビットは、1 つの要素の比較結果を表します。

aie::vector<int32,16> v1,v2;

// compare each element
// true if v1[i]<v2[i]
aie::mask<16> msk_lt=aie::lt(v1,v2);

// set bit 0 to be true
msk_lt.set(0);

// set bit 1 to be false
msk_lt.clear(1);

/*element-wise selection 
 *select v2[i] if msk_lt[i] is true 
 */select v1[i] if msk_lt[i] is false;
aie::vector<int32,16> v_s=aie::select(v1,v2,msk_lt);

次の API は、2 つの入力ベクターまたは 1 つの入力ベクターと 1 つのスカラー値を要素ごとに比較し、最初の入力要素が 2 番目の入力要素よりも大きい場合はそれらの差分を返します。そうでない場合、その要素に対して 0 を返します。

  • aie::maxdiff
aie::vector<int16,16> v1,v2;

// vc[i]=(v1[i]>v2[i])?(v1[i]-v2[i]):0
auto vc=aie::maxdiff(v1,v2);

// vc[i]=(v1[i]>1)?(v1[i]-1):0
auto vc2=aie::maxdiff(v1,(int16)1);

// vc[i]=(2>v2[i])?(2>v2[i]):0
auto vc3=aie::maxdiff((int16)2,v2);

次の API は、2 つの入力ベクターのすべての要素を比較し、bool 値を返します。

aie::equal
2 つの入力ベクターの要素すべてが等しいかどうかを返します。2 つのベクターのデータ型とサイズは同じである必要があります。
aie::not_equal
2 つの入力ベクターに等しくない要素があるかどうかを返します。2 つのベクターのデータ型とサイズは同じである必要があります。

次の API は、2 つのベクター (または 1 つのスカラーと 1 つのベクター) を要素ごとに比較し、最大値または最小値を選択します。スカラーとベクターのデータ型は同じである必要があります。

  • aie::max
  • aie::min
// vc[i]=max(v1[i], v2[i])
aie::vector<int32,16> vc=aie::max(v1,v2);