【2023 · CANN训练营第一季】Ascend C算子开发入门(中)

1.课程简介

课程地址

第二章 Ascend C(旧名TIK C++)算子编程范式及算子实现

https://www.hiascend.com/zh/developer/courses/detail/1627494761683783682

 课程视频

https://space.bilibili.com/1190614918/channel/collectiondetail?sid=1201995

TIK2文档

https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/63RC1alpha002/operatordevelopment/tik2opdevg/atlastik2_10_0001.html

在线实验>基于昇腾CANN的TIK C++算子开发

https://www.hiascend.com/zh/edu/experiment/detail/Tik_xl

示例代码

https://gitee.com/zgx950813/samples/tree/master/tik2_demo/kernel_samples/kernel_add_sample

2.课程内容

2.1流水任务
单核处理程序可以有多个流水任务,任务之间会有数据依赖关系

每个流水任务可以进行数据切片使得多个任务并行执行

矢量编程的三个流水任务(Stage

CopyIn
Compute
CopyOut

2.2任务间通信与同步

知识点

任务通信与同步管理单元 Queue
TQue
代码中的使用示例
TQue<TPosition::VECOUT, 2> que;
Queue 接口
EnQue(放入Queue)
DeQue(从Queue中取出)
Queue 的逻辑位置( QuePosition
VECIN
VECOUT

关于矢量编程的任务间通信与同步的描述,正确的是:

Compute 任务中主要进行了数据的计算操作,需要从 VECIN 中取出 LocalTensor ,最后将结果 LocalTensor 存入 VECOUT

2.3内存管理

知识点

内存管理单元 Pipe
TPipe
TBuf
Pipe 接口
InitBuffer (…)
Queue接口
AllocTensor (…)
FreeTensor (…)
Buf接口
Get(…)

 内存管理模块 Pipe

 Pipe对TBuf初始化存储空间,Get方法获取全部分配到的存储空间或部分空间,从TBuf分配到LocalTensor

LocalTensor<T> Get<T>();

LocalTensor<T> Get<T>(uint32_t len);

 

2.4算子开发流程

知识点

2.4.1基于内核调用符方式

 2.4.2算子分析

 2.4.3核函数定义

 2.4.4算子类实现

 2.4.5成员函数实现

下列关于矢量Add算子开发流程的描述,正确的是:

A. 该样例使用了多个优化方法,如多核并行, Tiling 分块, Double Buffer
B. 该样例使用了多个 TIK C++ API 接口,如涉及数据搬运的 DataCopy (…) ,涉及数据计算的 Add(…)
C. 该样例使用了 Queue 来管理任务同步,实例化了 VECIN VECOUT 的队列来管理 LocalTensor EnQue(…) DeQue(…)
D. Init(…) 函数主要为了做一些内存初始化操作,如使用 SetGlobalBuffer (…) 来确定不同逻辑 ID 核的 GlobalTensor 初始地址
E. 该样例设计了 CPU 模式和 NPU 模式,并用内置宏 __CCE_KT_TEST__ 区分,开启宏的代码块会在C PU 模式下参与编译

2.5样例演示

算子样例代码包含
算子工程编译配置 CMakeLists.txt
算子核函数源码文件
算子输入和真值数据生成脚本
算子主机侧调用源码文件
算子一键化调用脚本

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值