基本概念
概念 |
描述 |
---|---|
标准自定义算子工程场景 |
该场景下,用户需按照“工程创建->算子实现->编译部署>算子调用”的流程完成算子开发和调用。基于工程代码框架完成算子核函数的开发和Tiling实现,通过工程编译脚本完成算子编译部署。Tiling开发基于CANN提供的编程框架进行,后续更易于借助框架功能实现单算子API调用、图模式算子调用等。 |
核函数直调工程场景 |
该场景下,用户完成算子核函数开发和Tiling实现后,即可通过AscendCL运行时接口,完成算子调用。是简单直接的开发方式,Tiling开发不受CANN框架的限制。 |
ops_adv工程场景 |
全称为cann-ops-adv算子工程,是基于昇腾硬件的融合算子库(ops表示算子,adv表示advanced)。 |
内源框架工程场景 |
此类算子开发场景属于预留开发场景,开发者无需关注。 |
built-in算子工程场景 |
|
输入数据和标杆数据 |
使用Ascend C调测工具时,需要提供算子输入数据及标杆数据(Golden数据)。
输入数据和标杆数据可通过numpy生成,样例如下: import numpy as np def gen_data_simple(): input_x = np.random.uniform(-100, 100, [8, 2048]).astype(np.float16) input_y = np.random.uniform(-100, 100, [8, 2048]).astype(np.float16) golden = (input_x + input_y).astype(np.float16) input_x.tofile("./input/input_x.bin") # 通过numpy生成的随机输入数据x input_y.tofile("./input/input_y.bin") # 通过numpy生成的随机输入数据y golden.tofile("./output/golden.bin") # 根据输入计算出来的真值数据,即标杆数据 |
算子json配置文件 |
用于描述算子的输入、输出及属性信息,以json格式存储。该文件中的参数个数、顺序、数据类型等信息,必须与算子原型相匹配。 工具支持以下两种配置格式:
|
Tiling |
描述昇腾AI处理器上算子的输入/输出数据切分、分块计算、多核并行等策略,主要是为了满足片上存储限制和计算pipeline的需求,最大化计算并行性和数据局部性(data locality OR data reuse),从而发挥硬件的极致性能。 |
Profiling |
Profiling性能分析工具,用于采集和分析运行在昇腾AI处理器上的AI任务各个运行阶段的关键性能指标。用户可根据输出的性能数据,快速定位软硬件性能瓶颈,提升AI任务性能分析的效率。详细内容参见《性能分析工具使用指南》。 |
CAModel |
CAModel(Cycle Accurate Model)仿真器主要用于生成算子性能仿真流水数据。通过在仿真器上运行算子kernel.o文件,并生成过程日志,进而得到算子仿真流水。 |
PIPE_ALL |
指在核函数的每个操作指令中间插入pipe_all同步指令,一般用于NPU上板调测中检测是否有同步问题。 |
ccec |
本工具基于毕昇编译器,通过自动拼接编译选项构建的一种编译方式。其中,毕昇编译器是一款专为达芬奇SOC设计的编译器,支持异构编程扩展,可将用户编写的昇腾算子代码编译成二进制可执行文件和动态库等形式,详细介绍请参考《毕昇编译器使用指南》。 |
原地算子 |
一般是指原地更新操作类算子,即算子的输入和输出为同一地址,算子在计算完成后,把原有的输出结果直接覆盖在输入的地址上,以减少不必要的内存占用。 |