HCCL底层通信分析
1. SDMA 路径(卡间,HCCS)
CHK(HcclD2DMemcpyAsync(dispatcher_, dst, src, currStream, readTransport->GetRemoteRank(), readTransport->GetLinkType()));
本卡HBM(cclOut) -> SDMA引擎直接DMA read(不经过AI Core/ L2) -> HCCS总线-> 对端卡HBM(usrOut)
使用的是HcclD2DMemcpyAsync->rtMemcpyAsync,由SDMA引擎异步执行,全程在HBM之间搬运。
注:发送和接收端都使用cclOut.
2.RDMA路径(跨机,RoCE)
本卡HBM(cclIn) ->昇腾片内RoCE DMA Engine直接DMA read(通过lkey注册的物理地址),敲DoorBell触发(RoCE MMIO 寄存器地址) -> RoCE网卡-> 网络-> 对端卡HBM(cclOut)
TxAsync()
|---TxPayLoad() #构造WQE(Work Queue Element),记录src HBM地址+lkey
|----TxSendDataAndNotify()
|----RdmaSendAsync()
|---TxWrlist() #将WQE提交到RoCE硬件SQ(Send Queue)
|----dispatcher_->RdmaSend(dbIndex, dbInfo, wr, stream, ...)
#敲Doorbell通知RoCE网卡DMA Engine执行
RoCE网卡DMA Engine收到Doorbell后:
(1)从WQE中取出src HBM 物理地址+lkey(内存注册)
(2)直接DMA读取本卡HBM中的cclIn数据(经PCIe/HCCS到网卡,不经过CPU和AI Core)
(3) 组成RoCE数据包发送到对端
(4)对端RoCE网卡DMA写入对端HBM的cclOut
HCCL通讯时,CCL Buffer(P2P HBM)数据不需要搬到任何更近的存储单元(如L2 Cache、SRAM), 整个传输流程由SDMA和 RoCE DMA Engine直接操作HBM物理地址完成,AI Core完全不参与数据搬运。
3. 两种通信模式
| OpBase模式 | 图模式(Zcopy) | |
|---|---|---|
| Level1(RDMA)建链注册 | cclIn(P2P HBM) | userIn(sendBuf) |
| RDMA发送前是否拷贝 | 要(userIn->cclIn) | 不需要,直接从userIn发 |
| userIn的内存要求 | 普通HBM即可 | 必须提前向RoCE硬件完成内存注册 |
| 优点 | userIn无约束 | 零拷贝,减少带宽消耗 |
| 缺点 | 额外一次HBM->HBM拷贝 | userIn大小固定(建链时确定),不能动态变化 |
4.通信占用硬件单元
| 硬件单元 | 数量 | 说明 |
|---|---|---|
| Stream | 8(1主+7子) | 主流LocalCopy/Reduce,子流做SDMA/RDMA |
| Notify | 14(7*2) | 主流和各子流间双向同步 |
| FFTS+context | ~93 | perstep:43,共2步,加首尾7 |
| intra Links(HCCS) | 7 | 本卡与同server剩余的7卡 |
| inter Links(RDMA) | 1 | 本卡对应远端server的对等卡 |
| CCL Buffer | >=80MB(cclIn+cclout) | 需cclOut >=2*maxSdmaTransitOutSize |
5. AIV全接管
AIV(AI Vector Core)是昇腾910B、910C上的向量计算核心,HCCL将其用作集合通信算子的计算与同步引擎,以替代传统的CPU/SDMA驱动通信方式。
AIV模式下,每张卡launch若干个AIV核,每个核负责管理本卡与通信域内其它卡之间的“数据搬运、同步标记、reduce计算”,整个过程无需CPU参与调度。这样可以绕过CPU调度与SDMA引擎,从而降低通信延迟、提升吞吐,特别适合单机内(HCCS)中小数据量的低延迟通信场景。
AIV的不同策略
| 场景 | 策略 | Executor |
|---|---|---|
| 单机小数据量(<=128KB/卡) | 全AIV搬运+Atomic Reduce | AllReduceMeshAivExecutor |
| 单机大数据(>=16MB) | AIV流水线大数据 | AllReduceMeshOpbaseBigCountAivExecutor |
| 多机小数据(单卡<=190KB) | AIV卡内+RDMA跨机 | AllReduceSmallCountAivRdmaExecutor |
| 多机中数据(总量<=16MB) | AIV+RDMA组合 | AllReduceMidCountAivRdmaExecutor |
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)