跳到主要内容

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调测功能。

  1. 完成环境搭建,并准备好输入/标杆数据文件。

  2. 执行如下命令进行Tiling调测,这里仅提供关键参数项示例,其他参数请参考Tiling调测参数按需配置。

    标准自定义算子场景:

    ascendebug tiling --json-file {op_config_json_file } --chip-version ${chip_version} --work-dir ${work_dir} ... {其他参数}

    Tiling调测涉及的所有参数可通过ascendebug tiling -hascendebug tiling --help查看。

  3. 查看结果文件,详细说明参见产物说明

产物说明

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.binTiling数据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.binTiling调测过程中的信息文件,包含block_dim、workspace大小以及tiling_key等信息。该文件关键信息已映射到Tiling数据bin文件名中。