已开启
[Requirement|需求建议]:引入 HCCLang Python DSL 集合通信算法开发 #923
wakakaxin创建于  9月17日
wakakaxin
wakakaxin
9月17日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

当前 AI 算法开发通常以 Python 为主,而集合通信算法的设计、验证和优化往往依赖 C/C++、AscendC 等较底层语言,开发门槛较高。对于希望定制 HCCL 集合通信算法的开发者来说,直接编写底层通信逻辑不仅实现复杂,也缺少统一、便捷的算法描述和验证手段。

本需求拟在 HCCL experimental/eco_system 下引入 HCCLang,提供一套面向集合通信算法开发的 Python DSL 及配套工具链。开发者可以通过 Python API 描述 AllReduce、AllGather、ReduceScatter、Scatter、All2All 等集合通信过程,并将 DSL 描述转换为 XML/JSON 等算法指令产物,同时通过 checker/simulator 对生成结果进行语义正确性验证。

该需求主要解决集合通信算法开发门槛高、原型验证效率低、算法描述与验证流程不统一的问题,为开发者提供从“Python DSL 描述 → 指令生成 → 正确性验证”的完整闭环,方便典型集合通信算法的快速开发、复现和扩展,并为后续 HCCL 生态中的自定义通信算法能力演进提供基础。

Origin(信息来源)

北京航空航天大学

Benefit / Necessity (价值/作用)

HCCLang 的引入可以降低 HCCL 集合通信算法的开发和验证门槛,使开发者能够使用 Python DSL 描述集合通信过程,而无需直接从底层 C/C++ 或 AscendC 通信实现入手。通过统一的 DSL 表达、XML/JSON 指令生成以及 checker/simulator 语义验证能力,可以缩短集合通信算法从原型设计到正确性验证的开发周期,提高算法调试、复现和扩展效率。

该需求主要适用于以下场景:开发者快速编写和验证 AllReduce、AllGather、ReduceScatter、Scatter、All2All 等典型集合通信算法;基于 DSL 生成标准化算法产物,用于人工检查、checker/simulator 验证以及后续 HCCL 集成;开展 Ring、Mesh、Pipeline 等通信模式的原型设计、算法比较和调度优化探索;同时也可作为 HCCL experimental/eco_system 下的实验性生态工具,为社区开发者学习、复现和扩展自定义集合通信算法提供统一入口。

Design(设计方案)

总体流程如下:

Python DSL 编写集合通信算法 → HCCLANG 上下文捕获 DSL 调用 → 构建 Buffer / Chunk / 通信关系 / 通信组 →生成内部通信图与指令队列

①→ toXML() / toJSON() → 生成按 Rank 组织的 XML / JSON 指令流 → CHECK() / Checker + Simulator →与参考集合通信结果比对,验证语义正确性

②→ AICPU 后端代码生成 → 生成 AICPU 自定义算子工程 → 实机上验证

在 DSL 层,开发者可通过 chunkInit、chunkSlice、chunkCopy、chunkCopyReduce、group、submit等接口描述数据切分、Rank 间通信、规约操作以及通信组调度;在内部表示层,对 Buffer、数据块、通信关系和指令进行统一管理;在产物生成层,一方面可通过 toXML() / toJSON() 将算法转换为可检查的 XML/JSON 指令流,另一方面可进一步生成面向 AICPU 后端的自定义算子工程,为 DSL 描述的集合通信算法提供后端实现与集成基础;在验证层,通过 checker/simulator 模拟各 Rank 的通信、搬运和规约过程,并与 AllReduce、AllGather、ReduceScatter、Scatter、All2All 等参考结果进行比对。

本次设计重点提供 “DSL 描述—指令生成—正确性验证” 的基础闭环。C++/AscendC 代码生成、多后端运行、拓扑感知和通算融合等能力作为后续演进方向,不作为本次首次开源需求的必选范围。整体设计采用相对独立的生态工具链形式,将 HCCLang 引入 HCCL experimental/eco_system,不直接修改 HCCL 现有核心代码路径。HCCLang 以 Python DSL 作为算法描述入口,通过内部程序上下文对用户的 DSL 调用进行捕获和组织,并进一步转换为通信图、通信组及指令队列等内部表示,最终可生成 XML/JSON 形式的集合通信算法产物,并支持进一步生成面向 AICPU 后端的自定义算子工程;生成结果可通过 checker/simulator 等工具完成语义正确性验证。

likedislike
wenxuemin成员
9月17日 评论:

/assign @kookgi

likedislike
CANN-robotCANN-robot成员
9月17日 将 kookgi 设为负责人
Wwenxuemin成员
9月17日 添加了label:Accepted
LLeewis成员
9月18日 关联了看板:HCOMM
wakakaxinwakakaxin
9月18日 关联了pull request:[docs] Reserve RFC number for HCCLang (PR #923)
wakakaxinwakakaxin
9月20日 关联了pull request:[docs] Add RFC 0003: HCCLang DSL for Collective Communication and Memory Semantics