初期化 - 2023.2 日本語

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

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

次の関数を使用すると、ベクター レジスタを未定義、すべてを 0、ローカル メモリからのデータで初期化するか、または値の一部を別のレジスタから初期化し、残りの部分を未定義にすることができます。undef_type() 初期化子を使用して初期化すると、値の未定義の部分にかかわらず、コンパイラで最適化されるようになります。

v8int32 v;
v8int32 uv = undef_v8int32(); //undefined
v8int32 nv = null_v8int32(); //all 0's
v8int32 iv = *(v8int32 *) reals; //re-interpret "reals" as "v8int32" pointer and load value from it
v16int32 sv = xset_w(0, iv); //create a new 512-bit vector with lower 256-bit set with "iv"

上記の例では、ベクター セット組み込み関数 [T]set_[R] により、一部のみを初期化し、ほかの部分は未定義のままにするベクターを作成できます。[T] は設定するターゲット ベクター レジスタを示しており、W レジスタ (256 ビット) の場合は w、X レジスタ (512 ビット) の場合は x、Y レジスタ (1024 ビット) の場合は y を指定します。[R] はソース値の供給元を示しており、V レジスタ (128 ビット) の場合は v、W レジスタ (256 ビット) の場合は w、X レジスタ (512 ビット) の場合は x を指定します。[R] の幅は [T] の幅よりも狭くなっています。有効なベクター セット組み込み関数は、wset_vxset_vxset_wyset_vyset_w、および yset_x です。

static キーワードは、ベクター データ型にも適用されます。デフォルト値は初期化されない場合は 0 で、この値はグラフ実行の反復間で保持されます。