aclrtMemAllocManaged
产品支持情况
产品 |
是否支持 |
|---|---|
Atlas 350 加速卡 |
☓ |
☓ |
|
√ |
|
☓ |
|
☓ |
|
☓ |
功能说明
申请统一虚拟内存(Unified Virtual Memory, UVM),通过*ptr返回已申请内存的指针,且申请的内存大小会根据用户指定的size向上按2M对齐。使用本接口申请的内存,若需释放内存,需调用aclrtFree接口。
本接口为封装接口,仅适用于C++程序,接口内部调用C接口aclrtMemAllocManaged。
函数原型
1 2 | template <typename T> aclError aclrtMemAllocManaged(T **devPtr, size_t size, uint32_t flags = ACL_RT_MEM_ATTACH_GLOBAL) |
参数说明
参数名 |
输入/输出 |
说明 |
|---|---|---|
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接口先初始化内存,清除内存中的随机数。
父主题: C++扩展接口