Function: map_mem

Applicability

Product

Supported (√/x)

Atlas A3 training products/Atlas A3 inference products

Atlas A2 training products/Atlas A2 inference products

Atlas training products

Atlas inference products

Atlas 200I/500 A2 inference products

Function Usage

Maps virtual memory to physical memory.

This API needs to work with other APIs to allocate virtual memory with consecutive addresses and maximize the use of physical memory.
  1. Call acl.rt.reserve_mem_address to allocate virtual memory.
  2. Call acl.rt.malloc_physical to allocate physical memory.
  3. Call acl.rt.map_mem to map the virtual memory to the physical memory.
  4. Call specific task APIs to execute tasks.
  5. Call acl.rt.unmap_mem to unmap the virtual memory from the physical memory.
  6. Call acl.rt.free_physical to free the physical memory.
  7. Call acl.rt.release_mem_address to free the virtual memory.

Prototype

  • C Prototype
    1
    aclError aclrtMapMem(void *virPtr, size_t size, size_t offset, aclrtDrvMemHandle handle, uint64_t flags)
    
  • Python Function
    1
    ret = acl.rt.map_mem(vir_ptr, size, offset, handle, flags)
    

Parameter Description

Parameter

Description

vir_ptr

Int, virtual 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

Int, size of the memory to be mapped, in bytes.

This size must be the same as that of the size parameter of acl.rt.malloc_physical. It must also be aligned with ACL_RT_MEM_ALLOC_GRANULARITY_MINIMUM obtained by acl.rt.mem_get_allocation_granularity.

offset

Int, physical memory offset. It can only be set to 0 currently.

handle

Int, physical memory pointer address.

A virtual address segment reserved by using the acl.rt.reserve_mem_address API is managed and allocated by the user and cannot be bound to the physical addresses allocated on two devices at the same time.

A virtual address segment reserved by using the acl.rt.reserve_mem_address API is managed and divided by the user. It cannot be bound to the handle output by the acl.rt.malloc_physical and acl.rt.mem_import_from_shareable_handle APIs at the same time.

flags

Int, reserved. Currently, this parameter can only be set to 0.

Return Value Description

Return Value

Description

ret

Int, error code: 0 on success; else, failure.

Restrictions

This API is not supported in the Ascend RC form.