deepep-to-cam-converter
识别代码中可替换为CAM算子的DeepEP算子,基于实际运行参数校验约束,自动完成通信域转换(NCCL->HCCL)、设备适配(CUDA->NPU)及算子替换。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
识别代码中可替换为CAM算子的DeepEP算子,基于实际运行参数校验约束,自动完成通信域转换(NCCL->HCCL)、设备适配(CUDA->NPU)及算子替换。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Generate and maintain stable URMA GTest unit tests in umdk.
按 C 语言编程规范编写、检视或审阅 C/C++ 代码改动。
将 RDMA verbs 代码迁移到 URMA API。当用户想要将 infiniband verbs 代码转换为 URMA,或在进行 RDMA/InfiniBand 迁移时,或用户提到 verbs API、ibv_*、rdma,或想要使用 URMA 替代传统 RDMA 时使用此 skill。此 skill 处理完整的迁移,包括 API 映射、数据结构转换和 URMA 特定优化。
| name | deepep-to-cam-converter |
| description | 识别代码中可替换为CAM算子的DeepEP算子,基于实际运行参数校验约束,自动完成通信域转换(NCCL->HCCL)、设备适配(CUDA->NPU)及算子替换。 |
本技能专注于将基于DeepEP的Mixture of Experts (MoE) 代码迁移至昇腾(Ascend)NPU环境。它能自动识别DeepEP dispatch & combine算子,**严格基于代码的实际运行参数(而非默认值)**校验CAM算子约束。
核心原则:
import deep_ep及dispatch/combine相关调用。import语句,识别本地模块依赖。dist.init_process_group、backend='nccl'、torch.cuda.set_device等特征代码。utils.init_dist),需同步分析这些函数的实现。🛑 阶段 1 阻断检查(必须显式输出) 在生成任何回复前,请先输出以下内容:
[阶段 1 自检] - DeepEP 代码识别:[是/否] - 本地依赖文件列表:[列出文件] - 状态:[通过/失败]若“DeepEP 代码识别”为否,直接终止。若为是,继续下一阶段。
注意:此阶段必须与用户交互,不得跳过。
向用户展示以下选项,确定目标运行环境:
npu-smi info,根据设备型号判断是A2环境或A3环境)。重要原则:代码中的默认值(Default Value)≠ 实际运行值(Runtime Value)
在执行替换前,必须对约束条件涉及的参数进行实际值溯源:
参数溯源:
argparse、config.yaml或命令行传入。parser.add_argument(..., default=XXX) 中的 XXX 作为判断依据。交互确认机制:
“检测到参数 [参数名] 在代码中的默认值为 [默认值],但这可能不是实际运行值。请确认实际运行时的数值是多少?以便准确判断是否满足CAM算子约束。”
约束校验逻辑:
在确认参数值满足约束后,根据目标环境确定具体算子模式:
检测到当前代码同时满足多组算子的约束条件,请做出选择:()
- 选项1(普通A3):参数配置简单,无需额外共享内存初始化。
- 选项2(Shmem A3):性能更优,但需满足特定约束及初始化。
- 选项2(fused deep moe算子):性能最优,将通信计算过程融合为一个大算子。 请回复选项继续。
在执行替换前,必须对比DeepEP原功能与CAM算子支持范围,并输出分析报告。
生成支持度报告:
用户确认策略:
🛑 阶段 2 阻断检查(必须显式输出) 在进入代码生成前,请输出:
[阶段 2 自检] - 目标环境确认:[A2/A3] - 关键参数实际值确认:[列出参数及值,严禁使用默认值] - A3模式决策:[A2算子替换不涉及/普通A3/Shmem/fused deep moe] - 功能支持度报告已展示:[是/否] - 用户策略确认:[保留/删除/混合] - 状态:[通过/失败 - 若失败请停止,针对不满足项重新执行阶段2]
执行范围:目标文件及所有识别到的本地依赖文件。
| 原代码特征 (CUDA/NCCL) | 替换后代码 (NPU/HCCL) | 备注 |
|---|---|---|
backend='nccl' | backend='hccl' | 核心通信后端 |
torch.cuda.set_device(x) | torch.npu.set_device(x) | 设备绑定 |
torch.set_default_device('cuda') | torch.set_default_device('npu') | 默认设备 |
torch.device('cuda:0') | torch.device('npu:0') | 设备对象 |
tensor.cuda() | tensor.npu() | Tensor迁移 |
根据用户确认的CAM算子模式(A2/A3/Shmem)和策略(保留/删除),执行以下操作:
import deep_ep替换为cam对应库,注意cam库依赖torch_npu,必须先import torch_npu然后import umdk_cam_op_lib。# CAM Migration: DeepEP code retained due to unsupported feature。🛑 阶段 3 自检 在结束前,请简要确认:
- 所有
nccl已替换为hccl- 所有
cuda已替换为npu- 接口入参形状和类型和接口文档要保持一致
- 如果使用shmem,需要保证shmem资源释放(aclshmem_free和aclshmem_finialize)要在算子执行结束之后,即torch.npu.synchronize()等同步操作之后
- 状态:[通过/失败 - 若失败请停止,针对不满足项重新执行阶段3]
在执行替换时,必须严格查阅以下文档:
references/nccl_to_hccl_converter.mdreferences/cam_dispatch_and_combine_a2.mdreferences/cam_dispatch_and_combine_a3.mdreferences/cam_dispatch_and_combine_shmem.mdreferences/cam_fused_deep_moe.md在输出最终结果前,自我核对:
nccl替换为hccl?cuda相关调用替换为npu?