昇腾社区首页
中文
注册

函数:map_mem

产品支持情况

产品

是否支持

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

Atlas 训练系列产品

Atlas 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 200/300/500 推理产品

功能说明

将虚拟内存映射到物理内存。

本接口需与以下其它接口配合使用,以便申请地址连续的虚拟内存、最大化利用物理内存的目的:
  1. 申请虚拟内存(acl.rt.reserve_mem_address接口)。
  2. 申请物理内存(acl.rt.malloc_physical接口)。
  3. 将虚拟内存映射到物理内存(acl.rt.map_mem接口)。
  4. 执行任务(调用具体的任务接口)。
  5. 取消虚拟内存与物理内存的映射(acl.rt.unmap_mem接口)。
  6. 释放物理内存(acl.rt.free_physical接口)。
  7. 释放虚拟内存(acl.rt.release_mem_address接口)。

函数原型

  • C函数原型
    1
    aclError aclrtMapMem(void *virPtr, size_t size, size_t offset, aclrtDrvMemHandle handle, uint64_t flags)
    
  • python函数
    1
    ret = acl.rt.map_mem(vir_ptr, size, offset, handle, flags)
    

参数说明

参数名

说明

vir_ptr

int,待映射的虚拟地址。该地址不一定为起始地址,用户也可以根据起始地址自行偏移后,再映射。虚拟地址当前需按照2M对齐。

size

int,待映射的内存大小,单位Byte。size当前需按照2M对齐。

offset

int,物理内存偏移值,当前只能设置为0。

handle

int,物理内存指针地址。

通过acl.rt.reserve_mem_address接口预留出来的一整段虚拟地址,由用户自行管理、划分时,不能同时与两个Device上申请的物理地址绑定。

通过acl.rt.reserve_mem_address接口预留出来的一整段虚拟地址,由用户自行管理、划分时,不能同时与acl.rt.malloc_physicalacl.rt.mem_import_from_shareable_handle接口输出的handle绑定。

flags

int,预留,当前仅支持设置为0。

返回值说明

返回值

说明

ret

int,错误码,返回0表示成功,返回其它值表示失败。

约束说明

Ascend RC形态不支持调用本接口。