已合并
[feature] 提升msKL tiling/kernel快速调用接口使用体验,支持liboptiling.so和kernel .o自动匹配 #73
gong-siwei创建于 16 天前
[feature] 提升msKL tiling/kernel快速调用接口使用体验,支持liboptiling.so和kernel .o自动匹配 #73
已合并
gong-siwei创建于 16 天前
gong-siwei成员
16 天前

1. 修改描述

  • 修改原因:
    msKL 的 tiling_func/get_kernel_from_binary 接口需要手动指定 liboptiling.so 与 kernel .o 路径,使用不便;当构建产物中存在多个 kernel .o(多 soc、多算子、模板算子同名不同 dtype)时,难以准确选取。
  • 修改方案:
    1. tiling_func 新增可选入参 workspace:未显式传 lib_path 时,自动在 workspace 目录下递归搜索 liboptiling.so(多个时优先选择 _CPack_Packages/op_tiling 下的部署包);
    2. get_kernel_from_binarykernel_binary_file 改为可选:未指定时按 算子名(op_type) → 设备 soc → 同目录 json(dtype/format/shape) 依次过滤,自动选取 kernel .o
    3. 产物搜索范围扩展为整 workspace 递归(跳过 .git/third_party 等目录);移除依赖 llvm-objdump 的 tiling_key 符号过滤;
    4. 修复 tiling 生成代码中 data_path 反斜杠二次转义问题;确保 soc_version 正确传入 AddPlatformInfo
    5. 适配 pre-commit 检查(ruff/pylint/bandit 等)。
  • 修改内容:
    • mskl/launcher/opgen_workflow.pymskl/launcher/config.pymskl/launcher/context.pymskl/utils/launcher_utils.py
    • 单测:test_launcher_utils.py/test_opgen_workflow.py/test_config.py
    • 文档:docs/zhdocs/en API 参考。
  • 提交说明: 本次合入已合并为单个提交(squash)。

2. 功能验证


3. 代码检视

  • 检视committer人员名单与检视时间: 待定
  • 代码量说明: 本MR 9 个文件、新增约 987 行(<1000行)。

4. 资料修改自检

  • 资料修改: docs/zhdocs/en 的 API 参考已同步更新 tiling_func/get_kernel_from_binaryworkspace 入参与参数可选性说明。

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 gong-siwei 的贡献)
atomgit-bot
atomgit-bot
16 天前 评论:

变更摘要

本 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_binarykernel_binary_file 改为可选,通过新增的 _auto_search_kernel_binary 按算子名 → 设备 soc → 同目录 json(dtype/format/shape)逐级过滤自动选取 kernel .omskl/utils/launcher_utils.py 新增 search_tiling_sosearch_kernel_binary_filesmatch_kernel_binary_by_op_type/by_soc/by_jsonget_device_soc_name 等搜索匹配工具;context.pytiling_output/op_type/workspace/io_info 改为线程局部存储;同时修复 data_path 反斜杠二次转义问题,并配套新增/更新单测(test_launcher_utils.pytest_opgen_workflow.pytest_config.py),文档(docs/zhdocs/en)API 参考同步更新。

主要改动

  • liboptiling.so 自动搜索: TilingConfig 新增可选入参 workspace_parse_lib_pathlib_path 未显式传入时调用 search_tiling_so(get_workspace_path(workspace)) 在整 workspace 递归搜索 liboptiling.so(多个时优先路径含 _CPack_Packages/op_tiling 的部署包),搜索失败再回退到 CANN 默认 lib64/liboptiling.so
  • kernel .o 自动匹配: get_kernel_from_binarykernel_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.pydata_path 不再对反斜杠做二次转义(verify_data_path 中已通过 repr 完成 \\ 转义),仅保留双引号转义,修复路径错误问题。
  • 搜索范围与单测配套: 产物搜索扩展为整 workspace 递归(跳过 .git/__pycache__/third_party 等目录),并新增针对自动搜索、soc/json 匹配、线程隔离等场景的单测(新增 test/launcher/test_launcher_utils.py,扩充 test_config.pytest_opgen_workflow.py)。
likedislike
atomgit-bot
atomgit-bot
16 天前 评论:

代码审查

✅ 未发现问题

likedislike
ascend-robotascend-robot成员
16 天前 添加了label:stat/needs-squash
xzm123成员
16 天前 评论:

🤖 AIDD 文档质量检测报告

PR #73 的文档检测已全部完成。

📊 任务统计:共 12 个任务(✅ 12 完成 / ❌ 0 失败 / ⊘ 0 取消)
🐛 问题统计:共 59 个问题(致命 0 / 严重 18 / 一般 39 / 提示 2)

🔗 查看完整报告点击进入平台报告
🔗 查看 PR 检测问题点击查看问题列表

评论由 AIDD 自动生成,多次推送会增量更新本评论。

likedislike
ascend-robotascend-robot成员
16 天前 添加了label:ascend-cla/yes
此处折叠了113条消息 查看更多
ascend-robotascend-robot成员
15 天前 添加了label:approved
Goldfish_of_Siris
Goldfish_of_Siris成员
15 天前 评论:

/lgtm

likedislike
ascend-robotascend-robot成员
15 天前 添加了label:lgtm
ascend-robotascend-robot成员
15 天前 合入了pull request
ascend-robot
ascend-robot成员
15 天前 评论:

Pull Request 已合并或已关闭。

If you want to solve this problem, you can click here to do it in the FAQs.

likedislike