dvpp_malloc

Applicability

Product

Supported (√/x)

Atlas A3 training products / Atlas A3 inference products

Atlas A2 training products / Atlas A2 inference products

Atlas training products

x

Atlas inference products

Atlas 200I/500 A2 inference products

Function Usage

Allocates device memory. The requested allocation must meet the media data processing requirements (for example,128-byte alignment of the start address).

Prototype

  • C Prototype
    1
    hi_s32 hi_mpi_dvpp_malloc(hi_u32 dev_id, hi_void **dev_ptr, hi_u64 size)
    
  • Python Function
    1
    dev_ptr, ret = acl.himpi.dvpp_malloc(dev_id, size)
    

Parameter Description

Parameter

Description

dev_id

Int, device ID. This parameter is reserved and invalid.

In standard form, when this API is called on the host, DVPP allocates memory on the device set by the call to the acl.rt.set_device API.

size

Int, allocated memory size, in bytes.

Return Value Description

Return Value

Description

dev_ptr

Int, address of the pointer to the allocated device memory.

ret

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

Restrictions

  • After this API is called to allocate memory, the lifetime of the memory is managed by the user. If the memory is not used, the acl.himpi.dvpp_free API must be called to free the memory in a timely manner.
  • Memory allocated by this API call is accessible only to the calling process and cannot be shared among processes.
  • Media data processing can access up to 16 GB of address space in each process.

    This restriction applies to the following products:

    Atlas A3 training products / Atlas A3 inference products

    Atlas A2 training products / Atlas A2 inference products

    Atlas inference products

  • When acl.himpi.dvpp_malloc is called to allocate the memory, the allocation size is the input size rounded up to the nearest multiple of 32, plus 32 bytes.
  • When the output of media data processing is used as the input of model inference, if you use this API to allocate a large memory block and divide and manage the memory, each memory segment must meet the following requirements:
    • The memory size is rounded up to the nearest multiple of 32 plus 32 bytes (m = ALIGN_UP[len,32] + 32 bytes).
    • The memory start address must be 128-byte aligned (ALIGN_UP[m,128]).

    len indicates the size of a memory segment. ALIGN_UP[len,k] indicates rounding up to a multiple of k bytes as in this formula: ((len – 1)/k + 1) x k.

Reference

For details about the API call sequence and example, see Media Data Processing V2.