---
title: 函数：map_mem
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclpythondevg_01_0128.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0128.html
indexId: 25a62d01d6b6dea06d8519aba81344e163ec60c5c2d3731ecc9b8a4c351493e271
---
# 函数：map_mem

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |


#### 功能说明

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

本接口需与以下其它接口配合使用，以便申请地址连续的虚拟内存、最大化利用物理内存的目的：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，待映射的虚拟地址。该地址不一定为起始地址，用户也可以根据起始地址自行偏移后，再映射。 |
| size | int，待映射的内存大小，单位Byte。 此处的size必须与acl.rt.malloc\_physical接口的size参数值相同，size必须与acl.rt.mem\_get\_allocation\_granularity接口获取的ACL\_RT\_MEM\_ALLOC\_GRANULARITY\_MINIMUM对齐。 |
| offset | int，物理内存偏移值，当前只能设置为0。 |
| handle | int，物理内存指针地址。 通过acl.rt.reserve\_mem\_address接口预留出来的一整段虚拟地址，由用户自行管理、划分时，不能同时与两个Device上申请的物理地址绑定。 通过acl.rt.reserve\_mem\_address接口预留出来的一整段虚拟地址，由用户自行管理、划分时，不能同时与acl.rt.malloc\_physical、acl.rt.mem\_import\_from\_shareable\_handle接口输出的handle绑定。 |
| flags | int，预留，当前仅支持设置为0。 |


#### 返回值说明

| 返回值 | 说明 |
| --- | --- |
| ret | int，错误码，返回0表示成功，返回其它值表示失败。 |


#### 约束说明

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