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} ... {其他参数}
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查看。
通过API进行Tiling调测的关键步骤如下,详细样例参考Tiling调测。
如需在本地调试Tiling代码,请使用方式1;如果Tiling无需调试,且Tiling so仅作为Kernel调试的输入,请使用方式2。
无论是命令行方式或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文件名中。 |