Function: memcpy_async

Applicable Products

Product

Supported (√/x)

Ascend 950PR/Ascend 950DT

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

Description

Copies memory. This API is asynchronous.

The host memory in this API can be page-locked memory (for example, the memory allocated by the acl.rt.malloc_host API) or non-page-locked memory (allocated by the malloc API). If the host memory is non-page-locked memory, this API returns only after the memory copy task is complete. If the host memory is page-locked memory, this API is asynchronous. A successful API call only indicates that the task is delivered, not executed. After this API is called, call the synchronization API (for example, acl.rt.synchronize_stream) to ensure that the memory copy task is complete.

Prototype

  • C Prototype
    1
    aclError aclrtMemcpyAsync(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)
    
  • Python Function
    1
    ret = acl.rt.memcpy_async(dst, dest_max, src, count, kind, stream)
    

Parameters

Parameter

Description

dst

Int, pointer address of the destination memory address.

dest_max

Int, memory size in bytes in the destination address

src

Int, pointer address of the source memory address.

count

Int, size in bytes to copy.

kind

Int, memory copy type.
  • 0: ACL_MEMCPY_HOST_TO_HOST, memory copy within the host.
  • 1: ACL_MEMCPY_HOST_TO_DEVICE, memory copy from the host to the device.
  • 2: ACL_MEMCPY_DEVICE_TO_HOST, memory copy from the device to the host.
  • 3: ACL_MEMCPY_DEVICE_TO_DEVICE, memory copy within the device. This API is not supported by the Atlas 500 Pro (model 3000).
  • 4: ACL_MEMCPY_DEFAULT. The system determines the copy direction based on the source and destination memory addresses.

stream

Int, stream ID.

Return Values

Return Value

Description

ret

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

Restrictions

  • The source address and destination address passed to this call must be 64-byte aligned.
  • Ascend EP form: This API does not support asynchronous memory copy within the host. If the input kind is ACL_MEMCPY_HOST_TO_HOST, the API returns ACL_ERROR_RT_FEATURE_NOT_SUPPORT.
  • Ascend RC: If the value of kind passed by this API is ACL_MEMCPY_HOST_TO_DEVICE, ACL_MEMCPY_DEVICE_TO_HOST, or ACL_MEMCPY_HOST_TO_HOST when the app is running on the board, the system uses ACL_MEMCPY_DEVICE_TO_DEVICE by default to copy memory on the device.
  • Open Ctrl CPU form: If the value of kind passed by this API is ACL_MEMCPY_HOST_TO_DEVICE, ACL_MEMCPY_DEVICE_TO_HOST, or ACL_MEMCPY_HOST_TO_HOST when the app is running on the device, the system uses ACL_MEMCPY_DEVICE_TO_DEVICE by default to copy memory on the device.
  • This API does not support asynchronous memory copy within the host. If the input kind is ACL_MEMCPY_HOST_TO_HOST, the API returns the error message "ACL_ERROR_RT_FEATURE_NOT_SUPPORT".