当前位置: 首页 > news >正文

CANN/hcomm通信操作API文档

HcommWriteReduceWithNotifyOnThread

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

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持

功能说明

向channel上的指定内存写数据,将src中长度为count*sizeof(dataType)的内存数据,与dst所指向的相同长度的内存数据进行reduceOp操作,并将结果输出到dst中,并向dst所在节点发送同步信号。接口调用方为src所在节点,该接口为异步接口。

函数原型

int32_t HcommWriteReduceWithNotifyOnThread(ThreadHandle thread, ChannelHandle channel, void *dst, const void *src, uint64_t count, HcommDataType dataType, HcommReduceOp reduceOp, uint32_t remoteNotifyIdx)

参数说明

参数名输入/输出描述
thread输入通信线程句柄,为通过HcclThreadAcquire接口获取到的threads。
ThreadHandle类型的定义可参见ThreadHandle。
channel输入通信通道句柄,为通过HcclChannelAcquire接口获取到的channels。
ChannelHandle类型的定义可参见ChannelHandle。
dst输出目的内存地址,使用HcclGetHcclBuffer、HcclChannelGetHcclBuffer获取到的内存。
src输入源内存地址,使用HcclGetHcclBuffer、HcclChannelGetHcclBuffer获取到的内存。
count输入元素个数。
dataType输入数据类型。
HcommDataType类型的定义请参见HcommDataType。
针对Ascend 950PR/Ascend 950DT,支持的数据类型:int8、int16、int32、uint8、uint16、uint32、float16、float32、bfp16。
reduceOp输入归约操作类型,支持:sum、max、min。
HcommReduceOp类型的定义请参见HcommReduceOp。
remoteNotifyIdx输入通信通道另一端的Notify索引。
取值范围:[0, HcclChannelAcquire接口传入的channelDescs参数中的notifyNum)。

返回值

int32_t:接口成功返回0,其他失败。

约束说明

该接口需要配合HcommChannelNotifyWaitOnThread使用。

在Ascend 950PR/Ascend 950DT上,仅支持AICPU_TS模式下、在Device侧调用该接口。

调用示例

// 申请通信线程资源 CommEngine engine = CommEngine::COMM_ENGINE_AICPU_TS; uint32_t threadNum = 1; uint32_t notifyNumPerThread = 1; ThreadHandle thread; HcclThreadAcquire(engine, threadNum, notifyNumPerThread, &thread); // 申请通信通道资源 uint32_t channelNum = 1; HcclChannelDesc channelDesc; HcclChannelDescInit(&channelDesc, channelNum); HcclComm comm; 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); // 拷贝参数并 Launch Kernel // Device 侧算法编排 uint64_t len = std::min(localBufferSize, remoteBufferSize); uint64_t sizeOfFP32 = 4; uint64_t count = len / sizeOfFP32; // 将本端内存的内容写到对端内存上并通知对端 uint32_t rmtNotifyIdx = 0; HcommWriteReduceWithNotifyOnThread(thread, channel, remoteBuffer, localBuffer, count, HCOMM_DATA_TYPE_FP32, HCOMM_REDUCE_SUM, rmtNotifyIdx); // 数据面操作 // ... // 等待对端通知本端 uint32_t lclNotifyIdx = 0; uint32_t notifyTimeout = 0; HcommChannelNotifyWaitOnThread(thread, channel, lclNotifyIdx, notifyTimeout);

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

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

http://www.jsqmd.com/news/782896/

相关文章:

  • Graph-autofusion super_kernel极简示例
  • 如何快速掌握大气层系统:从新手到专家的终极指南
  • 构建基于Python与机器学习的智能客服
  • 如何高效准确实现表面测温
  • AFSIM 5.3.1在Visual Studio 2015下的详细配置步骤
  • CANN/SHMEM快速使用指南
  • 企业内如何通过Taotoken实现AI模型调用的统一审计与风控
  • ECU-TEST 测试报告自动上传(含代码实现)
  • CANN/ge C++ ES API兼容性设计
  • 可解释AI(XAI)实践指南:从模型透明到业务可信
  • 网盘直链下载助手:九大主流网盘免登录高速下载解决方案
  • 离海数百公里,他们为孩子造了一片“海”
  • 长期使用Taotoken服务在API延迟与稳定性方面的实际感受分享
  • cann/cannbot-skills Kernel定义内存分配
  • CANN/ops-cv NMS掩码算子
  • AI应用上线前必做的5项安全验证:基于SITS2026标准的CI/CD嵌入式检测清单
  • 2026年北京全屋高端定制现代简约风格公司测评与选型指南
  • 泰山派3M-RK3576-系统开发与编译-Buildroot系统-编译内核
  • CANN运行时资源限制内核加载示例
  • Switch游戏文件管理神器:NSC_BUILDER让你告别格式混乱烦恼
  • test000009913
  • 对比多个模型 API 供应商后我为何选择 Taotoken 作为主用平台
  • 模型诊断与知识库调试:从冲突集到高效算法的工程实践
  • 网上祭祀平台哪个更便捷
  • Arm DynamIQ架构性能监控单元(PMU)设计与实战
  • N_m3u8DL-RE终极指南:三步搞定加密流媒体下载,永久保存你喜爱的视频内容
  • CANN/cann-recipes-infer SwigluClipQuant算子
  • CANN/pyasc MDL配置API文档
  • 泰山派3M-RK3576-系统功能-Buildroot-音频功能
  • CANN社区管理仓库