aclrtMemAllocManaged

产品支持情况

产品 是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品 x
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

申请size大小的统一虚拟内存(Unified Virtual Memory, UVM),并通过*ptr返回已申请内存的指针。

本接口申请的内存会根据用户指定的size,将申请的内存大小向上按2M对齐。

通过本接口申请的内存,需要通过aclrtFree接口释放内存。

函数原型

aclError aclrtMemAllocManaged(void **ptr, uint64_t size, uint32_t flag)

参数说明

参数名 输入/输出 说明
ptr 输出 “已分配内存的指针”的指针,由于Host侧和Device侧虚拟地址统一编址,该参数不区分申请位置。
size 输入 申请内存的大小,单位Byte。
size不能为0,单个应用进程最大可申请3T UVM类型虚拟内存。
flag 输入 申请内存的标识。
当前flag仅支持设置为ACL_RT_MEM_ATTACH_GLOBAL,所对应数值为1。设置ACL_RT_MEM_ATTACH_GLOBAL时,通过本接口申请的内存在Device和Host侧都可以被访问。
宏定义如下:
#define ACL_RT_MEM_ATTACH_GLOBAL (0x01U)

返回值说明

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

约束说明

本接口分配的内存不会进行对内容进行初始化,建议在使用内存前先调用aclrtMemset接口先初始化内存,清除内存中的随机数。