aclrtAllocatorRegister
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表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtAllocatorUnregister
函数功能
取消注册用户提供的Allocator以及Allocator对应的回调函数,用于取消使用用户提供的Allocator。
Atlas 200/500 A2推理产品,不支持该接口。
约束说明
- 用户销毁Allocator前,调用本接口取消注册。
- 待取消注册的Stream不存在,或多次调用本接口取消注册,本接口内部不做任何操作,返回成功。
函数原型
aclError aclrtAllocatorUnregister(****aclrtStream stream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| stream | 输入 | 该Allocator需要注册的stream。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtReserveMemAddress
函数功能
预留虚拟地址空间。同步接口。
本接口需与以下其它接口配合使用,以便申请连续的虚拟内存地址、最大化利用物理内存地址的目的:
- 申请虚拟地址空间(aclrtReserveMemAddress接口);
- 申请物理内存(aclrtMallocPhysical接口);
- 将虚拟地址映射到物理内存(aclrtMapMem接口);
- 执行任务(调用具体的任务接口);
- 取消虚拟地址与物理内存的映射(aclrtUnmapMem接口);
- 释放物理内存(aclrtFreePhysical接口);
- 释放虚拟地址空间(aclrtReleaseMemAddress接口)。
约束说明
Ascend RC形态不支持调用本接口。
函数原型
aclError aclrtReserveMemAddress(void **virPtr, size_t size, size_t alignment, void *expectPtr, uint64_t flags)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| virPtr | 输出 | “已分配的虚拟地址空间的指针”的指针。 |
| size | 输入 | 虚拟地址空间大小,单位Byte。 size不能为0。 |
| alignment | 输入 | 虚拟地址对齐值,预留,当前只能设置为0。 |
| expectPtr | 输入 | 指定期望返回的虚拟地址空间起始地址.,预留,当前只能传nullptr。 |
| flags | 输入 | 大页/普通页标志,取值如下: - 0:普通页 - 1:大页 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtReleaseMemAddress
函数功能
释放通过aclrtReserveMemAddress接口申请的虚拟地址空间。
本接口需与以下其它接口配合使用,以便申请连续的虚拟内存地址、最大化利用物理内存地址的目的:
- 申请虚拟地址空间(aclrtReserveMemAddress接口);
- 申请物理内存(aclrtMallocPhysical接口);
- 将虚拟地址映射到物理内存(aclrtMapMem接口);
- 执行任务(调用具体的任务接口);
- 取消虚拟地址与物理内存的映射(aclrtUnmapMem接口);
- 释放物理内存(aclrtFreePhysical接口);
- 释放虚拟地址空间(aclrtReleaseMemAddress接口)。
约束说明
- Ascend RC形态不支持调用本接口。
- 若该虚拟地址与物理地址存在映射关系,则释放虚拟地址空间前,需调用aclrtUnmapMem接口取消该虚拟地址与物理地址的映射。
函数原型
aclError aclrtReleaseMemAddress(void *virPtr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| virPtr | 输入 | 待释放的虚拟地址指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
在线提单