aclrtMallocHost
aclrtMemInvalidate
函数功能
将cache中的数据设置成无效。
该版本不需要用户处理cpu与npu之间的cache一致性,无需调用该接口。
函数原型
aclError aclrtMemInvalidate(void *devPtr, size_t size)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| devPtr | 输入 | 需要将其中cache数据置为无效的ddr内存起始地址指针。 |
| size | 输入 | ddr内存大小,单位Byte。 size不能为0。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtFree
函数功能
释放Device上的内存,同步接口。
aclrtFree接口只能释放通过aclrtMalloc接口或aclrtMallocCached接口或aclrtMallocAlign32接口申请的内存。
函数原型
aclError aclrtFree(void *devPtr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| devPtr | 输入 | 待释放内存的指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用示例,参见数据传输。
父主题: 内存管理
aclrtMallocHost
函数功能
应用在Host上运行时,调用该接口申请的是Host内存,由系统保证内存首地址64字节对齐。应用在Device上运行时,调用该接口申请的是Device内存,且Device上的内存按普通页申请,如需首地址64字节对齐,需要用户自行处理对齐。同步接口。
约束说明
-
使用aclrtMallocHost接口申请的内存,需要通过aclrtFreeHost接口释放内存。
-
频繁调用aclrtMallocHost接口申请内存、调用aclrtFreeHost接口释放内存,会损耗性能,建议用户提前做内存预先分配或二次管理,避免频繁申请/释放内存。
-
若用户使用本接口申请大块内存并自行划分、管理内存时,每段内存需同时满足以下需求:
- 内存大小向上对齐成32整数倍+32字节(m=ALIGN_UP[len,32]+32字节);
- 内存起始地址需满足64字节对齐(ALIGN_UP[m,64])。
:::note 说明 len表示某段内存的大小,ALIGN_UP[len,k]表示向上按k字节对齐:((len-1)/k+1)*k。 :::
函数原型
aclError aclrtMallocHost(void **hostPtr, size_t size)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| size | 输入 | 申请内存的大小,单位Byte。 size不能为0。 |
| hostPtr | 输出 | “已分配内存的指针”的指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用示例,参见数据传输。
父主题: 内存管理
aclrtFreeHost
函数功能
释放内存,同步接口。
aclrtFreeHost接口只能释放通过aclrtMallocHost接口申请的内存。
函数原型
aclError aclrtFreeHost(void *hostPtr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| hostPtr | 输入 | 待释放内存的指针。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用示例,参见数据传输。
父主题: 内存管理
aclrtMemset
函数功能
初始化内存,将内存中的内容设置为指定的值,同步接口。
要初始化的内存支持在Host侧或Device侧,系统根据地址判定是Host还是Device。
函数原型
aclError aclrtMemset (void *devPtr, size_t maxCount, int32_t value, size_t count)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| devPtr | 输入 | 内存起始地址的指针。 |
| maxCount | 输入 | 内存的最大长度,单位Byte。 |
| value | 输入 | 设置的值。 |
| count | 输入 | 需要设置为指定值的内存长度,单位Byte。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
aclrtMemsetAsync
函数功能
初始化内存,将内存中的内容设置为指定的值,异步接口。
要初始化的内存支持在Host侧或Device侧,系统根据地址判定是Host还是Device。
约束说明
该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。调用该接口后,一定要调用aclrtSynchronizeStream接口确保内存初始化的任务已执行完成。
函数原型
aclError aclrtMemsetAsync(void *devPtr, size_t maxCount, int32_t value, size_t count, aclrtStream stream)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| devPtr | 输入 | 内存起始地址的指针。 |
| maxCount | 输入 | 内存的最大长度,单位Byte。 |
| value | 输入 | 设置的值。 |
| count | 输入 | 需要设置为指定值的内存长度,单位Byte。 |
| stream | 输入 | 指定stream。 |
返回值说明
返回0表示成功,返回其它值表示失败。
父主题: 内存管理
在线提单