函数:memcpy2d_async

C函数原型

aclError aclrtMemcpy2dAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height,aclrtMemcpyKind kind, aclrtStream stream)

Python函数

ret = acl.rt.memcpy2d_async(dst, dpitch, src, spitch, width, height, kind, stream)

函数功能

实现异步内存复制,主要用于矩阵数据的复制。异步接口。

Atlas 推理系列加速模块产品不支持该接口。

输入说明

dst:目的内存地址指针。

dpitch:目的内存中相邻两列向量的地址距离。

src:源内存地址指针。

spitch:源内存中相邻两列向量的地址距离。

width:待复制的矩阵宽度。

height:待复制的矩阵高度。height最大设置为5*1024*1024=5242880,否则接口返回失败。

kind:内存复制的类型。

ACL_MEMCPY_HOST_TO_HOST = 0 // Host内的内存复制
ACL_MEMCPY_HOST_TO_DEVICE = 1 // Host到Device的内存复制
ACL_MEMCPY_DEVICE_TO_HOST = 2 // Device到Host的内存复制
ACL_MEMCPY_DEVICE_TO_DEVICE = 3 // Device内或Device间的内存复制

stream:指定stream。

返回值说明

ret:int,错误码。

  • 返回0表示成功。
  • 返回其它值表示失败。

约束说明

  • 该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,一定要调用acl.rt.synchronize_stream
  • 当前仅支持ACL_MEMCPY_HOST_TO_DEVICE类型和ACL_MEMCPY_DEVICE_TO_HOST类型的内存复制。
  • Atlas 200/300/500 推理产品Ascend RC形态下,不支持调用本接口。