跳到主要内容

函数:memcpy_async

函数:memset_async

C函数原型aclError aclrtMemsetAsync(void *devPtr, size_t maxCount, int32_t value, size_t count, aclrtStream stream)
Python函数ret = acl.rt.memset_async(dev_ptr, max_count, value, count, stream)
函数功能初始化内存,将内存中的内容设置为指定的值,异步接口。 要初始化的内存支持在Host侧或Device侧,系统根据地址判定是Host还是Device。
输入说明dev_ptr:int,内存的起始地址。 max_count:int,内存的最大长度,单位Byte。 value:int,设置的值。 count:int,需要设置为指定值的内存长度,单位Byte。 stream:int,指定Stream的指针地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,必须调用acl.rt.synchronize_stream接口确保内存初始化的任务已执行完成。

父主题: 内存管理

函数:memcpy

C函数原型aclError aclrtMemcpy(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind)
Python函数ret = acl.rt.memcpy(dst, dest_max, src, count, kind)
函数功能实现Host内、Host与Device之间、Device内的同步内存复制。
输入说明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内的内存复制
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明
参考资源接口调用示例,参见数据传输

父主题: 内存管理

函数:memcpy_async

C函数原型aclError aclrtMemcpyAsync(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)
Python函数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,内存复制的类型。
- 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内的内存复制 stream:int,stream ID。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明- 调用本接口进行内存复制时,源地址和目的地址都必须64字节对齐。
- 本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,一定要调用acl.rt.synchronize_stream接口确保内存复制的任务已执行完成。
- 本接口不支持异步Host内的内存复制功能,因此调用本接口选择“ACL_MEMCPY_HOST_TO_HOST”类型进行内存复制时,任务下发成功,但系统内部处理该任务时会返回失败。
参考资源接口调用示例,参见数据传输

父主题: 内存管理

函数:memcpy2d

C函数原型aclError aclrtMemcpy2d(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height,aclrtMemcpyKind kind)
Python函数ret = acl.rt.memcpy2d**(dst, dpitch, src, spitch, width, height, kind)**
函数功能实现同步内存复制,主要用于矩阵数据的复制。同步接口。
输入说明dst:目的内存地址的指针地址。 dpitch:目的内存中相邻两列向量的地址距离。 src:源内存地址的指针地址。 spitch:源内存中相邻两列向量的地址距离。 width:待复制的矩阵宽度。 height:待复制的矩阵高度。 kind:内存复制的类型。
text<br>ACL_MEMCPY_HOST_TO_HOST = 0 // Host内的内存复制<br>ACL_MEMCPY_HOST_TO_DEVICE = 1 // Host到Device的内存复制<br>ACL_MEMCPY_DEVICE_TO_HOST = 2 // Device到Host的内存复制<br>ACL_MEMCPY_DEVICE_TO_DEVICE = 3 // Device内的内存复制<br>
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明- 当前仅支持“ACL_MEMCPY_HOST_TO_DEVICE”类型和“ACL_MEMCPY_DEVICE_TO_HOST”类型的内存复制。
- Atlas 200/500 A2推理产品,Ascend RC形态下,不支持调用本接口。

父主题: 内存管理

函数: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)
函数功能实现异步内存复制,主要用于矩阵数据的复制。异步接口。
输入说明dst:目的内存地址的指针地址。 dpitch:目的内存中相邻两列向量的地址距离。 src:源内存地址的指针地址。 spitch:源内存中相邻两列向量的地址距离。 width:待复制的矩阵宽度。 height:待复制的矩阵高度。height最大可设置为5 * 1024 * 1024 = 5242880,否则接口返回失败。 kind:内存复制的类型。
text<br>ACL_MEMCPY_HOST_TO_HOST = 0 // Host内的内存复制<br>ACL_MEMCPY_HOST_TO_DEVICE = 1 // Host到Device的内存复制<br>ACL_MEMCPY_DEVICE_TO_HOST = 2 // Device到Host的内存复制<br>ACL_MEMCPY_DEVICE_TO_DEVICE = 3 // Device内的内存复制<br>
stream:指定Stream的指针地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明- 该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,一定要调用acl.rt.synchronize_stream
- 当前仅支持“ACL_MEMCPY_HOST_TO_DEVICE”类型和“ACL_MEMCPY_DEVICE_TO_HOST”类型的内存复制。
- Atlas 200/500 A2推理产品,Ascend RC形态下,不支持调用本接口。

父主题: 内存管理

在线提单