CANN/HCOMM CCU Write函数

📅 2026/6/19 6:36:00
CANN/HCOMM CCU Write函数
Write【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持功能说明在CCU kernel内发起跨rank写操作异步通过已建链的ChannelHandle将本端数据写入对端HBM硬件完成时自动将event的第mask位置1。支持以下两种源类型重载源目标重载1本端HBMLocalAddr对端HBMRemoteAddr重载2本端MS BufferCcuBuffer对端HBMRemoteAddr注意参数顺序遵循目的端在前源端在后约定Write(ch, remote, local, ...)即remote目的对端在第二位local源本端在第三位。与Read中local在前的顺序相反请勿混淆。C类型系统通过RemoteAddr与LocalAddr的不同类型在编译期阻止参数顺序错误。同一kernel内使用的所有ChannelHandle必须属于同一die。本接口在调用处不做die校验因此不会因die不一致而失败调用处仍可能因无注册中kernel返回CCU_E_PTR、或句柄无效返回CCU_E_NOT_FOUND详见返回值表die一致性由HcommCcuKernelRegister统一校验依据本kernel期间用到的全部channel不一致时由HcommCcuKernelRegister返回CCU_E_PARA而非本接口的返回值。函数原型namespace AscendC { namespace ccu { // 重载1本端HBM→对端HBM CcuResult Write(ChannelHandle ch, RemoteAddr remote, LocalAddr local, Variable len, Event event, uint16_t mask 1); // 重载2本端MS Buffer→对端HBM CcuResult Write(ChannelHandle ch, RemoteAddr remote, CcuBuffer local, Variable len, Event event, uint16_t mask 1); } // namespace ccu } // namespace AscendC参数说明参数名输入/输出描述ch输入跨rank通道句柄ChannelHandle。channel绑定的die须与本kernel内所有channel属于同一die在HcommCcuKernelRegister内统一校验详见上文CAUTION。remote输入对端HBM目标地址RemoteAddr对端HBM地址与token的复合对象。local输入本端源地址。重载1为LocalAddr本端HBM地址与token的复合对象重载2为CcuBuffer本端MS Buffer切片对象单片最大4096字节。len输入写入字节数类型为Variable运行期可变长度。重载2时不可超过4096字节。event输入完成事件对象。硬件写入完成时自动置位event[mask]下游调用EventWait(event, mask)等待。mask输入16位事件掩码。默认值为1即bit0。返回值CcuResult接口成功返回CCU_SUCCESS其他值表示失败。返回值说明CCU_SUCCESS操作成功。CCU_E_PTR当前不存在处于注册中的kernel接口在kernel注册阶段之外被调用。CCU_E_NOT_FOUND传入的remote/local/len/event句柄未在当前kernel注册。[!NOTE]说明 本接口不会返回CCU_E_PARAchannel die不一致由HcommCcuKernelRegister返回CCU_E_PARA详见功能说明。约束说明参数顺序为对端目的在前、本端源在后Write(ch, remote, local, ...)。同一kernel内所有ChannelHandle须属于同一die不同die的channel不可混入同一kernel。重载2时len不可超过CcuBuffer单片大小4096字节该上限须由调用方自行保证超出会导致运行期硬件行为未定义。本接口为异步操作须通过EventWait(event, mask)等待写入完成方可保证对端数据可见。调用示例using namespace AscendC::ccu; // 场景1本端HBM→对端HBM CcuResult MyKernel(CcuKernelArg arg) { auto *params static_castMyKernelArg *(arg); // CcuKernelArg 为void*先转型为用户入参结构体 ChannelHandle ch params-channelHandle; RemoteAddr remote; LocalAddr src; Variable len; Event evt; Write(ch, remote, src, len, evt); // remote在前local在后 EventWait(evt); return CCU_SUCCESS; } // 场景2本端MS Buffer→对端HBM CcuResult MyKernel2(CcuKernelArg arg) { auto *params static_castMyKernelArg *(arg); // CcuKernelArg 为void*先转型为用户入参结构体 ChannelHandle ch params-channelHandle; RemoteAddr remote; CcuBuffer buf; Variable len; Event evt; Write(ch, remote, buf, len, evt); EventWait(evt); return CCU_SUCCESS; }【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考