【2023 · CANN训练营第一季】TIKC++算子开发入门
1. 学会编写TIK2-helloworld演示样例
1.1 认识运行CPU核NPU模式的头文件的区别
//表示在CPU模式下头文件
#include "tikicpulib.h"
#define __alcore__
//表示在NPU模式下头文件
#include "acl/acl.h.h"
#define __alcore__
1.2 了解核函数的定义
核函数(Kernel Function )是TIK C++ 算子设备侧的入口。TIK C++ 允许用户使用核函数这种C/C++ 函数的语法扩展来管理设备侧的运行代码,用户在核函数中实现算子逻辑的编写,例如自定义算子类及其成员函数以实现该算子的所有功能。核函数是主机侧和设备侧连接的桥梁。
核函数(内核函数)是Tik C++ 算子设备侧的入口。Tik C++ 允许用户使用核函数这种C/C++函数的语法扩展来管理设备侧的运行代码,用户在核函数中实现算子逻辑的编写,例如自定义算子类及其成员函数以实现该算子的所有功能。核函数是主机侧和设备侧连接的桥梁。
核函数是直接在设备侧执行的代码。在核函数中,需要为在一个核上执行的代码规定要进行的数据访问和计算操作,当核函数被调用时,多个核将并行执行同一个计算任务
核函数是直接在设备侧执行的代码.在核函数中,需要为在一个核上执行的代码规定要进行的数据访问和计算操作,当核函数被调用时,多个核将并行执行同一个计算任务
2. 理解CPU模式和NPU模式的区别
CPU模式∶算子功能调试用,可以模拟在NPU上的计算行为,不需要依赖昇腾设备
NPU模式∶算子功能/性能调试,可以使用NPU的强大算力进行运算加速
使用
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打开
5.2 用CPU运行命令执行文件
bash cmd.sh
5.3 用npu执行
由于是执行编写核函数,没有特别的输出