【2023 · CANN训练营第一季】TIKC++算子开发入门
收藏回复举报
【2023 · CANN训练营第一季】TIKC++算子开发入门
发表于2023-05-11 15:43:22
0 查看

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

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

true

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

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

1.2 了解核函数的定义

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

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

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

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

true

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打开

true

5.2 用CPU运行命令执行文件

bash cmd.sh

true

5.3 用npu执行

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

我要发帖子