Skip to main content

函数:get_mem_info

函数:mem_flush

C函数原型aclError aclrtMemFlush(void *devPtr, size_t size)
Python函数ret = acl.rt.mem_flush(dev_ptr, size)
函数功能将cache中的数据刷新到DDR中,并将cache中的内容设置成无效。该版本不需要用户处理CPU与NPU之间的cache一致性,无需调用该接口。
输入说明**dev_ptr:**int,要flush的DDR内存起始地址。 size:int,要flush的DDR内存大小,单位Byte。“size”不能为0。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: 内存管理

函数:mem_invalidate

C函数原型aclError aclrtMemInvalidate(void *devPtr, size_t size)
Python函数ret = acl.rt.mem_invalidate(dev_ptr, size)
函数功能将cache中的数据设置成无效。该版本不需要用户处理CPU与NPU之间的cache一致性,无需调用该接口。
输入说明**dev_ptr:**int,需要指定DDR内存对应的cache无效。 size:int,DDR内存大小,单位Byte。“size”不能为0。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: 内存管理

函数:get_mem_info

C函数原型aclError aclrtGetMemInfo(aclrtMemAttr attr, size_t *free, size_t *total)
Python函数free, total, ret = acl.rt.get_mem_info(attr)
函数功能获取指定属性的pyACL应用可用内存的空闲大小和总大小,不包括系统预留内存大小。同步接口。 请根据实际硬件支持的情况,选择对应属性的内存,否则调用本接口获取到的空闲大小和总大小都为0。
输入说明**attr:**int,需要查询的内存的属性值。
- 0:ACL_DDR_MEM,DDR内存,DDR上所有大页内存 + 普通内存。
- 1:ACL_HBM_MEM,片上内存,片上内存上所有大页内存 + 普通内存。
- 2:ACL_DDR_MEM_HUGE,DDR大页内存。
- 3:ACL_DDR_MEM_NORMAL,DDR普通内存。
- 4:ACL_HBM_MEM_HUGE,片上内存大页内存。
- 5:ACL_HBM_MEM_NORMAL,片上内存普通内存。
- 6:ACL_DDR_MEM_P2P_HUGE,DDR中用于Device间数据复制的大页内存。预留选项。
- 7:ACL_DDR_MEM_P2P_NORMAL,DDR中用于Device间数据复制的普通内存。预留选项。
- 8:ACL_HBM_MEM_P2P_HUGE,片上内存中用于Device间数据复制的大页内存。预留选项。
- 9:ACL_HBM_MEM_P2P_NORMAL,片上内存中用于Device间数据复制的普通内存。预留选项。
返回值说明- free:int,对应属性的内存的空闲大小,单位Byte。
- total:int,对应属性的内存的总大小,单位Byte。
- ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明调用本接口前是必须先指定用于计算的Device,因此本接口中不体现Device ID。

父主题: 内存管理

函数:free

C函数原型aclError aclrtFree(void *devPtr)
Python函数ret= acl.rt.free(dev_ptr)
函数功能释放Device上的内存,同步接口。 acl.rt.free接口只能释放通过acl.rt.malloc接口申请的内存。
输入说明dev_ptr:int,待释放内存的指针地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明
参考资源接口调用示例,参见数据传输

父主题: 内存管理

函数:malloc_host

C函数原型aclError aclrtMallocHost(void **hostPtr, size_t size)
Python函数host_ptr, ret= acl.rt.malloc_host(size)
函数功能应用在Host上运行时,调用该接口申请的是Host内存,由系统保证内存首地址64字节对齐。 应用在Device上运行时,调用该接口申请的是Device内存,且Device上的内存按普通页申请,如需首地址64字节对齐,需要用户自行处理对齐。同步接口。
输入说明size:int,申请内存的大小,单位Byte。size不能为0。
返回值说明host_ptr:int,指向Host上已分配内存的指针的指针地址。 ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明- 使用acl.rt.malloc_host接口申请的内存,需要通过acl.rt.free_host接口释放内存。
- 频繁调用acl.rt.malloc_host接口申请内存、调用acl.rt.free_host接口释放内存,会损耗性能,建议用户提前做内存预先分配或二次管理,避免频繁申请/释放内存。
- 若用户使用本接口申请大块内存并自行划分、管理内存时,每段内存需同时满足以下需求:
- 内存大小向上对齐成32整数倍加32字节(m = ALIGN_UP[len, 32] + 32字节)。
- 内存起始地址需满足64字节对齐(ALIGN_UP[m, 64])。(说明:len表示某段内存的大小,ALIGN_UP[len, k]表示向上按k字节对齐:((len - 1) / k + 1) * k。)
参考资源接口调用示例,参见数据传输

父主题: 内存管理

函数:free_host

C函数原型aclError aclrtFreeHost(void *hostPtr)
Python函数ret= acl.rt.free_host(host_ptr)
函数功能释放Host上的内存,同步接口。 acl.rt.free_host接口只能释放通过acl.rt.malloc_host接口申请的内存。
输入说明host_ptr:int,待释放内存的对象的指针地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明
参考资源接口调用示例,参见数据传输

父主题: 内存管理

在线提单