Skip to content

feat: 接入 Cambricon MLU 设备与 13 个 aten 算子 - #5

Merged
TruNcat3 merged 2 commits into
FLAG-OP:mainfrom
Dashener2:feat/cambricon-mlu-ops
Sep 24, 2026
Merged

TruNcat3 merged 2 commits into
FLAG-OP:mainfrom
Dashener2:feat/cambricon-mlu-ops

Conversation

@Dashener2

Copy link
Copy Markdown
Contributor
  • 新增 cambricon 设备 profile(vendor: cambricon,dispatch_key PrivateUse1) 与对应环境锁 configs/env/cambricon.lock.yaml
  • common 适配 MLU:device.py 顶部提前 import torch(避免 triton 命名空间重复注册)、 perf.py 补 torch.mlu.synchronize()(原只同步 CUDA)、perf_registry 登记 13 个 ops provider
  • 新增 perf/baselines/cambricon.json(v26.08.0 容器栈实测,31 用例; 环境升级后有意重采)
  • ops/ 新增 13 个算子:type_as / clone / contiguous / copy_ / dropout(Triton 级)
    • empty / empty_like / empty_strided / detach / detach_ / item / _local_scalar_dense / result_type(torch 级),三层全绿并在 ops/README.md 登记

环境: torch 2.12.1+cpu / torch_mlu 1.34.1 / triton 3.4.0+mlu2.1.3 / flag_gems 5.0.2

Dashener2 and others added 2 commits September 24, 2026 11:25
- 新增 cambricon 设备 profile(vendor: cambricon,dispatch_key PrivateUse1)
  与对应环境锁 configs/env/cambricon.lock.yaml
- common 适配 MLU:device.py 顶部提前 import torch(避免 triton 命名空间重复注册)、
  perf.py 补 torch.mlu.synchronize()(原只同步 CUDA)、perf_registry 登记 13 个 ops provider
- 新增 perf/baselines/cambricon.json(v26.08.0 容器栈实测,31 用例;
  环境升级后有意重采)
- ops/ 新增 13 个算子:type_as / clone / contiguous / copy_ / dropout(Triton 级)
  + empty / empty_like / empty_strided / detach / detach_ / item /
  _local_scalar_dense / result_type(torch 级),三层全绿并在 ops/README.md 登记

环境: torch 2.12.1+cpu / torch_mlu 1.34.1 / triton 3.4.0+mlu2.1.3 / flag_gems 5.0.2
并行开发导致的登记类冲突,双方内容并集保留:
- common/perf_registry.py:main 的 ops.sdpa / ops.embedding 与本分支
  13 个 MLU 算子 provider 共 15 条并列注册
- ops/README.md:算子索引表保持连续(header + sdpa/embedding + 13 个
  MLU 行),MLU 说明块与既有说明块均保留在表后

本地已复现 CI 全部步骤:链接/锚点、Python 语法、YAML、性能基线结构、
intake 契约 + pytest 20 passed
@TruNcat3
TruNcat3 merged commit bd3d0eb into FLAG-OP:main Sep 24, 2026
2 checks passed
@TruNcat3

TruNcat3 commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

📦 后续维护提示(#16 审计整改关联,涉及你在 PR#5 引入的 MLU 算子族):

ops/ 全库审计后,你当初引入的算子目录(clone/contiguous/copy_/detach/dropout/empty 系/item/result_type/type_as/_local_scalar_dense)已在 #16 统一补齐包化入口 __init__.py——多算子同进程消费时请用包态导入(from ops.clone import register_a1),顶层 register/kernel 名不再互相遮蔽(冲突实证:sdpa/reports/e2e_mini_llm.md,#13 发现、#14 根治)。

后续这些算子做平台扩展时注意:①合并前照 templates/operator/README「交付自查清单」打勾;②多平台化后补 PLATFORM.md/MERGE.md(范式:ops/embedding 双份);③python3 ops/test_packaging.py(全 16 算子导入扫描)必须绿。

@Dashener2

Copy link
Copy Markdown
Contributor Author

📦 后续维护提示(#16 审计整改关联,涉及你在 PR#5 引入的 MLU 算子族):

ops/ 全库审计后,你当初引入的算子目录(clone/contiguous/copy_/detach/dropout/empty 系/item/result_type/type_as/_local_scalar_dense)已在 #16 统一补齐包化入口 __init__.py——多算子同进程消费时请用包态导入(from ops.clone import register_a1),顶层 register/kernel 名不再互相遮蔽(冲突实证:sdpa/reports/e2e_mini_llm.md,#13 发现、#14 根治)。

后续这些算子做平台扩展时注意:①合并前照 templates/operator/README「交付自查清单」打勾;②多平台化后补 PLATFORM.md/MERGE.md(范式:ops/embedding 双份);③python3 ops/test_packaging.py(全 16 算子导入扫描)必须绿。

收到,谢谢 🙏

  1. 已改包态导入 from ops. import register_a1;feat: 算子目录包化——多算子同进程冲突根治(ops.sdpa / ops.embedding) #14/chore: ops/ 全库审计整改——13 算子补包化入口 + 多平台文档 + 交付自查清单 #16 根治了 register/kernel 遮蔽。
  2. 自查清单后续逐项打勾。
  3. 多平台文档按约定先欠,做第二平台时补。
    chore: PR#5 的 13 个算子按新库约定补两项——register 签名升级 + 多平台文档(平台扩展前) #19 第 1 项(register 签名升级)已完成:13 算子统一 register_a1(dispatch_key, counter=None, platform=None) + _BACKENDS/_DEVICE_PROBE,op_level 接入 counter 断言;三层全绿、真实 vLLM 注入通过,见 fix: 13 算子 register_a1 签名升级(counter + platform,#19) #25 。第 2 项先欠。
    两点想确认:
  • ops/test_packaging.py 依赖 torch_npu,我们只有 MLU 跑不了,只做了 13 算子包态导入的等价验证。非 NPU 环境有推荐跑法吗?需要的话我可把它改成设备无关。
  • MLU 的 A1 key:ops/embedding 是 Autograd→mlu、AutogradPrivateUse1→ascend;我们单平台把三者都映射到 cambricon(实测均命中)。若希望 MLU 严格用 Autograd,请指正。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants