dvpp_malloc
Applicability
|
Product |
Supported |
|---|---|
|
Atlas 350 Accelerator Card |
√ |
|
|
√ |
|
|
√ |
|
|
x |
|
|
√ |
|
|
√ |
Description
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
1hi_s32 hi_mpi_dvpp_malloc(hi_u32 dev_id, hi_void **dev_ptr, hi_u64 size)
- Python Function
1dev_ptr, ret = acl.himpi.dvpp_malloc(dev_id, size)
Parameters
|
Parameter |
Description |
|---|---|
|
dev_id |
Int, device ID. This parameter is reserved and invalid. |
|
size |
Int, allocated memory size, in bytes. |
Return Value
|
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 a maximum of 16 GB address space in each process.
This restriction applies to the following products:
Atlas A3 training product /Atlas A3 inference product Atlas A2 training product /Atlas A2 inference product Atlas inference product - 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.