已关闭
[Question]: ops-blas / ops-sparse / catlass 这三类形态能否用 ATK 测试? #23
brian66237创建于  8月20日关闭于  8月25日
brian66237
8月20日 创建

背景

我们在评估用 ATK 测试社区算子时,遇到三个仓的形态与标准算子工程(ops-math / ops-nn / ops-transformer 这一族)不同,都没有 op_api/、没有 GE 注册、也不产出 OPP 算子包:

仓 形态 接口示例
ops-blas cuBLAS 风格句柄式 C API,host 直接 launch kernel aclblasGemmEx(handle, transA, transB, m, n, k, alpha, A, Atype, lda, ...)
ops-sparse cuSPARSE 风格,输入还需先构造稀疏/稠密描述符 aclsparseSpMV(handle, opA, alpha, matA_descr, vecX_descr, ..., externalBuffer)
catlass 纯头文件模板库(include/ 下 301 个头文件、0 个 .cpp) 无可直接调用的接口,用户实例化模板后自行编译

我们的观察

  • kernel 后端要求 op_type 已在 OPP 中注册。对照实验见 #22:同一组用例仅把 kernel_name 从 Abs 换成 GemmEx,就从 2/2 通过变为 0/2 Failed,atc --singleop 编不出 .om。
  • pyaclnn 后端需要 libcust_opapi.so 中的 aclnnXxxGetWorkspaceSize 符号,pytorch 后端需要 torch_npu 绑定——这三个仓都不提供。
  • catlass 自带 examples/advanced/basic_matmul_aclnn,演示用 msOpGen 把模板接入标准算子工程从而获得 aclnn 接口。

问题

1. 这三类形态,ATK 当前是否支持测试? 如果支持,分别走哪条后端?

2. 如果不支持,各自推荐的测试路径是什么?

对 catlass,是否就是按自带样例先用 msOpGen 包装成算子工程,再用 pyaclnn 后端测?对 ops-blas / ops-sparse,是否也建议另做一层包装?我们的顾虑是包装之后测到的是新写的那层,两个仓真正对外交付的句柄式 API(含其 host 侧校验与 tiling)不在被测范围内。

3. 用例描述层能否表达这类参数?

现有 parameter_type 是 tensor / scalar / attr / list / tuple 等,而句柄、稀疏描述符、host 侧标量指针、以及 leading dimension 表示的子矩阵视图似乎都不在其中。想确认这是有意划定的边界,还是尚未覆盖的场景。

环境信息

- 昇腾硬件: Ascend910_93
- CANN 软件版本: 9.0.1
- ATK 版本: 26.8.8(由 master a0dfc9a 源码构建)
- 被评估仓: ops-blas @ 621aafd、ops-sparse @ f2803aa、catlass(master)
likedislike
lixiaolong9527
8月20日 评论:

您好,欢迎向 ATK 提交Issue!
我们已收到您的反馈,感谢您对开源社区的支持。

处理时效:维护团队将在24小时内查看并回复您的问题(工作日)。
自助查询:再等待期间,建议您先查阅仓库内的文档资料,可能已有解决方案。

请确保Issue描述清晰,包含复现步骤和日志,这将帮我们更快定位问题。谢谢!

likedislike
Bbrian66237
8月20日 修改标题为 “[Question]: ops-blas / ops-sparse / catlass 这三类形态能否用 ATK 测试?”,原标题为“[Question]: ATK 能否验收 ops-blas / ops-sparse 这类句柄式 C API 算子库(host 直接 launch kernel、不进 OPP)?”
Bbrian66237
8月20日 修改了issue 的描述
lixiaolong9527
8月20日 评论:

您好,已收到反馈,我们将整理问题并一一答复

likedislike
lixiaolong9527
8月24日 评论:
  1. 当前是否支持

    • 不支持。 ATK 现成只公开 pytorch 和 aclnn 两条入口,没有 ops-blas / ops-sparse / catlass 的原生 backend。AclnnBaseApi 也明确是按 ACLNN ABI 组织的。
    • 可走的后端: 需要包装成 ATK 认识的形态,例如 aclnn 或 pytorch。
  2. 不支持时的推荐路径

    • catlass: 需要包装成标准算子工程,暴露出 aclnn 接口/torch接口(如果有),再走 pyaclnn/pytorch。
    • ops-blas / ops-sparse: 逻辑一样,也需要再包一层,把原始句柄式 C API 变成 ATK 能消费的接口。
    • 但要注意: 这样测到的是 wrapper + 绑定层,不是原始仓对外交付的 host 校验、tiling 和描述符 ABI。原始 C API 那部分,ATK 目前不覆盖,得在各自仓里另做 native 测试。
  3. 用例描述层能否表达这些参数

    • 目前不能完整表达。 目前ATK原生支持类型只覆盖 tensor / scalar / attr / list等,其他特殊类型或格式只能在标杆执行文件中自定义。
likedislike
liuyang577成员
8月25日 评论:

与提出人沟通,问题已解答,,关闭issue

likedislike
Lliuyang577成员
8月25日 issue状态由 TODO 改变为 DONE
Lliuyang577成员
8月25日 关闭了 issue
ascend-robotascend-robot成员
8月25日 添加了label:resolved