CANN/HCOMM通信通道内存屏障API
HcommChannelFenceOnThread【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持功能说明在指定通信线程和通信通道上插入内存屏障操作确保屏障前的通道读写操作在屏障后的通道读写操作之前完成。函数原型int32_t HcommChannelFenceOnThread(ThreadHandle thread, ChannelHandle channel)参数说明参数名输入/输出描述thread输入通信线程句柄为通过HcclThreadAcquire接口获取到的threads。ThreadHandle类型的定义可参见ThreadHandle。channel输入通信通道句柄为通过HcclChannelAcquire接口获取到的channels。ChannelHandle类型的定义可参见ChannelHandle。返回值int32_t接口成功返回0其他失败。约束说明在 Ascend 950PR/Ascend 950DT 上仅支持通信协议 UBC_TP、UBC_CTP、UBoE。调用示例// 申请通信线程资源 CommEngine engine CommEngine::COMM_ENGINE_CPU_TS; // Atlas A3 训练系列产品/Atlas A3 推理系列产品使用 CommEngine engine CommEngine::COMM_ENGINE_AICPU_TS; // Ascend 950PR/Ascend 950DT使用 uint32_t threadNum 1; uint32_t notifyNumPerThread 1; ThreadHandle thread; HcclThreadAcquire(engine, threadNum, notifyNumPerThread, thread); // 申请通信通道资源 HcclChannelDesc channelDesc; HcclChannelDescInit(channelDesc, channelNum); HcclComm comm; uint32_t channelNum 1; ChannelHandle channel; HcclChannelAcquire(comm, engine, channelDesc, channelNum, channel); // 获取本端通信内存信息 void * localBuffer; uint64_t localBufferSize; HcclGetHcclBuffer(comm, localBuffer, localBufferSize); // 获取对端通信内存信息 void * remoteBuffer; uint64_t remoteBufferSize; HcclChannelGetHcclBuffer(comm, channel, remoteBuffer, remoteBufferSize); uint64_t len std::min(localBufferSize, remoteBufferSize); // 将本端内存的内容写到对端内存上 HcommWriteOnThread(thread, channel, remoteBuffer, localBuffer, len); // 申请通信线程资源 CommEngine engine CommEngine::COMM_ENGINE_CPU_TS; // Atlas A3 训练系列产品/Atlas A3 推理系列产品使用 CommEngine engine CommEngine::COMM_ENGINE_AICPU_TS; // Ascend 950PR/Ascend 950DT使用 uint32_t threadNum 1; uint32_t notifyNumPerThread 1; ThreadHandle thread; HcclThreadAcquire(engine, threadNum, notifyNumPerThread, thread); // 申请通信通道资源 HcclChannelDesc channelDesc; HcclChannelDescInit(channelDesc, channelNum); HcclComm comm; uint32_t channelNum 1; ChannelHandle channel; HcclChannelAcquire(comm, engine, channelDesc, channelNum, channel); // 获取本端通信内存信息 void * localBuffer; uint64_t localBufferSize; HcclGetHcclBuffer(comm, localBuffer, localBufferSize); // 获取对端通信内存信息 void * remoteBuffer; uint64_t remoteBufferSize; HcclChannelGetHcclBuffer(comm, channel, remoteBuffer, remoteBufferSize); uint64_t len std::min(localBufferSize, remoteBufferSize); // 将本端内存的内容写到对端内存上 HcommWriteOnThread(thread, channel, remoteBuffer, localBuffer, len); HcommChannelFenceOnThread(thread, channel); HcommReadOnThread(thread, channel, localBuffer, remoteBuffer, len);【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2599776.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!