Tiling调测功能
功能介绍
Tiling是算子开发中独立且关键的部分,描述了昇腾AI处理器上算子的输入/输出数据切分、分块计算、多核并行等策略,以满足片上存储限制和计算pipeline的需求,最大化计算并行性和数据局部性(data locality OR data reuse),从而发挥硬件的极致性能。
对单算子执行Tiling调测时,根据Tiling so文件执行Tiling运算,生成Tiling bin文件。
目前仅标准自定义算子工程场景、ops_adv算子工程场景需要进行Tiling调测,其余场景不涉及。
使用方法(命令行)
- 完成环境搭建,并准备好输入/标杆数据文件。
- 执行如下命令进行Tiling调测,这里仅提供关键参数项,其他参数请参考Tiling调测参数按需配置。
- 标准自定义算子场景
ascendebug tiling --json-file ${op_config_json_file} --repo-type ${repo_type} --chip-version ${chip_version} --customize-path ${INSTALL_DIR}/opp/vendors/${vendor_name} --work-dir ${work_dir} ... {其他参数}
- ops_adv算子场景
ascendebug tiling --json-file ${op_config_json_file} --repo-type ${repo_type} --chip-version ${chip_version} --repo-path ${repo_path} --work-dir ${work_dir} --recompile-tiling ... {其他参数}
Tiling调测涉及的所有参数可通过ascendebug tiling -h或ascendebug tiling --help查看。
- 标准自定义算子场景
- 查看调测产物。Tiling调测结果存放在--work-dir目录下,详细说明参见调测产物。
使用方法(API)
- 完成环境搭建,并准备好输入/标杆数据文件。
- 完成调测前准备,通过create_debug_op接口构造DebugOp类实例对象debug_op。
- 构建算子信息。调用DebugOp类里input系列接口(如tensor_input、custom_input等),设置算子的输入、输出、属性值等信息。
- 创建调试对象并初始化工作空间。调用create_op_executor接口,创建调试对象op_executor,用户可传入${work_dir}参数手动设置工作空间。
- 执行Tiling计算。
- 标准自定义算子场景:直接调用run_custom_tiling接口即可。
- ops_adv算子场景:
如需在本地调试Tiling代码,请使用方式1;如果Tiling无需调试,且Tiling so仅作为Kernel调试的输入,请使用方式2。
- 方式1:先调用compile_ops_adv_tiling接口基于本地算子源码仓编译Tiling so,再调用run_tiling执行Tiling计算。
- 方式2:调用run_ops_adv_tiling接口直接从CANN软件包中自动获取Tiling so并进行Tiling计算。
- 查看调测产物。Tiling调测结果存放在${work_dir}目录下,详细说明参见调测产物。
调测产物
无论是命令行方式或API方式,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
文件名 |
说明 |
---|---|
attrs.json |
根据算子属性、输入/输出信息生成的中间文件。 |
inputs.json |
|
outputs.json |
|
tiling_data_tiling_key_2_block_dim_24_workspace_106258432.bin |
Tiling数据bin文件,供CPU和NPU调测使用。
说明:
文件名中“tiling_key_2_block_dim_24_workspace_106258432”表示tiling_key=2,block_num=24,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文件名中。 |