【CANN训练营0基础赢满分秘籍】TIKC++算子开发入门

【2023 · CANN训练营第一季】TIKC++算子开发入门

1. 学会编写TIK2-helloworld演示样例

image.png

1.1 认识运行CPU核NPU模式的头文件的区别

//表示在CPU模式下头文件
#include "tikicpulib.h"
#define __alcore__
 //表示在NPU模式下头文件
#include "acl/acl.h.h"
#define __alcore__

1.2 了解核函数的定义

image.png
核函数(Kernel Function )是TIK C++ 算子设备侧的入口。TIK C++ 允许用户使用核函数这种C/C++ 函数的语法扩展来管理设备侧的运行代码,用户在核函数中实现算子逻辑的编写,例如自定义算子类及其成员函数以实现该算子的所有功能。核函数是主机侧和设备侧连接的桥梁。
核函数(内核函数)是Tik C++ 算子设备侧的入口。Tik C++ 允许用户使用核函数这种C/C++函数的语法扩展来管理设备侧的运行代码,用户在核函数中实现算子逻辑的编写,例如自定义算子类及其成员函数以实现该算子的所有功能。核函数是主机侧和设备侧连接的桥梁。

核函数是直接在设备侧执行的代码。在核函数中,需要为在一个核上执行的代码规定要进行的数据访问和计算操作,当核函数被调用时,多个核将并行执行同一个计算任务
核函数是直接在设备侧执行的代码.在核函数中,需要为在一个核上执行的代码规定要进行的数据访问和计算操作,当核函数被调用时,多个核将并行执行同一个计算任务

2. 理解CPU模式和NPU模式的区别

CPU模式∶算子功能调试用,可以模拟在NPU上的计算行为,不需要依赖昇腾设备
NPU模式∶算子功能/性能调试,可以使用NPU的强大算力进行运算加速
使用

image.png

3. 认识内置宏__CCE_KT_TEST__和执行宏ICPU_RUN_KF

**内置宏__CCE_KT_TEST__**标识被宏包括的代码在特定的模式下编译

#ifdef _CCE_Kr_TEST_表示在CPU模式下会编译该段代码
#ifdef _CCE_KT_TEST_ 表示在NPU模式下会编译该段代码

4. 掌握CPU模式和NPU模式下主机侧的重要接口

  • GmAlloc(…)与GmFree(…)
  • aclInit(…)与ac1Finalize(…)
  • aclrtCreateStream()与aclrtDestroyStream(…)
  • aclrtalloc(…)与aclrtFree(…)
  • aclrtrallocHost(…)与aclrtFreeHost(…)
  • aclrtHemcpy(…)

5. 成功编译CPU模式和NPU模式下的helloworld并执行

5.1 获取官方给出的代码,vscode打开

image.png

5.2 用CPU运行命令执行文件

bash cmd.sh

image.png

5.3 用npu执行

由于是执行编写核函数,没有特别的输出
image.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值