使用前必读
“零拷贝”为试用功能,后续可能存在变更,暂不支持应用于商用产品。
什么是零拷贝
单算子模式下算子的输入输出buffer是动态变化的,为了避免每次通信都进行两端进程的内存注册,HCCL在通信域内部构造了一个buffer进行中转完成集合通信,因此会引入额外的内存拷贝开销。
为了降低上述内存拷贝开销,使得HCCL可以直接对业务传入的内存进行操作,避免使用中转HCCL buffer,HCCL提供了本节所述接口,从而实现零拷贝。
通用约束
零拷贝功能当前存在如下使用限制与约束:
- 仅支持
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 。 - 相关接口仅支持Ascend Extension for PyTorch插件后端代码调用,其他场景暂不支持。
- 仅支持通信算法的编排展开位置在AI CPU的场景。
- 仅支持集合通信算子AllGather、ReduceScatter、Broadcast、AllReduce,其中ReduceScatter、AllReduce算子使能零拷贝功能后会修改用户的输入内存。
- 算子的输入、输出内存必须是激活内存。
- 开启零拷贝功能时,建议开发者使用较大的通信域(即覆盖最大卡数的通信域)进行虚拟地址设置与激活,此通信域中所有进程调用集合通信算子时都可实现零拷贝(未设置、激活虚拟地址的通信域无法实现零拷贝)。
父主题: 零拷贝功能