aclrtMemcpy2d
aclrtDeviceEnablePeerAccess
函数功能
使能当前Device与指定Device之间的内存复制,同步接口。使能内存复制是Device级的。
Atlas 200/500 A2推理产品,不支持该接口。
约束说明
可提前调用aclrtDeviceCanAccessPeer接口显查询当前Device与指定Device之间能否进行内存复制。使能Device间的内存复制功能后,若想关闭该功能,可调用aclrtDeviceDisablePeerAccess接口。
函数原型
aclError aclrtDeviceEnablePeerAccess(int32_t peerDeviceId, uint32_t flags)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| peerDeviceId | 输入 | Device ID,该ID不能与当前Device的ID相同。 用户调用aclrtGetDeviceCount接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)] |
| flags | 输入 | 保留参数,当前必须设置为0。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtDeviceDisablePeerAccess
函数功能
关闭当前Device与指定Device之间的内存复制功能,同步接口。关闭内存复制功能是Device级的。
Atlas 200/500 A2推理产品,不支持该接口。
约束说明
调用aclrtDeviceEnablePeerAccess接口使能当前Device与指定Device之间的内存复制后,可调用aclrtDeviceDisablePeerAccess接口关闭内存复制功能。
函数原型
**aclError**aclrtDeviceDisablePeerAccess(int32_t peerDeviceId)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| peerDeviceId | 输入 | Device ID,该ID不能与当前Device的ID相同。 用户调用aclrtGetDeviceCount接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)] |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtMemcpy2d
函数功能
实现同步内存复制,主要用于矩阵数据的复制。同步接口。
函数原型
aclError aclrtMemcpy2d(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height,aclrtMemcpyKind kind)
约束说明
- 当前仅支持ACL_MEMCPY_HOST_TO_DEVICE类型和ACL_MEMCPY_DEVICE_TO_HOST类型的内存复制。
- Atlas 200/500 A2推理产品,Ascend RC形态下,不支持调用本接口。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dst | 输入 | 目的内存地址指针。 |
| dpitch | 输入 | 目的内存中相邻两列向量的地址距离。 |
| src | 输入 | 源内存地址指针。 |
| spitch | 输入 | 源内存中相邻两列向量的地址距离。 |
| width | 输入 | 待复制的矩阵宽度。 |
| height | 输入 | 待复制的矩阵高度。 |
| kind | 输入 | 内存复制的类型。 text<br>typedef enum aclrtMemcpyKind {<br>ACL_MEMCPY_HOST_TO_HOST, // Host内的内存复制<br>ACL_MEMCPY_HOST_TO_DEVICE, // Host到Device的内存复制<br>ACL_MEMCPY_DEVICE_TO_HOST, // Device到Host的内存复制<br>ACL_MEMCPY_DEVICE_TO_DEVICE, // Device内或Device间的内存复制<br>} aclrtMemcpyKind;<br> |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtMemcpy2dAsync
函数功能
实现异步内存复制,主要用于矩阵数据的复制。异步接口。
约束说明
- 该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,一定要调用aclrtSynchronizeStream接口确保内存复制的任务已执行完成。
- 当前仅支持ACL_MEMCPY_HOST_TO_DEVICE类型和ACL_MEMCPY_DEVICE_TO_HOST类型的内存复制。
- Atlas 200/500 A2推理产品,Ascend RC形态下,不支持调用本接口。
函数原型
aclError aclrtMemcpy2dAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height,aclrtMemcpyKind kind, aclrtStream stream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dst | 输入 | 目的内存地址指针。 |
| dpitch | 输入 | 目的内存中相邻两列向量的地址距离。 |
| src | 输入 | 源内存地址指针。 |
| spitch | 输入 | 源内存中相邻两列向量的地址距离。 |
| width | 输入 | 待复制的矩阵宽度。 |
| height | 输入 | 待复制的矩阵高度。 height最大设置为5*1024*1024=5242880,否则接口返回失败。 |
| kind | 输入 | 内存复制的类型。 text<br>typedef enum aclrtMemcpyKind {<br>ACL_MEMCPY_HOST_TO_HOST, // Host内的内存复制<br>ACL_MEMCPY_HOST_TO_DEVICE, // Host到Device的内存复制<br>ACL_MEMCPY_DEVICE_TO_HOST, // Device到Host的内存复制<br>ACL_MEMCPY_DEVICE_TO_DEVICE, // Device内或Device间的内存复制<br>} aclrtMemcpyKind;<br> |
| stream | 输入 | 指定stream。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtAllocatorRegister
函数功能
调用该接口注册用户提供的Allocator以及Allocator对应的回调函数,用于使用用户提供的Allocator。
Atlas 200/500 A2推理产品,不支持该接口。
约束说明
- 当前仅支持在执行单算子场景下使用本接口,且需在调用单算子执行接口(例如:aclopExecuteV2、aclopCompileAndExecuteV2等)之前调用本接口。
- 调用本接口前,需要先调用aclrtAllocatorCreateDesc创建Allocator描述符,再分别调用aclrtAllocatorSetObjToDesc、aclrtAllocatorSetAllocFuncToDesc、aclrtAllocatorSetGetAddrFromBlockFuncToDesc、aclrtAllocatorSetFreeFuncToDesc设置Allocator对象及回调函数。调用本接口完成注册后,可调用aclrtAllocatorDestroyDesc接口销毁Allocator描述符。
- 对于同一条流,多次调用本接口,以最后一次注册为准。
- 对于不同流,如果用户使用同一个Allocator,不可以多条流并发执行,在执行下一条Stream前,需要对上一Stream做流同步。
- 将Allocator中的内存释放给操作系统前,需要先调用aclrtSynchronizeStream接口执行流同步,确保Stream中的任务已执行完成。
函数原型
aclError aclrtAllocatorRegister(aclrtStream stream, aclrtAllocatorDesc allocatorDesc)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| stream | 输入 | 该Allocator需要注册的Stream。 |
| allocatorDesc | 输入 | Allocator描述符指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
在线提单