news 2026/5/10 5:17:39

CANN/hcomm对称内存获取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/hcomm对称内存获取

HcclCommSymWinGet

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

产品支持情况

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

功能说明

根据已注册对称内存的虚拟地址指针,返回对应的窗口资源句柄及其在窗口内的偏移量。

函数原型

HcclResult HcclCommSymWinGet(HcclComm comm, void *ptr, size_t size, HcclCommSymWindow *winHandle, size_t *offset)

参数说明

参数名输入/输出说明
comm输入HCCL通信域。
ptr输入虚拟地址指针,该内存需要已使用HcclCommSymWinRegister接口进行注册。
size输入对称内存窗口大小。
假设对称内存窗口大小为symSize,已注册对称内存的虚拟地址指针为addr,size需要满足以下条件:
- size > 0
- ptr+size <= addr + symSize
winHandle输出指向“对称内存窗口资源句柄”的指针。
offset输出指向偏移量的指针。
假设已注册对称内存的虚拟地址指针为addr,则*offset = ptr - addr。

返回值

HcclResult:接口成功返回HCCL_SUCCESS,其他失败。

约束说明

  • 仅支持Atlas A3 训练系列产品/Atlas A3 推理系列产品的超节点内通信。
  • 仅支持通信算子展开模式为AI CPU的场景。

调用示例

// 创建并初始化通信域配置项 HcclCommConfig config; HcclCommConfigInit(&config); // 按需修改通信域配置 config.hcclSymWinMaxMemSizePerRank = 10; //单位GB, 默认值为16。设置对称堆预留的虚拟内存大小 = rankSize * config.hcclSymWinMaxMemSizePerRank; // 初始化集合通信域 HcclComm hcclComm; HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, deviceId, &config, &hcclComm)); // 物理内存属性配置 int32_t deviceId; aclrtGetDevice(&deviceId); aclrtPhysicalMemProp prop; prop.handleType = ACL_MEM_HANDLE_TYPE_NONE; prop.allocationType = ACL_MEM_ALLOCATION_TYPE_PINNED; prop.memAttr = ACL_HBM_MEM_HUGE; prop.location.id = deviceId; prop.location.type = ACL_MEM_LOCATION_TYPE_DEVICE; prop.reserve = 0; // 获取对齐粒度,通常为2M size_t granularity = 0; aclrtMemGetAllocationGranularity(&prop, ACL_RT_MEM_ALLOC_GRANULARITY_RECOMMENDED, &granularity); // size按粒度对齐 size_t size = 2 * 1024 * 1024; size_t allocSize = (size + granularity - 1) / granularity * granularity; // 预留虚拟内存 void *virPtr = nullptr; aclrtReserveMemAddress(&virPtr, allocSize, 0, nullptr, 1); // 申请物理内存 aclrtDrvMemHandle handle; aclrtMallocPhysical(&handle, allocSize, &prop, 0); // 建立物理到虚拟的映射 aclrtMapMem(virPtr, allocSize, 0, handle, 0); HcclCommSymWindow sym_win; // 注册对称内存 HcclCommSymWinRegister(hcclComm, virPtr, allocSize, &sym_win, HCCL_WIN_COLL_SYMMETRIC); // 使用HcclCommSymWinGet获取对称内存资源 HcclCommSymWindow temp_win; size_t offset = 0; HcclCommSymWinGet(hcclComm, virPtr + 10, 1024, &temp_win, &offset); // 解注册对称内存 HcclCommSymWinDeregister(sym_win); // 释放内存 aclrtUnmapMem(virPtr); aclrtFreePhysical(handle); aclrtReleaseMemAddress(virPtr); // 销毁通信域 HcclCommDestroy(hcclComm);

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

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

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

基于机器学习的职业推荐系统:从原理到工程实践

1. 项目概述与核心价值 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“career-recommender”&#xff0c;作者是kartikayAg。光看名字&#xff0c;你大概能猜到这是个职业推荐系统。但如果你以为它只是个简单的“输入专业&#xff0c;输出岗位”的玩具&#xff0c;那就…

作者头像 李华
网站建设 2026/5/10 5:16:25

构建智能事件分诊系统:从告警风暴到精准响应的自动化实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫acmeagentsupply/triage。乍一看这个仓库名&#xff0c;可能会觉得有点抽象——“acmeagentsupply”像是个组织名&#xff0c;“triage”这个词在医疗领域是“分诊”的意思&#xff0c;指根据病情的紧急程…

作者头像 李华
网站建设 2026/5/10 5:15:38

AI智能体任务系统架构设计:从DAG编排到动态路由的工程实践

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为KwokKwok/agent-task的项目引起了我的注意。乍一看这个标题&#xff0c;它可能显得有点抽象&#xff0c;但如果你像我一样&#xff0c;长期在AI智能体、自动化流程和任务编排领域摸爬滚打&#xff0c;就会立刻嗅到其…

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

AI赋能建筑电气工程:从设计到运维的智能化转型实践

1. 项目概述&#xff1a;当传统建筑业遇上智能新引擎干了十几年电气与电子工程&#xff0c;从画图、布线到调试&#xff0c;几乎跑遍了各种工地。这几年最深的感触是&#xff0c;活儿越来越复杂&#xff0c;工期却越来越紧&#xff0c;图纸改了又改&#xff0c;现场协调能把人逼…

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

ARMv8/v9异常处理机制与ESR_EL1寄存器解析

1. ARM异常处理机制概述在ARMv8/v9架构中&#xff0c;异常处理是处理器响应各类中断、错误和系统事件的核心机制。当处理器执行过程中遇到需要特殊处理的情况时&#xff08;如硬件中断、指令执行错误、系统调用等&#xff09;&#xff0c;会暂停当前执行流&#xff0c;转而执行…

作者头像 李华
网站建设 2026/5/10 5:02:37

多智能体配置文件管理:模块化开发环境配置的工程实践

1. 项目概述&#xff1a;为什么我们需要一个“多智能体”的配置文件仓库&#xff1f;如果你和我一样&#xff0c;是一个长期在终端里摸爬滚打的开发者&#xff0c;那么你的~/.bashrc、~/.vimrc或者~/.zshrc文件&#xff0c;很可能已经变成了一个臃肿不堪、充满历史包袱的“垃圾…

作者头像 李华