Tiling调测功能
功能介绍
Tiling是算子开发中独立且关键的部分,描述了Kirin AI处理器SoC NPU IP加速器上算子的输入/输出数据切分、分块计算、多核并行等策略,以满足片上存储限制和计算pipeline的需求,最大化计算并行性和数据局部性(data locality OR data reuse),从而发挥硬件的极致性能。
对单算子执行Tiling调测时,根据Tiling so文件执行Tiling运算,生成Tiling bin文件。
目前仅标准自定义算子工程场景、ops_adv算子工程场景、built-in工程场景、内源框架工程场景需要进行Tiling调测,其余场景不涉及。
使用方法(命令行)
通过命令行进行Tiling调测的关键步骤如下,详细样例请参考Tiling调测功能。
-
完成环境搭建,并准备好输入/标杆数据文件。
-
执行如下命令进行Tiling调测,这里仅提供关键参数项示例,其他参数请参考Tiling调测参数按需配置。
标准自定义算子场景:
ascendebug tiling --json-file {op_config_json_file } --chip-version ${chip_version} --work-dir ${work_dir} ... {其他参数}Tiling调测涉及的所有参数可通过ascendebug tiling -h或ascendebug tiling --help查看。
-
查看结果文件,详细说明参见产物说明。
产物说明
Tiling调测结果存放在${root}/${work_dir}/tiling路径下,其中${root}表示当前操作路径,${work_dir}表示调测工作空间,默认为./debug_workspace/${op_type}目录,${op_type}为算子名。产物一般包含Tiling data bin文件(二进制)、结构体解析文件等,目录结构示例如下,结果文件的详细说明参见表1。
├ ${op_type} // 算子名
├── tiling
│ ├── attrs.json
│ ├── inputs.json
│ ├── outputs.json
│ ├── tiling_data_tiling_key_2_block_dim_1_workspace_106258432.bin
│ ├── tiling_parse_result.json
│ ├── tiling_run_info.bin
表1 Tiling调测结果说明
| 文件名 | 说明 |
|---|---|
| attrs.json | 根据算子属性、输入/输出信息生成的中间文件。 |
| inputs.json | 根据算子属性、输入/输出信息生成的中间文件。 |
| outputs.json | 根据算子属性、输入/输出信息生成的中间文件。 |
| tiling_data_tiling_key_2_block_dim_1_workspace_106258432.bin | Tiling数据bin文件,供CPU和simulator调测使用。 说明: 文件名中“tiling_key_2_block_dim_1_workspace_106258432”表示tiling_key=2,block_num=1,workspace=106258432,这些信息可用于后续核函数编译和运行(比如--block-num取值为block_dim值)。 |
| tiling_parse_result.json | 对生成的Tiling数据bin文件解析,生成Tiling结构体文件,该文件展现了Tiling中每个数据的数据类型dtype和数值value。 |
| tiling_run_info.bin | Tiling调测过程中的信息文件,包含block_dim、workspace大小以及tiling_key等信息。该文件关键信息已映射到Tiling数据bin文件名中。 |