【2023 · CANN训练营第一季】高阶班笔记
1、调用cmath的add函数、仅调用TIK C++的Sub接口实现开发Add算子
2、核函数返回类型为void
3、TIK C++算子设备侧实现的入口函数是核函数
4、TIK C++矢量编程范式不包含Split
5、TIK C++矢量编程范式包含
CopyIn
Compute
CopyOut
6、任务间数据传递使用到的内存统一由内存管理模块Pipe进行管理
7、核函数中编写算子逻辑实现代码时,我们可以使用DataCopy
8、EnQue接口会将LocalTensor放入VECIN的Queue中
9、Queue内存初始化功能由InitBufferAPI提供
10、CPU侧调试时发现精度与预期不符,应该重点检查Compute部分代码实现
11、矢量编程范式中,负责矢量计算操作的任务是Compute
12、使用DataCopy接口可以将GloableTensor数据拷贝到LocalTensor
13、TIK C++算子开发,host侧算子实现包括:
算子原型注册
算子信息库配置
算子核函数形状推导函数实现与注册
Tiling实现与注册
14、TIK C++矢量算子开发时,需要在核函数内完成算法逻辑实现
15、CPU侧调试时,可以通过添加打印定位问题
16、TIK C++编程框架具有四层接口抽象、并行编程范式、孪生调试等优势
17、TIK C++算子开发是在核函数中进行算子类对象的创建和其成员函数的调用,实现算子的所有功能
18、TIK C++算子开发核函数必须具有void返回类型
19、TIK C++算子核函数中不可以使用std::vector保存数据
20、NPU侧调试时,不可以通过添加打印定位问题
21、核函数的调用不是同步调用
22、TIK C++矢量算子开发时,需要定义核函数
23、TIK C++矢量算子样例中,不是在CopyIn函数内完成Queue内存初始化
24、CPU测试通过,NPU不一定也能测试通过
25、使用NPU模式调用核函数时,blockDim参数规定了核函数在几个核上执行
26、Vector编程范式不包含的任务流程Split
27、__aicore__函数类型限定符来表示核函数是在设备端AI Core上执行的
28、矢量编程中VECIN是搬入数据的存放位置
29、CopyIn任务中将输入数据从Global内存搬运至Local内存后,需要使用EnQue操作将LocalTensor放入VECIN的Queue中
30、TIK C++算子核函数指针入参变量可以定义的类型为__gm__ uint8_t*
31、开发算子时有代码DataCopy(src0Local, src0Global, calCount), 根据API限制条件,calCount的正确的值可能为32
32、假设InitBuffer时设置的内存长度为512B,那么调用AllocTensor的Tensor占用大小为512
33、TIK C++最易用的接口级别为3
34、开发算子,在设备侧实现算子功能时可以:
调用TIK C++提供的接口实现算子功能
使用+, -, *, /实现算子功能
35、实现一个add算子,那么他可能会使用的代码为
Add(zLocal, xLocal, yLocal, TILE_LENGTH);
zLocal = xLocal + yLocal
36、算子类实现中算子功能实现是在Compute函数中完成的
37、开发算子后发现算子实际执行结果与预期不符,通过下列方法进行定位:
通过gdb调试定位问题
通过添加打印调试定位问题
38、TIK C++矢量编程范式中CopyIn阶段会将GlobalTensor数据拷贝到LocalTensor
39、使用GlobalTensor和LocalTensor作为数据的基本操作单元,它是各种指令API直接调用的对象,也是数据的载体
40、开发host侧算子实现时,一定需要完成的功能有
算子原型注册
算子信息库配置
41、完成一个完整的算子开发流程:
创建TIK C++算子工程
host侧算子实现
kernel侧算子实现
算子部署
算子ST测试
42、TIK C++的矢量编程范式把算子实现流程分为
CopyIn
Compute
CopyOut
43、核函数的执行配置:blockDim、l2ctrl、stream
44、将LocalTensor拷贝到GlobalTensor上是在CopyOut任务中执行的
- 点赞
- 收藏
- 关注作者
评论(0)