news 2026/5/10 5:50:08

CANN/HCOMM通信通道内存屏障API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/HCOMM通信通道内存屏障API

HcommChannelFenceOnThread

【免费下载链接】hcommHCOMM(Huawei 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);

【免费下载链接】hcommHCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 5:43:45

ESP32远程日志实战:esp-wifi-logger原理、集成与避坑指南

1. 项目概述与核心价值最近在折腾一个物联网项目,需要远程监控一批部署在户外的ESP32设备状态,比如温度、湿度、电压这些关键参数。最头疼的问题就是:设备一旦部署出去,如果网络连接出了问题,或者程序跑飞了&#xff0…

作者头像 李华
网站建设 2026/5/10 5:41:44

Kasetto:声明式AI技能管理工具,实现跨团队环境一致性

1. 项目概述:Kasetto,一个声明式的AI技能环境管理器如果你和我一样,日常开发中会同时使用多个AI编程助手——比如在Claude Code里写文档,在Cursor里重构代码,在GitHub Copilot里补全注释——那你一定遇到过这个痛点&am…

作者头像 李华
网站建设 2026/5/10 5:39:22

基于MCP协议的智能代码助手classmcp:让AI深度理解你的代码库

1. 项目概述:一个为开发者赋能的智能代码助手最近在GitHub上看到一个挺有意思的项目,叫classmcp。乍一看这个名字,可能有点摸不着头脑,但如果你是一个经常和大型语言模型(LLM)打交道,尤其是用它…

作者头像 李华
网站建设 2026/5/10 5:31:39

隐私优先的本地化个人基因组分析工具:从数据到洞察的完整指南

1. 项目概述:一个隐私优先的本地化个人基因组分析工具 如果你和我一样,对消费级基因检测报告里那些“你有2.1%的尼安德特人血统”或者“你患某种疾病的风险是平均水平的1.2倍”的模糊描述感到不满足,同时又对将原始DNA数据上传到云端心存顾虑…

作者头像 李华
网站建设 2026/5/10 5:30:36

计步器、手势识别、姿态检测:LSM6DSOWTR的嵌入式运动算法

LSM6DSOWTR:ST高性能6轴IMU的技术解析在运动感知与姿态检测领域,惯性测量单元(IMU)是实现设备空间定位、运动追踪和姿态控制的核心传感元件。LSM6DSOWTR是意法半导体推出的iNEMO惯性模块,将三轴数字加速度计与三轴数字…

作者头像 李华
网站建设 2026/5/10 5:29:36

Arduino物理开关模拟鼠标点击:从硬件连接到代码实现的完整指南

1. 项目概述:从“开关”到“光标”的交互革命 最近在折腾一个挺有意思的开源项目,叫 qczone/switch2cursor 。光看名字,你可能会有点懵:“Switch to Cursor”?是把任天堂Switch手柄变成鼠标,还是把开关变…

作者头像 李华