CANN/runtime共享Buffer管理
17-03 共享Buffer管理【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本章节描述共享 Buffer 管理接口用于 Buffer 的分配、释放、数据操作及 Buffer 链管理。aclError acltdtAllocBuf(size_t size, uint32_t type, acltdtBuf *buf)申请共享Buffer内存。aclError acltdtFreeBuf(acltdtBuf buf)释放通过acltdtAllocBuf接口申请的mbuf。aclError acltdtGetBufData(const acltdtBuf buf, void **dataPtr, size_t *size)获取共享Buffer的数据区指针和数据区长度用户可以使用此指针填入数据。aclError acltdtSetBufUserData(acltdtBuf buf, const void *dataPtr, size_t size, size_t offset)设置共享Buffer的私有数据区数据从用户内存拷贝到共享内存的私有数据区的指定偏移位置用于设置控制信息作为上下文传递。aclError acltdtGetBufUserData(const acltdtBuf buf, void *dataPtr, size_t size, size_t offset)获取共享Buffer的私有数据区数据偏移offset后拷贝至用户申请的内存区域。aclError acltdtSetBufDataLen(acltdtBuf buf, size_t len)设置共享Buffer中有效数据的长度。aclError acltdtGetBufDataLen(acltdtBuf buf, size_t *len)获取共享Buffer中有效数据的长度。aclError acltdtCopyBufRef(const acltdtBuf buf, acltdtBuf *newBuf)对共享Buffer数据区的引用拷贝创建并返回一个新的Buffer管理结构指向相同的数据区。aclError acltdtAppendBufChain(acltdtBuf headBuf, acltdtBuf buf)将某个共享Buffer内存添加到共享Buffer链表中。aclError acltdtGetBufChainNum(acltdtBuf headBuf, uint32_t *num)获取共享Buffer链中的共享Buffer数量。aclError acltdtGetBufFromChain(acltdtBuf headBuf, uint32_t index, acltdtBuf *buf)获取Mbuf链中第index个Mbuf。acltdtAllocBufaclError acltdtAllocBuf(size_t size, uint32_t type, acltdtBuf *buf)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明申请共享Buffer内存。使用acltdtAllocBuf接口申请内存后数据区的长度为size参数的大小在用户还未填入有效数据前该内存的有效数据长度初始值为0可在用户向内存中填入有效数据后再通过acltdtSetBufDataLen接口设置有效数据长度。使用acltdtAllocBuf接口申请的内存需要通过acltdtFreeBuf接口释放内存。参数说明参数名输入/输出说明size输入用于指定数据区的内存大小单位Byte不能超过4G。type输入共享Buffer内存类型支持设置如下枚举值。typedef enum {ACL_TDT_NORMAL_MEM 0,ACL_TDT_DVPP_MEM} acltdtAllocBufType;当前仅支持设置ACL_TDT_NORMAL_MEM。buf输出申请成功输出共享Buffer。类型定义请参见acltdtBuf。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtFreeBufaclError acltdtFreeBuf(acltdtBuf buf)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明释放通过acltdtAllocBuf接口申请的mbuf。参数说明参数名输入/输出说明buf输入指定要释放的mbuf。类型定义请参见acltdtBuf。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtGetBufDataaclError acltdtGetBufData(const acltdtBuf buf, void **dataPtr, size_t *size)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明获取共享Buffer的数据区指针和数据区长度用户可以使用此指针填入数据。接口调用顺序调用acltdtAllocBuf或acltdtCopyBufRef接口申请到共享Buffer后因此需由用户调用acltdtGetBufData接口获取共享Buffer的内存指针及长度后再自行向内存中填充有效数据然后再调用acltdtSetBufDataLen接口设置共享Buffer中有效数据的长度且长度必须小于acltdtGetBufData获取到的size大小。参数说明参数名输入/输出说明buf输入共享Buffer指针。类型定义请参见acltdtBuf。须通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。dataPtr输出数据区指针Device侧地址。size输出数据区的长度单位为Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtSetBufUserDataaclError acltdtSetBufUserData(acltdtBuf buf, const void *dataPtr, size_t size, size_t offset)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明设置共享Buffer的私有数据区数据从用户内存拷贝到共享内存的私有数据区的指定偏移位置用于设置控制信息作为上下文传递。当前默认私有数据区大小是96Byteoffsetsize必须小于或等于96Byte否则返回报错。参数说明参数名输入/输出说明buf输出共享Buffer指针。类型定义请参见acltdtBuf。dataPtr输入存放用户数据的内存地址指针。size输入用户数据的长度单位为Byte。数据长度小于或等于96Byte。offset输入地址偏移单位为Byte。偏移量小于或等于96Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtGetBufUserDataaclError acltdtGetBufUserData(const acltdtBuf buf, void *dataPtr, size_t size, size_t offset)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明获取共享Buffer的私有数据区数据偏移offset后拷贝至用户申请的内存区域。当前默认私有数据区大小是96Byteoffsetsize必须小于或等于96Byte否则返回报错。参数说明参数名输入/输出说明buf输入共享Buffer指针。类型定义请参见acltdtBuf。须通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。dataPtr输入存放用户数据的内存地址指针。size输入用户数据的长度单位为Byte。数据长度小于或等于96Byte。offset输入地址偏移单位为Byte。偏移量小于或等于96Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtSetBufDataLenaclError acltdtSetBufDataLen(acltdtBuf buf, size_t len)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明设置共享Buffer中有效数据的长度。接口调用顺序调用acltdtAllocBuf或acltdtCopyBufRef接口申请到共享Buffer后因此需由用户调用acltdtGetBufData接口获取共享Buffer的内存指针及长度后再自行向内存中填充有效数据然后再调用acltdtSetBufDataLen接口设置共享Buffer中有效数据的长度且长度必须小于acltdtGetBufData获取到的size大小。参数说明参数名输入/输出说明buf输入共享Buffer指针。类型定义请参见acltdtBuf。须通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。len输入有效数据的长度单位为Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtGetBufDataLenaclError acltdtGetBufDataLen(acltdtBuf buf, size_t *len)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明获取共享Buffer中有效数据的长度。通过acltdtSetBufDataLen接口设置共享Buffer中有效数据的长度后可调用本接口获取有效数据的长度否则通过本接口获取到的长度为0。参数说明参数名输入/输出说明buf输入共享Buffer指针。类型定义请参见acltdtBuf。须通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。len输出有效数据的长度单位为Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtCopyBufRefaclError acltdtCopyBufRef(const acltdtBuf buf, acltdtBuf *newBuf)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明对共享Buffer数据区的引用拷贝创建并返回一个新的Buffer管理结构指向相同的数据区。参数说明参数名输入/输出说明buf输入共享Buffer。类型定义请参见acltdtBuf。须通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。newBuf输出返回一个新的共享Buffer指向相同的数据区。类型定义请参见acltdtBuf。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtAppendBufChainaclError acltdtAppendBufChain(acltdtBuf headBuf, acltdtBuf buf)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明将某个共享Buffer内存添加到共享Buffer链表中。共享Buffer链最大支持128个共享Buffer。共享Buffer可通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。参数说明参数名输入/输出说明headBuf输入共享Buffer链头部的第一个共享Buffer。类型定义请参见acltdtBuf。buf输入待添加的共享Buffer。类型定义请参见acltdtBuf。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtGetBufChainNumaclError acltdtGetBufChainNum(acltdtBuf headBuf, uint32_t *num)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明获取共享Buffer链中的共享Buffer数量。参数说明参数名输入/输出说明headBuf输入共享Buffer链头部的第一个共享Buffer。类型定义请参见acltdtBuf。须通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。num输出共享Buffer链中的共享Buffer数量。返回值说明返回0表示成功返回其他值表示失败请参见aclError。acltdtGetBufFromChainaclError acltdtGetBufFromChain(acltdtBuf headBuf, uint32_t index, acltdtBuf *buf)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明获取Mbuf链中第index个Mbuf。参数说明参数名输入/输出说明headBuf输入共享Buffer链头部的第一个共享Buffer。类型定义请参见acltdtBuf。须通过acltdtAllocBuf或acltdtCopyBufRef接口申请获得。index输入共享Buffer链中的共享Buffer序号从0开始计数。buf输出输出第index个共享Buffer。类型定义请参见acltdtBuf。返回值说明返回0表示成功返回其他值表示失败请参见aclError。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考