基本概念
概念 |
描述 |
---|---|
标准自定义算子工程场景 |
参考《Ascend C自定义算子开发指南》的“算子调用 > 了解开发工程”章节,其对自定义算子工程的算子开发流程和步骤提供了详细描述。 |
核函数直调工程场景 |
参考《Ascend C自定义算子开发指南》的“算子调用 > 了解开发工程”章节,其对Kernel直调工程的算子开发流程和步骤提供了详细描述。 |
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上板调测中检测是否有同步问题。 |
原地算子 |
一般是指原地更新操作类算子,即算子的输入和输出为同一地址,算子在计算完成后,把原有的输出结果直接覆盖在输入的地址上,以减少不必要的内存占用。 |