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

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成员
27 天前 评论:

/assign @kookgi

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