news 2026/5/10 5:45:46

CANN/runtime共享Buffer管理预留接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/runtime共享Buffer管理预留接口

20. 共享Buffer管理(预留,暂不支持)

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

本章节描述预留的共享 Buffer 管理接口(当前版本暂不支持)。

  • aclError aclrtAllocBuf(aclrtMbuf *buf, size_t size):申请指定大小的共享Buffer。
  • aclError aclrtFreeBuf(aclrtMbuf buf):释放通过aclrtAllocBuf接口申请的共享Buffer。
  • aclError aclrtGetBufData(const aclrtMbuf buf, void **dataPtr, size_t *size):获取共享Buffer的数据区指针和数据区长度,用户可以使用此指针填入数据。
  • aclError aclrtSetBufUserData(aclrtMbuf buf, const void *dataPtr, size_t size, size_t offset):设置共享Buffer的私有数据区数据,从用户内存拷贝到共享Buffer的私有数据区的指定偏移位置,用于设置控制信息作为上下文传递。
  • aclError aclrtGetBufUserData(const aclrtMbuf buf, void *dataPtr, size_t size, size_t offset):获取共享Buffer的私有数据区数据,偏移offset后,拷贝至用户申请的内存区域。
  • aclError aclrtGetBufDataLen(aclrtMbuf buf, size_t *len):获取共享Buffer中有效数据的长度。
  • aclError aclrtSetBufDataLen(aclrtMbuf buf, size_t len):设置共享Buffer中有效数据的长度。
  • aclError aclrtCopyBufRef(const aclrtMbuf buf, aclrtMbuf *newBuf):对共享Buffer数据区的引用拷贝,创建并返回一个新的Mbuf管理结构指向相同的数据区。
  • aclError aclrtAppendBufChain(aclrtMbuf headBuf, aclrtMbuf buf):将共享Buffer添加到Mbuf链表中。
  • aclError aclrtGetBufFromChain(aclrtMbuf headBuf, uint32_t index, aclrtMbuf *buf):从Mbuf链表中获取第index个共享Buffer。
  • aclError aclrtGetBufChainNum(aclrtMbuf headBuf, uint32_t *num):从Mbuf链表中获取共享Buffer的个数。

aclrtAllocBuf

aclError aclrtAllocBuf(aclrtMbuf *buf, size_t size)

功能说明

申请指定大小的共享Buffer。

参数说明

参数名输入/输出说明
buf输出申请到的共享Buffer。类型定义请参见aclrtMbuf。
size输入用于指定数据区的内存大小,单位Byte,不能超过4G。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtFreeBuf

aclError aclrtFreeBuf(aclrtMbuf buf)

功能说明

释放通过aclrtAllocBuf接口申请的共享Buffer。

参数说明

参数名输入/输出说明
buf输入待释放的共享Buffer。类型定义请参见aclrtMbuf。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtGetBufData

aclError aclrtGetBufData(const aclrtMbuf buf, void **dataPtr, size_t *size)

功能说明

获取共享Buffer的数据区指针和数据区长度,用户可以使用此指针填入数据。

接口调用顺序:调用aclrtAllocBuf或aclrtCopyBufRef接口申请到共享Buffer后,因此需由用户调用aclrtGetBufData接口获取共享Buffer的内存指针及长度后,再自行向内存中填充有效数据,然后再调用aclrtSetBufDataLen接口设置共享Buffer中有效数据的长度,且长度必须小于aclrtGetBufData获取到的size大小。

参数说明

参数名输入/输出说明
buf输入共享Buffer,类型定义请参见aclrtMbuf。
须通过acltdtAllocBuf或aclrtCopyBufRef接口申请获得。
dataPtr输出数据区指针(Device侧地址)。
size输出数据区的长度,单位为Byte。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtSetBufUserData

aclError aclrtSetBufUserData(aclrtMbuf buf, const void *dataPtr, size_t size, size_t offset)

功能说明

设置共享Buffer的私有数据区数据,从用户内存拷贝到共享Buffer的私有数据区的指定偏移位置,用于设置控制信息作为上下文传递。当前默认私有数据区大小是96Byte,offset+size必须小于或等于96Byte,否则返回报错。

参数说明

参数名输入/输出说明
buf输出共享Buffer,类型定义请参见aclrtMbuf。
须通过aclrtAllocBuf或aclrtCopyBufRef接口申请获得。
dataPtr输入存放用户数据的内存地址指针。
size输入用户数据的长度,单位为Byte。
数据长度小于或等于96Byte。
offset输入地址偏移,单位为Byte。
偏移量小于或等于96Byte。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtGetBufUserData

aclError aclrtGetBufUserData(const aclrtMbuf buf, void *dataPtr, size_t size, size_t offset)

功能说明

获取共享Buffer的私有数据区数据,偏移offset后,拷贝至用户申请的内存区域。当前默认私有数据区大小是96Byte,offset+size必须小于或等于96Byte,否则返回报错。

参数说明

参数名输入/输出说明
buf输入共享Buffer,类型定义请参见aclrtMbuf。
须通过aclrtAllocBuf或aclrtCopyBufRef接口申请获得。
dataPtr输出存放用户数据的内存地址指针。
size输入用户数据的长度,单位为Byte。
数据长度小于或等于96Byte。
offset输入地址偏移,单位为Byte。
偏移量小于或等于96Byte。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtGetBufDataLen

aclError aclrtGetBufDataLen(aclrtMbuf buf, size_t *len)

功能说明

获取共享Buffer中有效数据的长度。

通过aclrtSetBufDataLen接口设置共享Buffer中有效数据的长度后,可调用本接口获取有效数据的长度,否则,通过本接口获取到的长度为0。

参数说明

参数名输入/输出说明
buf输入共享Buffer,类型定义请参见aclrtMbuf。
须通过aclrtAllocBuf或aclrtCopyBufRef接口申请获得。
len输出有效数据的长度,单位为Byte。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtSetBufDataLen

aclError aclrtSetBufDataLen(aclrtMbuf buf, size_t len)

功能说明

设置共享Buffer中有效数据的长度。

接口调用顺序:调用aclrtAllocBuf或aclrtCopyBufRef接口申请到共享Buffer后,因此需由用户调用aclrtGetBufData接口获取共享Buffer的内存指针及长度后,再自行向内存中填充有效数据,然后再调用aclrtSetBufDataLen接口设置共享Buffer中有效数据的长度,且长度必须小于aclrtGetBufData获取到的size大小。

参数说明

参数名输入/输出说明
buf输入共享Buffer,类型定义请参见aclrtMbuf。
须通过aclrtAllocBuf或aclrtCopyBufRef接口申请获得。
len输入有效数据的长度,单位为Byte。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtCopyBufRef

aclError aclrtCopyBufRef(const aclrtMbuf buf, aclrtMbuf *newBuf)

功能说明

对共享Buffer数据区的引用拷贝,创建并返回一个新的Mbuf管理结构指向相同的数据区。

参数说明

参数名输入/输出说明
buf输入共享Buffer。类型定义请参见aclrtMbuf。
共享Buffer可通过aclrtAllocBuf或aclrtCopyBufRef接口申请获得。
newBuf输出返回一个新的共享Buffer,指向相同的数据区。类型定义请参见aclrtMbuf。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtAppendBufChain

aclError aclrtAppendBufChain(aclrtMbuf headBuf, aclrtMbuf buf)

功能说明

将共享Buffer添加到Mbuf链表中。共享Buffer链最大支持128个共享Buffer。共享Buffer可通过aclrtAllocBuf或aclrtCopyBufRef接口申请获得。

参数说明

参数名输入/输出说明
headBuf输入Mbuf链表中的第一个共享Buffer。类型定义请参见aclrtMbuf。
buf输入待添加的共享Buffer。类型定义请参见aclrtMbuf。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtGetBufFromChain

aclError aclrtGetBufFromChain(aclrtMbuf headBuf, uint32_t index, aclrtMbuf *buf)

功能说明

从Mbuf链表中获取第index个共享Buffer。

参数说明

参数名输入/输出说明
headBuf输入Mbuf链表中的第一个共享Buffer。类型定义请参见aclrtMbuf。
index输入Mbuf链表中的索引(从0开始计数)。
buf输出输出第index个共享Buffer。类型定义请参见aclrtMbuf。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtGetBufChainNum

aclError aclrtGetBufChainNum(aclrtMbuf headBuf, uint32_t *num)

功能说明

从Mbuf链表中获取共享Buffer的个数。

参数说明

参数名输入/输出说明
headBuf输入Mbuf链表中的第一个共享Buffer。类型定义请参见aclrtMbuf。
num输出共享Buffer的个数。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

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

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

CodeFire:为AI编程助手构建持久记忆层,实现连续协作开发

1. 项目概述:为AI编程助手构建持久记忆层 如果你和我一样,深度依赖Claude Code、Gemini CLI这类AI编程助手来辅助日常开发,那你一定遇到过这个让人头疼的问题:每次开启一个新的会话,AI助手就像得了“健忘症”&#xf…

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

泰州群利起重设备有限公司,升降货梯品质保障厂家究竟有何过人之处?

在工业重载垂直运输领域,升降货梯是不可或缺的重要设备。泰州群利起重设备有限公司作为专注于液压升降货梯研发、生产、销售与安装服务的专业制造企业,其过人之处体现在多个方面。一、产品技术与类型优势具体数据与案例泰州群利起重设备有限公司主营的液…

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

MySQL数据库开发工具箱:从环境配置到性能优化的完整工程实践

1. 项目概述:一个数据库开发者的工具箱最近在GitHub上看到了一个名为“MySQL_Development_Work”的项目,作者是puneetkumar041。作为一名长期与数据库打交道的开发者,我立刻被这个标题吸引了。它不像那些炫酷的AI项目或者全栈框架&#xff0c…

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

CANN/HCCL Pipeline流水线算法

Pipeline 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann/hccl …

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

AI工作流编排框架aiflows:从消息驱动到DAG的智能应用开发实践

1. 项目概述:当AI工作流成为你的“智能副驾”最近在折腾AI应用开发的朋友,估计都绕不开一个核心痛点:想法很丰满,但落地很骨感。你构思了一个能自动分析周报、生成摘要、再根据摘要内容推荐下一步行动的多步AI应用,结果…

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

真正的地层断裂线

真正的地层断裂线维特根斯坦的思想底座是一对词:沉默与语言游戏。岐金兰的思想底座是另一对词:自感与痕迹论。这不是术语偏好问题。这对词的选择,决定了他们站在完全不同的哲学地基上。---维特根斯坦的地基:以语言为轴沉默是他前期…

作者头像 李华