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

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐