TIK C++ 常用接口
-
常用数据定义:
GlobalTensor
GlobalTensor
用来存放Global Memory
(外部存储) 的全局数据
定义原型:
GlobalTensor的定义原型
void Init(__gm__ uint8_t *__restrict__ src_gm, __gm__ uint8_t *__restrict__ dst_gm){
uint32_t datasize = 256;//设置1nputBloba1的大小为256
GlobalTensor<int32_ t> inputGlobal; // 类型为int32_t
// 设置源操作数在Global Memory上的起始地址为src_gm,所占外部存铺的大小为256个int32_t
inputGlobal.SetGlobalBuffer(reinterpret_cast<__gm__ int32_t *>(src.gm), dataSize);
LocalTensor<int32_t> inputLocal = inQueueX.AllocTensor<int32_t>();
DataCopy(inoutLocal, inputGlobal, dataSize); // 将Global Memory上的inputGlobal拷贝到Local Memory的inputLocal上
...
}
-
常用数据定义:
LocalTensor
LocalTensor
用于存放核上Local Memory
(内部存储) 的数据
定义原型:
LocalTensor的定义原型
// input_local长度设置为256个int32_t类型的数据
// 示例1:对input_local中第i个位置进行赋值为188
for (int32_t i = 0: i < 256; ++1) {
input_local.SetValue (1, 188);
}
// 结果:input_local为256个188 [188 188 188 ... 188]
// 示例2:获取input_local中第19个位置的数值
auto element = input_local.Getvalue(19);
// 结果:element为188
矢量计算指令接口
矢量计算指令接口,能够启动Al Core
中的Vector
单元执行计算 为了降低开发者的使用门槛,指令按照由易到难,分成了3级到0级接口。其中3级接口最为简单,0级接口最为复杂,(1级接口还未发布)
多层级API封裝的作用:
- 降低复杂指令的使用难度
- 跨代兼容性保障
- 保留最大灵活度的可能
多层级API
- 规约指令操作:ReduceMax, ReduceMin, ReduceSum,
- 单目指令操作:Exp、 Ln、 Abs, Reciprocal. Sqrt, Rsqrt. Not, Relu、 Sigmoid. Tanh.
- 双目指令操作:Add. Sub. Mul, Div. Max Min. And. Or.
- 标量双目指令探作:Adds. Muls、 Maxs、 Mins. ShiftLeft., ShiftRight. LeakyRelu. ..
- 标量三目指令探作:Axpy.
- 比较指令操作:Compare、
- 选择指令操作:Select. ReduceV2、
- 精度转换指令操作:Cast.,
- 特殊规约指令操作:WholeReduce. BlockReduce, PairReduce、
- 数据转换搡作:Transpose、 TransData To5HD、
- 数据填充操作:Duplicate. Breb.
- 数据搬移操怍:DataCopy、Copy、
矢量计算指令接口