昇腾社区首页
中文
注册

函数:memcpy_async_with_condition

产品支持情况

产品

是否支持

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件

Atlas 训练系列产品

Atlas 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 200/300/500 推理产品

使用说明

C函数原型

aclError aclrtMemcpyAsyncWithCondition(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)

Python函数

ret = acl.rt.memcpy_async_with_condition(dst, dest_max, src, count, kind, stream)

函数功能

实现内存复制。

本接口在aclrtMemcpyAsync接口基础上扩展了功能,当传入的内存不是通过AscendCL提供的接口申请的,本接口在内存复制完成后才会返回;否则本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,调用本接口后,需调用同步等待接口(例如,acl.rt.synchronize_stream)确保内存复制的任务已执行完成。

输入说明

dst:int,目的内存地址指针。

dest_max:int,目的内存地址的最大内存长度,单位Byte。

src:int,源内存地址指针。

count:int,内存复制的长度,单位Byte。

kind:int,内存复制的类型。
  • 0:ACL_MEMCPY_HOST_TO_HOST,Host内的内存复制。
  • 1:ACL_MEMCPY_HOST_TO_DEVICE, Host到Device的内存复制。
  • 2:ACL_MEMCPY_DEVICE_TO_HOST,Device到Host的内存复制。
  • 3:ACL_MEMCPY_DEVICE_TO_DEVICE,Device内的内存复制。
  • 4:ACL_MEMCPY_DEFAULT, 由系统根据源、目的内存地址自行判断拷贝方向。

stream:int,指定stream。

返回值说明

ret:int,返回0表示成功,返回其他值表示失败。

约束说明

各型号通用:

  • 调用本接口进行内存复制时,源地址和目的地址都必须64字节对齐。

Atlas 200/300/500 推理产品

  • 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内的内存复制。

Atlas 推理系列产品

  • 如果执行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 。

Atlas 200I/500 A2 推理产品

  • 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内的内存复制。

Atlas 训练系列产品Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件Atlas A3 训练系列产品/Atlas A3 推理系列产品

  • 如果执行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 。