aclrtReserveMemAddress
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
功能说明
预留虚拟内存。
本接口需与以下其它接口配合使用,以便申请地址连续的虚拟内存、最大化利用物理内存:
- 申请虚拟内存(aclrtReserveMemAddress接口);
- 申请物理内存(aclrtMallocPhysical接口);
- 将虚拟内存映射到物理内存(aclrtMapMem接口);
- 执行任务(调用具体的任务接口);
- 取消虚拟内存与物理内存的映射(aclrtUnmapMem接口);
- 释放物理内存(aclrtFreePhysical接口);
- 释放虚拟内存(aclrtReleaseMemAddress接口)。
函数原型
aclError aclrtReserveMemAddress(void **virPtr, size_t size, size_t alignment, void *expectPtr, uint64_t flags)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| virPtr | 输出 | “已分配的虚拟内存地址的指针”的指针。 |
| size | 输入 | 虚拟内存大小,单位Byte。 size不能为0。 |
| alignment | 输入 | 虚拟地址对齐值,预留,当前只能设置为0。 |
| expectPtr | 输入 | 指定期望返回的虚拟内存起始地址。 取值说明如下: - nullptr:系统自动分配符合对齐规则的虚拟地址。 - 非nullptr:由用户指定起始地址,地址必须在8T范围内(16T-24T)。用户需确保指定的地址未被占用,且符合对齐规则,否则预留虚拟内存失败,接口返回错误。对齐规则为:若size小于1G,expectPtr需按2的n次方对齐;如果size大于1G,expectPtr需按1G对齐。须知:由用户指定起始地址是试验特性,后续版本可能存在变更,不支持应用于商用产品中。 |
| flags | 输入 | 大页/普通页标志,预留参数,建议固定配置为0。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
约束说明
- 使用本接口预留的虚拟内存,单进程场景下只支持调用aclrtMemcpyAsync接口实现两个Device之间的数据拷贝。