发布时间:2026/8/29 7:25:41
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/8/29 20:46:09

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

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

2026/8/30 3:20:30

突破分区维护瓶颈: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/8/30 3:49:10

35B干赢万亿?自我造题与数据闭环是关键

当一个大模型只有 35B 总参数、约 3B 激活参数,却能在数学推理、代码生成等任务上对标万亿参数模型,甚至在某些评测集上反超时,很多人第一反应是模型架构又有了新突破。但在上海交大相关研究中,真正的胜负手并不只是单一架构改进&…

2026/8/30 3:49:10

200万颗GPU订单背后:AI算力稀缺还是过剩?

AI算力到底稀缺还是过剩?这个问题在过去一年里被反复讨论。一边是中小团队在云平台上排队等 GPU,一边是头部云厂商在下单英伟达芯片时毫不手软。最近的市场消息是:亚马逊把英伟达芯片的订单规模扩大到原来的三倍,新增约 200 万颗 …

2026/8/30 3:49:10

选择性上下文偏好优化:让大模型学会辨别上下文可信度

长上下文模型越来越多,但“上下文越长越容易翻车”也是真实存在的工程痛点。今天看一个偏训练方法方向的工作:Selective Context Preference Optimization,选择性上下文偏好优化。它的核心不是继续加长窗口,而是训练模型判断“这段…

2026/8/30 3:49:10

Cursor 完全指南:从安装、中文设置到高效使用与排错

在实际的 AI 辅助编程工作中,Cursor 已经是很多开发者绕不开的工具。它把编辑器、对话补全、代码解释、跨文件修改整合在同一个界面里,适合从零开始配置环境、调整模型、排查使用问题。这篇教程会从安装、登录、模型选择、中文界面设置、日常使用习惯、额…

2026/8/30 3:49:10

Claude Code自动起草反馈功能:从配置到代码评审草稿生成实战

Claude Code 的命令行工作流已经非常成熟,近期更新里加入的自动起草反馈功能,把“AI 分析结论”和“给协作者或系统写结构化反馈”这两件事直接打通了。很多开发者把 Claude Code 当作普通代码生成器在用,其实在代码评审、缺陷回归、需求澄清…

2026/8/30 3:44:10

AI双雄同台!OpenAI与Anthropic将亮相Disrupt 2026

在人工智能技术疾速迭代的今天,被视为全球科技创业风向标的TechCrunch Disrupt大会,又将迎来一个重要时刻。2026年8月28日,大会主办方宣布,全球两大顶尖AI实验室——Anthropic与OpenAI——将共同登上TechCrunch Disrupt 2026的AI舞…

2026/8/30 0:03:35

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/30 0:03:35

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/30 0:03:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/30 0:03:35

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/8/30 0:03:35

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/8/30 0:03:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/8/28 16:16:48

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/28 16:16:50

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/28 11:06:45

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…