昇腾社区首页
中文
注册
开发者
下载

使用前必读

“零拷贝”为试用功能,后续可能存在变更,暂不支持应用于商用产品。

什么是零拷贝

单算子模式下算子的输入输出buffer是动态变化的,为了避免每次通信都进行两端进程的内存注册,HCCL在通信域内部构造了一个buffer进行中转完成集合通信,因此会引入额外的内存拷贝开销。

为了降低上述内存拷贝开销,使得HCCL可以直接对业务传入的内存进行操作,避免使用中转HCCL buffer,HCCL提供了本节所述接口,从而实现零拷贝。

通用约束

零拷贝功能当前存在如下使用限制与约束:

  • 仅支持Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • 相关接口仅支持Ascend Extension for PyTorch插件后端代码调用,其他场景暂不支持。
  • 仅支持通信算法的编排展开位置在AI CPU的场景。
  • 仅支持集合通信算子AllGather、ReduceScatter、Broadcast、AllReduce,其中ReduceScatter、AllReduce算子使能零拷贝功能后会修改用户的输入内存。
  • 算子的输入、输出内存必须是激活内存。
  • 开启零拷贝功能时,建议开发者使用较大的通信域(即覆盖最大卡数的通信域)进行虚拟地址设置与激活,此通信域中所有进程调用集合通信算子时都可实现零拷贝(未设置、激活虚拟地址的通信域无法实现零拷贝)。