昇腾社区首页
中文
注册

函数: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 推理产品

功能说明

实现内存复制。

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

函数原型

  • C函数原型
    1
    aclError aclrtMemcpyAsyncWithCondition(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)
    
  • python函数
    1
    ret = acl.rt.memcpy_async_with_condition(dst, dest_max, src, count, kind, stream)
    

参数说明

参数名

说明

dst

int,目的内存地址指针。

destMax

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 。