aclrtMemcpy
函数功能
实现内存复制。
约束说明
- 本接口会立刻进行内存复制,函数内部不会进行隐式的device同步或流同步。
- Atlas 训练系列产品,如果执行Device间的内存复制,需先调用aclrtDeviceCanAccessPeer接口查询两个Device间是否支持内存复制、调用aclrtDeviceEnablePeerAccess接口使用两个Device间的内存复制,再调用本接口进行内存复制。
- Atlas A2训练系列产品/Atlas 800I A2推理产品,如果执行Device间的内存复制,需先调用aclrtDeviceCanAccessPeer接口查询两个Device间是否支持内存复制、调用aclrtDeviceEnablePeerAccess接口使用两个Device间的内存复制,再调用本接口进行内存复制。
- Atlas 推理系列产品,如果执行Device间的内存复制,需先调用aclrtDeviceCanAccessPeer接口查询两个Device间是否支持内存复制、调用aclrtDeviceEnablePeerAccess接口使用两个Device间的内存复制,再调用本接口进行内存复制。
函数原型
aclError aclrtMemcpy(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
dst |
输入 |
目的内存地址指针。 |
destMax |
输入 |
目的内存地址的最大内存长度,单位Byte。 |
src |
输入 |
源内存地址指针。 |
count |
输入 |
内存复制的长度,单位Byte。 |
kind |
输入 |
内存复制的类型,预留参数,配置枚举值中的值无效,系统内部会根据源内存地址指针、目的内存地址指针判断是否可以将源地址的数据复制到目的地址,如果不可以,则系统会返回报错。 typedef enum aclrtMemcpyKind { ACL_MEMCPY_HOST_TO_HOST, // Host内的内存复制 ACL_MEMCPY_HOST_TO_DEVICE, // Host到Device的内存复制 ACL_MEMCPY_DEVICE_TO_HOST, // Device到Host的内存复制 ACL_MEMCPY_DEVICE_TO_DEVICE, // Device内或Device间的内存复制 ACL_MEMCPY_DEFAULT, // 由系统根据源、目的内存地址自行判断拷贝方向 } aclrtMemcpyKind; |
返回值说明
返回0表示成功,返回其他值表示失败。
父主题: 内存管理