函数:memcpy_async
产品支持情况
产品 |
是否支持 |
---|---|
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
功能说明
实现内存复制,异步接口。
函数原型
- C函数原型
1
aclError aclrtMemcpyAsync(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)
- python函数
1
ret = acl.rt.memcpy_async(dst, dest_max, src, count, kind, stream)
参数说明
参数名 |
说明 |
---|---|
dst |
int,目的内存地址的指针地址。 |
dest_max |
int,目的内存地址的最大内存长度,单位Byte。 |
src |
int,源内存地址的指针地址。 |
count |
int,内存复制的长度,单位Byte。 |
kind |
int,内存复制的类型。
|
stream |
int,stream ID。 |
返回值说明
返回值 |
说明 |
---|---|
ret |
int,错误码,返回0表示成功,返回其它值表示失败。 |
约束说明
各型号通用
- 调用本接口进行内存复制时,源地址和目的地址都必须64字节对齐。
- 若调用本接口传入的kind为ACL_MEMCPY_HOST_TO_DEVICE或ACL_MEMCPY_DEVICE_TO_HOST,并且Host内存不是通过acl.rt.malloc_host申请得到的,本接口不会报错,但是在实际执行到该任务时会发生不可预知的错误。
Ascend EP 形态下,本接口不支持异步Host内的内存复制功能,若传入的kind为ACL_MEMCPY_HOST_TO_HOST时,接口返回报错ACL_ERROR_RT_FEATURE_NOT_SUPPORT 。- Ascend RC形态下,在板端运行应用时,若调用本接口传入的kind为ACL_MEMCPY_HOST_TO_DEVICE、ACL_MEMCPY_DEVICE_TO_HOST或ACL_MEMCPY_HOST_TO_HOST,系统内部会默认使用ACL_MEMCPY_DEVICE_TO_DEVICE执行Device内的内存复制。
- 若调用本接口传入的kind为ACL_MEMCPY_HOST_TO_DEVICE或ACL_MEMCPY_DEVICE_TO_HOST,并且Host内存不是通过acl.rt.malloc_host申请得到的,本接口不会报错,但是在实际执行相关业务时会发生不可预知的错误。
- 如果执行Device间的内存复制,需先调用acl.rt.device_can_access_peer接口查询两个Device间是否支持内存复制、调用acl.rt.device_enable_peer_access接口开启两个Device间的内存复制功能,再调用本接口进行内存复制。
Ascend EP 形态下,本接口不支持异步Host内的内存复制功能,若传入的kind为ACL_MEMCPY_HOST_TO_HOST时,接口返回报错ACL_ERROR_RT_FEATURE_NOT_SUPPORT 。
- 若调用本接口传入的kind为ACL_MEMCPY_HOST_TO_DEVICE或ACL_MEMCPY_DEVICE_TO_HOST,并且Host内存不是通过acl.rt.malloc_host申请得到的,本接口不会报错,但是在实际执行相关业务时会发生不可预知的错误。
Ascend EP 形态下,本接口不支持异步Host内的内存复制功能,若传入的kind为ACL_MEMCPY_HOST_TO_HOST时,接口返回报错ACL_ERROR_RT_FEATURE_NOT_SUPPORT 。- Ascend RC形态下,在板端运行应用时,若调用本接口传入的kind为ACL_MEMCPY_HOST_TO_DEVICE、ACL_MEMCPY_DEVICE_TO_HOST或ACL_MEMCPY_HOST_TO_HOST,系统内部会默认使用ACL_MEMCPY_DEVICE_TO_DEVICE执行Device内的内存复制。
- 若调用本接口传入的kind为ACL_MEMCPY_HOST_TO_DEVICE或ACL_MEMCPY_DEVICE_TO_HOST,并且Host内存不是通过acl.rt.malloc_host申请得到的,本接口不会报错,但是在实际执行相关业务时会发生不可预知的错误。
- 如果执行Device间的内存复制,需先调用acl.rt.device_can_access_peer接口查询两个Device间是否支持内存复制、调用acl.rt.device_enable_peer_access接口开启两个Device间的内存复制功能,再调用本接口进行内存复制。
- 本接口不支持异步Host内的内存复制功能,若传入的kind为ACL_MEMCPY_HOST_TO_HOST时,接口返回报错ACL_ERROR_RT_FEATURE_NOT_SUPPORT 。