出力ストリームの書き込みおよび前進 - 2023.2 日本語

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

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

AI エンジン操作

次の操作は、データを指定の出力ストリームに書き込み、そのストリームを AI エンジン上で前進させます。AI エンジンには 2 つの出力ストリーム ポートがあるので、物理的なポートの割り当ては AI エンジン コンパイラにより自動的に実行され、ストリーム データ構造の一部として指定されます。データ値は、1 つずつまたはベクターとして出力ストリームに書き込むことができます。ベクターとして書き込む場合、すべての値が書き込まれるまで、ストリーム操作は停止します。データのグループ化は、基になる 1 サイクルの 32 ビット ストリーム操作または 4 サイクルの 128 ビット幅ストリーム操作に基づきます。カスケード接続では、すべての値が並列に書き込まれます。

void writeincr(output_stream<int32> *w, int32 v);
void writeincr(output_stream<int64> *w, int64 v);
void writeincr(output_stream<uint32> *w, uint32 v);
void writeincr(output_stream<cint16> *w, cint16 v);
void writeincr(output_stream<cint32> *w, cint32 v);
void writeincr(output_stream<float> *w, float v);
void writeincr(output_stream<cfloat> *w, cfloat v);

void writeincr_v<16>(output_stream<int8> *w, aie::vector<int8,16> &v);
void writeincr_v<16>(output_stream<uint8> *w, aie::vector<uint8,16> &v);
void writeincr_v<8>(output_stream<int16> *w, aie::vector<int16,8> &v);
void writeincr_v<4>(output_stream<cint16> *w, aie::vector<cint16,4> &v);
void writeincr_v<4>(output_stream<int32> *w, aie::vector<int32,4> &v);
void writeincr_v<2>(output_stream<cint32> *w, aie::vector<cint32,2> &v);
void writeincr_v<4>(output_stream<float> *w, aie::vector<float,4> &v);

void writeincr_v<8>(output_stream<acc48> *w, aie::accum<acc48,8> &v);
void writeincr_v<4>(output_stream<cacc48> *w, aie::accum<cacc48,4> &v);
void writeincr_v<4>(output_stream<acc80> *str, aie::accum<acc80,4> &v);
void writeincr_v<2>(output_stream<cacc80> *str, aie::accum<cacc80,2> &v);
void writeincr_v<8>(output_stream<accfloat> *str, aie::accum<accfloat,8> &v);
void writeincr_v<4>(output_stream<caccfloat> *str, aie::accum<caccfloat,4> &v);
注記: ストリームの終了を示すために、次に示すように writeincr API で TLAST 引数を使用できます。
void writeincr(output_stream<int32> *w, int32 value, bool tlast);