aclrtMapMem

Applicable Products

Product

Supported

Ascend 950PR / Ascend 950DT

√

Atlas A3 training products / Atlas A3 inference products

√

Atlas A2 training products / Atlas A2 inference products

√

Atlas 200I/500 A2 inference products

√

Atlas inference products

√

Atlas training products

√

Function

Maps virtual memory to physical memory.

This API must be used together with other APIs to allocate virtual memory with consecutive addresses and maximize the use of physical memory.
  1. Call aclrtReserveMemAddress to allocate virtual memory.
  2. Call aclrtMallocPhysical to allocate physical memory.
  3. Call aclrtMapMem to map virtual memory to physical memory.
  4. Call specific task APIs to execute tasks.
  5. Call aclrtUnmapMem to cancel the mapping between virtual memory and physical memory.
  6. Call aclrtFreePhysical to free physical memory.
  7. Call aclrtReleaseMemAddress to free virtual memory.

Prototype

1
aclError aclrtMapMem(void *virPtr, size_t size, size_t offset, aclrtDrvMemHandle handle, uint64_t flags)

Parameters

Parameter

Input/Output

Description

virPtr

Input

Pointer to the virtual memory address to be mapped.

The address may not be the start address. You can also offset the address based on the start address and then map the address.

size

Input

Size of the memory to be mapped, in bytes.

This size must be the same as that of the size parameter of aclrtMallocPhysical. It must also be aligned with ACL_RT_MEM_ALLOC_GRANULARITY_MINIMUM obtained by aclrtMemGetAllocationGranularity.

offset

Input

Offset of the physical memory. This parameter can only be set to 0.

handle

Input

Handle for storing physical memory information. For details about the type definition, see aclrtDrvMemHandle.

A virtual address segment reserved by using the aclrtReserveMemAddress API is managed and divided by users. It cannot be bound to the physical addresses allocated on two devices at the same time.

A virtual address segment reserved by using the aclrtReserveMemAddress API is managed and divided by users. It cannot be bound at the same time to the handles returned by the aclrtMallocPhysical and aclrtMemImportFromShareableHandle APIs.

flags

Input

Reserved. The value is fixed at 0.

Returns

0 on success; otherwise, failure. For details, see aclError.

Restrictions

Atlas 200I/500 A2 inference products in Ascend RC form: This API is not supported.

API Call Example

For the API call example, see Virtual Memory Management.