【2023·CANN训练营第一季】TIK C++ 常用接口

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、

矢量计算指令接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值