发布时间:2026/7/11 15:13:52
CANN Runtime统一寻址API 11-05 统一寻址【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本章节描述统一/托管内存Unified/Managed Memory接口用于自动迁移的内存分配、预取及属性查询。aclError aclrtMemAllocManaged(void **ptr, uint64_t size, uint32_t flag)申请统一虚拟内存Unified Virtual Memory, UVM通过*ptr返回已申请内存的指针且申请的内存大小会根据用户指定的size向上按2M对齐。aclError aclrtMemManagedAdvise(const void *const ptr, uint64_t size, aclrtMemManagedAdviseType advise, aclrtMemManagedLocation location)管理统一虚拟内存Unified Virtual Memory, UVM的策略属性既支持设置策略属性也支持取消设置。aclError aclrtMemManagedGetAttr(aclrtMemManagedRangeAttribute attribute, const void *ptr, size_t size, void *data, size_t dataSize)查询指定大小的UVM内存的策略属性值。aclError aclrtMemManagedGetAttrs(aclrtMemManagedRangeAttribute *attributes, size_t numAttributes, const void *ptr, size_t size, void **data, size_t *dataSizes)查询指定大小的UVM内存的策略属性值。aclError aclrtMemManagedPrefetchAsync(const void* ptr, size_t size, aclrtMemManagedLocation location, uint32_t flags, aclrtStream stream)管理统一虚拟内存Unified Virtual Memory, UVM的预取。aclError aclrtMemManagedPrefetchBatchAsync(const void** ptrs, size_t* sizes, size_t count, aclrtMemManagedLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, uint64_t flags, aclrtStream stream)管理统一虚拟内存Unified Virtual Memory, UVM的批量预取。aclError aclrtMemP2PMap(void *devPtr, size_t size, int32_t dstDevId, uint64_t flags)本接口用于建立同一进程内两个Device之间的内存页表映射以实现跨Device的内存访问但在进行此操作前需先调用aclrtDeviceEnablePeerAccess接口以开启两个Device间的数据交互。aclError aclrtPointerGetAttributes(const void *ptr, aclrtPtrAttributes *attributes)获取内存属性信息包括内存是位于Host还是Device、页表大小等信息。aclrtMemAllocManagedaclError aclrtMemAllocManaged(void **ptr, uint64_t size, uint32_t flag)产品支持情况Ascend 950PR/Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明申请统一虚拟内存Unified Virtual Memory, UVM通过*ptr返回已申请内存的指针且申请的内存大小会根据用户指定的size向上按2M对齐。使用本接口申请的内存若需释放内存需调用aclrtFree接口。通过本接口申请的内存仅在实际访问时才会建立虚拟内存到物理内存的页表映射关系。如果内存访问发生在Host上则映射Host的物理内存如果内存访问发生在Device上则映射Device的物理内存。后续使用该内存时每当访问内存的对象发生变更例如从Host变更为Device从一个Device变更为另一个Device等在新的访问对象上会触发缺页中断需要将内存数据迁移到新的访问对象上并重新建立虚拟内存到物理内存的页表映射关系此时前一个访问对象上的页表映射关系将失效、物理内存也会释放。若频繁的更换访问对象则会频繁触发缺页中断、频繁迁移内存数据和重新建立页表映射关系影响性能。为了减少这种情况带来的性能开销Runtime还提供了aclrtMemManagedAdvise接口来设置内存管理策略。参数说明参数名输入/输出说明ptr输出“已分配内存的指针”的指针由于Host和Device虚拟地址统一编址该参数不区分申请位置。size输入内存大小单位Byte。size不能为0单个应用进程最大可申请3T UVM类型的虚拟内存。flag输入内存标识。当前flag仅支持设置为ACL_RT_MEM_ATTACH_GLOBAL所对应数值为1。设置为ACL_RT_MEM_ATTACH_GLOBAL后通过本接口申请的内存在Device和Host侧都可以被访问。宏定义如下#define ACL_RT_MEM_ATTACH_GLOBAL (0x01U)返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明本接口分配的内存不会进行对内容进行初始化建议在使用内存前先调用aclrtMemset接口先初始化内存清除内存中的随机数。aclrtMemManagedAdviseaclError aclrtMemManagedAdvise(const void *const ptr, uint64_t size, aclrtMemManagedAdviseType advise, aclrtMemManagedLocation location)产品支持情况Ascend 950PR/Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明管理统一虚拟内存Unified Virtual Memory, UVM的策略属性既支持设置策略属性也支持取消设置。本接口操作的内存必须是通过aclrtMemAllocManaged接口申请的内存设置的策略属性值可使用aclrtMemManagedGetAttr和aclrtMemManagedGetAttrs接口查询。参数说明参数名输入/输出说明ptr输入待设置属性的内存地址地址范围必须在UVM内存范围之内即[0x90000000000ULL, 0x90000000000ULL3T)。size输入内存大小单位Byte要求2MB对齐。取值范围为(0, 3T]。advise输入内存策略属性。类型定义请参见aclrtMemManagedAdviseType。location输入物理内存的位置信息location参数包含id和type两个成员。类型定义请参见aclrtMemManagedLocation。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtMemManagedGetAttraclError aclrtMemManagedGetAttr(aclrtMemManagedRangeAttribute attribute, const void *ptr, size_t size, void *data, size_t dataSize)产品支持情况Ascend 950PR/Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明查询指定大小的UVM内存的策略属性值。本接口操作的内存必须是通过aclrtMemAllocManaged接口分配的。若查询的这段内存范围内的策略属性值不一致则查询结果为无效值。与aclrtMemManagedGetAttrs接口不同本接口仅支持一次查询一个内存策略属性的值。参数说明参数名输入/输出说明attribute输入待查询的属性。类型定义请参见aclrtMemManagedRangeAttribute。ptr输入待查询属性的内存首地址范围必须在UVM内存范围之内即[0x90000000000ULL, 0x90000000000ULL3T)。size输入待查询属性的内存大小单位Byte。取值范围为(0, 3T]。data输出查询结果。dataSize输入存放查询结果的内存大小单位Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtMemManagedGetAttrsaclError aclrtMemManagedGetAttrs(aclrtMemManagedRangeAttribute *attributes, size_t numAttributes, const void *ptr, size_t size, void **data, size_t *dataSizes)产品支持情况Ascend 950PR/Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明查询指定大小的UVM内存的策略属性值。本接口操作的内存必须是通过aclrtMemAllocManaged接口分配的。若查询的这段内存范围内的策略属性值不一致则查询结果为无效值。与aclrtMemManagedGetAttr接口不同本接口支持一次查询多个内存策略属性的值。参数说明参数名输入/输出说明attributes输入待查询的属性数组。类型定义请参见aclrtMemManagedRangeAttribute。numAttributes输入待查询的属性数组大小。ptr输入待查询属性的内存首地址范围必须在UVM内存范围之内即[0x90000000000ULL, 0x90000000000ULL3T)。size输入待查询属性的内存大小单位Byte。取值范围为(0, 3T]。data输出查询结果数组。dataSizes输入存放查询结果数组的内存大小单位Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtMemManagedPrefetchAsyncaclError aclrtMemManagedPrefetchAsync(const void* ptr, size_t size, aclrtMemManagedLocation location, uint32_t flags, aclrtStream stream)产品支持情况Ascend 950PR/Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明管理统一虚拟内存Unified Virtual Memory, UVM的预取。本接口操作的内存必须是通过aclrtMemAllocManaged接口分配的。本接口是异步接口调用接口仅表示任务下发成功不表示任务执行成功调用本接口后需调用同步等待接口例如aclrtSynchronizeStream确保内存预取的任务已执行完成。参数说明参数名输入/输出说明ptr输入待预取的内存地址地址范围必须在UVM内存范围内存即[0x90000000000ULL, 0x90000000000ULL3T)。size输入待预取的内存长度单位Byte要求2MB对齐。取值范围为(0, 3T]。location输入物理内存的位置信息location参数包含id和type两个成员。类型定义请参见aclrtMemManagedLocation。flags输入预留参数。当前固定配置为0。stream输入指定执行内存预取任务的Stream。类型定义请参见aclrtStream。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtMemManagedPrefetchBatchAsyncaclError aclrtMemManagedPrefetchBatchAsync(const void** ptrs, size_t* sizes, size_t count, aclrtMemManagedLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, uint64_t flags, aclrtStream stream)产品支持情况Ascend 950PR/Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明管理统一虚拟内存Unified Virtual Memory, UVM的批量预取。本接口操作的内存必须是通过aclrtMemAllocManaged接口分配的。本接口是异步接口调用接口仅表示任务下发成功不表示任务执行成功调用本接口后需调用同步等待接口例如aclrtSynchronizeStream确保内存预取的任务已执行完成。参数说明参数名输入/输出说明ptrs输入待预取的内存地址数组每个地址范围必须在UVM内存范围内存即[0x90000000000ULL, 0x90000000000ULL3T)。sizes输入内存预取长度数组用于存放每一段要预取的UVM内存长度单位Byte。每段长度要求2MB对齐取值范围为(0, 3T]。count输入ptrs和sizes数组长度。prefetchLocs输入物理内存的位置信息数组每个位置信息都包含id和type两个成员。类型定义请参见aclrtMemManagedLocation。prefetchLocIdxs输入物理内存预取信息索引数组用于指定prefetchLocs数组中的每个物理地址适用的预取范围。对于prefetchLocs[k]指定的物理地址将预取ptrs数组中从第prefetchLocIdxs[k]个下标到第prefetchLocIdxs[k1]-1个下标指向元素的UVM内存地址同时对于prefetchLocs[numPrefetchLocs-1]指定的物理地址将预取ptrs数组中从第prefetchLocs[numPrefetchLocs-1]个下标到第count-1个下标指向元素的UVM内存地址。numPrefetchLocs输入prefetchLocs和prefetchLocIdxs数组的长度。flags输入预留参数。当前固定配置为0。stream输入指定执行内存预取任务的Stream。类型定义请参见aclrtStream。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明将ptrs中指定的数据预取到prefetchLocs中指定的物理内存区域每个预取操作的大小由sizes指定ptrs、sizes这两个数组必须具有count指定的相同长度。在预取批处理操作中prefetchLocs数组中的每个条目可应用与多个预取操作具体通过prefetchLocIdxs数组指定对应物理地址区域需要预取的起始UVM地址索引。prefetchLocs和prefetchLocIdxs这两个数组必须具有numPrefetchLocs指定的相同长度。例如若批处理包含ptrs/sizes列出的10个预取操作其中前6个需要被预取到同一块物理内存区域后4个需要被预取到另一块物理内存区域则numPrefetchLocs为2prefetchLocIdxs为{0,6}prefetchLocs包含两组物理内存的位置信息。注意prefetchLocIdxs的首个条目必须为0且每个条目必须大于前一个条目最后一个条目应小于count。此外numPrefetchLocs必须小于等于count。aclrtMemP2PMapaclError aclrtMemP2PMap(void *devPtr, size_t size, int32_t dstDevId, uint64_t flags)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明本接口用于建立同一进程内两个Device之间的内存页表映射以实现跨Device的内存访问但在进行此操作前需先调用aclrtDeviceEnablePeerAccess接口以开启两个Device间的数据交互。调用本接口建立页表映射后跨Device访问时不会出现内存缺页的问题首次访问内存时性能更优。参数说明参数名输入/输出说明devPtr输入Device内存地址例如调用aclrtMalloc接口申请的Device内存此处指共享内存提供方的内存地址。size输入内存大小单位Byte。dstDevId输入Device ID此处指共享内存使用方的ID。flags输入预留参数当前固定设置为0。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtPointerGetAttributesaclError aclrtPointerGetAttributes(const void *ptr, aclrtPtrAttributes *attributes)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取内存属性信息包括内存是位于Host还是Device、页表大小等信息。参数说明参数名输入/输出说明ptr输入内存地址。此处不允许传入通过aclrtHostRegister接口映射的Device地址也不允许传入通过aclrtHostGetDevicePointer接口获取的Device地址否则会导致未定义行为。attributes输出内存属性信息。类型定义请参见aclrtPtrAttributes。返回值说明返回0表示成功返回其他值表示失败请参见aclError。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/7/11 15:08:52

5分钟实现跨平台数据采集:MediaCrawler开源工具的完整指南

5分钟实现跨平台数据采集:MediaCrawler开源工具的完整指南 【免费下载链接】MediaCrawler 项目地址: https://gitcode.com/GitHub_Trending/mediacr/MediaCrawler 你是否曾为获取小红书、抖音、微博等平台的数据而烦恼?传统的爬虫开发需要逆向工…

2026/7/11 15:08:52

突破分区维护瓶颈:pg_partman 5.x版本升级实战指南

突破分区维护瓶颈:pg_partman 5.x版本升级实战指南 【免费下载链接】pg_partman Partition management extension for PostgreSQL 项目地址: https://gitcode.com/gh_mirrors/pg/pg_partman PostgreSQL数据库管理员在面对海量数据分区管理时,常常…

2026/7/11 19:49:51

GLM-4-9B-Chat-1M 模型在 openEuler 系统上的完整部署文档

🧑 博主简介:CSDN博客专家,「历代文学网」(PC端可以访问:https://lidaiwenxue.com/#/?__c1000)总架构师,首席架构师,也是联合创始人!16年工作经验,精通Java编…

2026/7/11 19:49:50

AI创意生成技术解析:提示词工程与人类主导的创作流程

这次我们来探讨一个在AI领域持续引发讨论的话题:AI的创造力本质。很多人认为AI能够独立产生创意,但实际上,当前的AI系统更多是高效执行指令的工具。这篇文章将从技术角度分析AI创意生成的原理,并通过实际案例展示AI如何依赖人类输…

2026/7/11 19:49:50

如何快速掌握MatAnyone视频抠像工具:面向新手的完整教程

如何快速掌握MatAnyone视频抠像工具:面向新手的完整教程 【免费下载链接】MatAnyone [CVPR 2025] MatAnyone: Stable Video Matting with Consistent Memory Propagation 项目地址: https://gitcode.com/gh_mirrors/ma/MatAnyone MatAnyone是一个革命性的视频…

2026/7/11 19:49:50

如何用Video2X实现免费AI视频超分辨率与帧率提升

如何用Video2X实现免费AI视频超分辨率与帧率提升 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/video2x Video2X是…

2026/7/11 5:30:49

国内大模型选型与企业级落地实战指南

我不能提供任何关于访问境外网络信息的技术方案或变通方法。根据中国法律法规和网络管理要求,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的规定。ChatGPT及其后续版本(如所谓“GPT-5”)是由境外机构研发的大语言模型&#…

2026/7/11 2:43:05

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/7/11 8:37:53

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…