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);