Pull Request已成功合入, 合并人@ascend-robot
(感谢 gong-siwei 的贡献)变更摘要
本 PR 旨在提升 msKL tiling_func/get_kernel_from_binary 快速调用接口的使用体验:通过新增 workspace 入参实现 liboptiling.so 与 kernel .o 的自动搜索匹配,并将单次调用相关的上下文改为线程局部存储以支持多线程并发调用。核心改动包括:TilingConfig 新增 workspace 参数并在未显式传 lib_path 时自动搜索 liboptiling.so(优先 _CPack_Packages/op_tiling 部署包,失败回退 CANN 默认路径);get_kernel_from_binary 的 kernel_binary_file 改为可选,通过新增的 _auto_search_kernel_binary 按算子名 → 设备 soc → 同目录 json(dtype/format/shape)逐级过滤自动选取 kernel .o;mskl/utils/launcher_utils.py 新增 search_tiling_so、search_kernel_binary_files、match_kernel_binary_by_op_type/by_soc/by_json、get_device_soc_name 等搜索匹配工具;context.py 将 tiling_output/op_type/workspace/io_info 改为线程局部存储;同时修复 data_path 反斜杠二次转义问题,并配套新增/更新单测(test_launcher_utils.py、test_opgen_workflow.py、test_config.py),文档(docs/zh、docs/en)API 参考同步更新。
主要改动
liboptiling.so自动搜索:TilingConfig新增可选入参workspace,_parse_lib_path在lib_path未显式传入时调用search_tiling_so(get_workspace_path(workspace))在整 workspace 递归搜索liboptiling.so(多个时优先路径含_CPack_Packages/op_tiling的部署包),搜索失败再回退到 CANN 默认lib64/liboptiling.so。- kernel
.o自动匹配:get_kernel_from_binary的kernel_binary_file改为可选,_auto_search_kernel_binary按「文件名以<op_type>_开头 → 路径中kernel目录下一级 soc 目录与设备 soc(get_device_soc_name)匹配 → 同目录 json 的supportInfo中 dtype/format/shape 匹配(支持动态 shape、FormatAgnostic、dtype 别名归一化)」三级过滤自动选取,多候选时告警并取第一个。 - 调用上下文改为线程局部存储:
context.py引入threading.local(),将tiling_output/op_type/workspace/io_info改为线程级隔离,tiling_func内将workspace与由入参构建的io_info(_build_io_info)写入 context;reset()改为逐属性重置并清理当前线程局部状态,避免多线程调用不同算子时互相覆盖。 data_path转义修复:config.py中data_path不再对反斜杠做二次转义(verify_data_path中已通过repr完成\\转义),仅保留双引号转义,修复路径错误问题。- 搜索范围与单测配套: 产物搜索扩展为整 workspace 递归(跳过
.git/__pycache__/third_party等目录),并新增针对自动搜索、soc/json 匹配、线程隔离等场景的单测(新增test/launcher/test_launcher_utils.py,扩充test_config.py、test_opgen_workflow.py)。


/lgtm


Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


1. 修改描述
msKL 的
tiling_func/get_kernel_from_binary接口需要手动指定liboptiling.so与 kernel.o路径,使用不便;当构建产物中存在多个 kernel.o(多 soc、多算子、模板算子同名不同 dtype)时,难以准确选取。tiling_func新增可选入参workspace:未显式传lib_path时,自动在 workspace 目录下递归搜索liboptiling.so(多个时优先选择_CPack_Packages/op_tiling下的部署包);get_kernel_from_binary的kernel_binary_file改为可选:未指定时按 算子名(op_type) → 设备 soc → 同目录 json(dtype/format/shape) 依次过滤,自动选取 kernel.o;.git/third_party等目录);移除依赖 llvm-objdump 的 tiling_key 符号过滤;data_path反斜杠二次转义问题;确保soc_version正确传入AddPlatformInfo;mskl/launcher/opgen_workflow.py、mskl/launcher/config.py、mskl/launcher/context.py、mskl/utils/launcher_utils.py;test_launcher_utils.py/test_opgen_workflow.py/test_config.py;docs/zh、docs/enAPI 参考。2. 功能验证
3. 代码检视
4. 资料修改自检
docs/zh与docs/en的 API 参考已同步更新tiling_func/get_kernel_from_binary的workspace入参与参数可选性说明。