aclrtReserveMemAddress

Applicability

Product

Supported

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

Description

Reserves virtual memory.

This API must be used 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 the virtual memory to the physical memory.
  4. Call specific task APIs to execute tasks.
  5. Call aclrtUnmapMem to unmap the virtual memory from the physical memory.
  6. Call aclrtFreePhysical to free the physical memory.
  7. Call aclrtReleaseMemAddress to free the virtual memory.

Prototype

aclError aclrtReserveMemAddress(void **virPtr, size_t size, size_t alignment, void *expectPtr, uint64_t flags)

Parameters

Parameter

Input/Output

Description

virPtr

Output

Pointer to "pointer to the allocated virtual memory address".

size

Input

Virtual memory size, in bytes.

Must not be 0.

alignment

Input

Alignment value of the virtual address. This parameter is reserved and can only be set to 0.

expectPtr

Input

Start address of the virtual memory to be returned.

The options are as follows:

  • nullptr: The system automatically allocates a virtual address that meets the alignment requirements.
  • Non-nullptr: Specify a start address within the range of 8 TB (16–24 TB). Ensure that the specified address is not occupied and meets the alignment requirements. Otherwise, the virtual memory cannot be reserved and an error will be returned. The alignment rule is as follows: If size is less than 1 GB, expectPtr must be aligned to a power (n) of 2. If size is greater than 1 GB, expectPtr must be aligned to 1 GB.

    Note: The function of specifying a start address is for trial use and may be changed in later versions. It is not available in commercial products.

flags

Input

Huge page or common page flag. The flag must be the same as the memory type of aclrtMallocPhysical.

Values:

  • 0: common page
  • 1: huge page

Returns

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

Restrictions

  • This API is not supported in the Ascend RC form of the Atlas 200I/500 A2 inference products.
  • To use the virtual memory reserved by this API, only aclrtMemcpyAsync can be called to copy data between two devices in the single-process scenario.