cann/runtime主机内存管理
11-02 主机内存管理【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本章节描述主机Host内存的分配、释放、注册及指针获取接口。aclError aclrtMallocHost(void **hostPtr, size_t size)申请Host内存该内存是锁页内存由系统保证内存首地址64字节对齐。aclError aclrtMallocHostWithCfg(void **ptr, uint64_t size, aclrtMallocConfig *cfg)申请Host内存该内存是锁页内存由系统保证内存首地址64字节对齐。aclError aclrtFreeHost(void *hostPtr)释放通过aclrtMallocHost接口或aclrtMallocHostWithCfg接口申请的Host内存。aclError aclrtFreeHostWithDevSync(void *hostPtr)释放通过aclrtMallocHost接口或aclrtMallocHostWithCfg接口申请的Host内存。aclError aclrtHostRegister(void *ptr, uint64_t size, aclrtHostRegisterType type, void **devPtr)将Host内存映射注册为Device可访问的内存地址并获取映射后的Device内存地址。映射后的Device内存地址不能用于内存操作例如内存复制。aclError aclrtHostRegisterV2(void *ptr, uint64_t size, uint32_t flag)注册Host内存地址。aclError aclrtHostGetDevicePointer(void *pHost, void **pDevice, uint32_t flag)获取由aclrtHostRegister或aclrtHostRegisterV2接口注册映射的Device内存地址。映射后的Device内存地址不能用于内存操作例如内存复制。aclError aclrtHostMemMapCapabilities(uint32_t deviceId, aclrtHacType hacType, aclrtHostMemMapCapability *capabilities)查询指定的硬件驱动加速器是否支持访问通过aclrtHostRegister接口注册的内存。aclError aclrtHostUnregister(void *ptr)取消注册Host内存。aclrtMallocHostaclError aclrtMallocHost(void **hostPtr, size_t size)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明申请Host内存该内存是锁页内存由系统保证内存首地址64字节对齐。通过本接口申请的内存需要通过aclrtFreeHost接口或aclrtFreeHostWithDevSync接口释放内存。参数说明参数名输入/输出说明hostPtr输出“已分配内存的指针”的指针。size输入申请内存的大小单位Byte。size不能为0。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明本接口分配的内存不会进行对内容进行初始化建议在使用内存前先调用aclrtMemset接口先初始化内存清除内存中的随机数。本接口内部不会进行隐式的device同步或流同步。如果申请内存成功或申请内存失败会立刻返回结果。使用aclrtMallocHost接口分配过多的锁页内存将导致操作系统用于分页的物理内存变少从而降低系统整体的性能。频繁调用aclrtMallocHost接口申请内存、调用aclrtFreeHost接口释放内存会损耗性能建议用户提前做内存预先分配或二次管理避免频繁申请/释放内存。针对Ascend RC形态、Control CPU开放形态Host与Device是合一的所以申请Host内存也等同于申请Device内存。此外申请内存时按普通页申请。如果需要64字节对齐的首地址用户需自行处理对齐问题。!-- npu310p,310b id9 --针对Ascend RC形态、Control CPU开放形态若用户使用本接口申请大块内存并自行划分、管理内存时每段内存需同时满足以下需求其中len表示某段内存的大小ALIGN_UP[len,k]表示向上按k字节对齐((len-1)/k1)*k内存大小向上对齐成32整数倍32字节mALIGN_UP[len,32]32字节内存起始地址需满足64字节对齐ALIGN_UP[m,64]。aclrtMallocHostWithCfgaclError aclrtMallocHostWithCfg(void **ptr, uint64_t size, aclrtMallocConfig *cfg)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明申请Host内存该内存是锁页内存由系统保证内存首地址64字节对齐。与aclrtMallocHost接口相比本接口在申请内存时还可以指定内存相关的配置信息。通过本接口申请的内存需要通过aclrtFreeHost接口或aclrtFreeHostWithDevSync接口释放内存。针对Ascend RC形态、Control CPU开放形态Host与Device是合一的所以申请Host内存也等同于申请Device内存。此外申请内存时按普通页申请。如果需要64字节对齐的首地址用户需自行处理对齐问题。参数说明参数名输入/输出说明ptr输出“已分配内存的指针”的指针。size输入申请内存的大小单位Byte。size不能为0。cfg输入内存配置信息。类型定义请参见aclrtMallocConfig。不指定配置时此处可传NULL。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtFreeHostaclError aclrtFreeHost(void *hostPtr)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明释放通过aclrtMallocHost接口或aclrtMallocHostWithCfg接口申请的Host内存。本接口会立刻释放传入的内存接口内部不会进行隐式的Device同步或流同步、也不会等待使用该内存的任务完成。用户需确保在调用本接口后不再访问该内存指针。参数说明参数名输入/输出说明hostPtr输入待释放内存的指针。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtFreeHostWithDevSyncaclError aclrtFreeHostWithDevSync(void *hostPtr)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明释放通过aclrtMallocHost接口或aclrtMallocHostWithCfg接口申请的Host内存。本接口内部会进行隐式的Device同步并等待使用该内存的任务完成。参数说明参数名输入/输出说明hostPtr输入待释放内存的指针。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtHostRegisteraclError aclrtHostRegister(void *ptr, uint64_t size, aclrtHostRegisterType type, void **devPtr)产品支持情况Ascend 950PR支持Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明将Host内存映射注册为Device可访问的内存地址并获取映射后的Device内存地址该地址仅支持在Device上访问例如作为核函数的参数供Device的AI Core访问。若涉及Host侧的内存处理需使用原始Host内存地址。取消注册Host内存需调用aclrtHostUnregister接口。参数说明参数名输入/输出说明ptr输入Host内存地址。Host内存地址需4K页对齐。当os内核版本为5.10或更低时使用非锁页内存会导致异常因此必须调用aclrtMallocHost接口来申请Host锁页内存。当os内核版本为5.10以上时支持使用非锁页的Host内存因此既支持调用aclrtMallocHost接口申请Host锁页内存也支持使用malloc接口申请Host非锁页内存。size输入内存大小单位Byte。type输入内存注册类型。类型定义请参见aclrtHostRegisterType。devPtr输出Host内存映射成的Device可访问的内存地址。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtHostRegisterV2aclError aclrtHostRegisterV2(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不支持功能说明注册Host内存地址。取消注册需调用aclrtHostUnregister接口。参数说明参数名输入/输出说明ptr输入Host内存地址。Host内存地址需4K页对齐。当os内核版本为5.10或更低时使用非锁页内存会导致异常因此必须调用aclrtMallocHost接口来申请Host锁页内存。当os内核版本为5.10以上时支持使用非锁页的Host内存因此既支持调用aclrtMallocHost接口申请Host锁页内存也支持使用malloc接口申请Host非锁页内存。size输入内存大小单位Byte。flag输入内存注册类型。取值为如下宏支持配置单个宏也支持配置多个宏位或例如ACL_HOST_REG_MAPPED | ACL_HOST_REG_PINNED- ACL_HOST_REG_MAPPED将Host内存映射注册为Device可访问的内存地址再配合调用aclrtHostGetDevicePointer接口获取映射后的Device内存地址。- ACL_HOST_REG_IOMEMORY将Host上第三方PCIe设备的IO space(寄存器、缓存)映射注册为Device可访问包括读写。预留选项当前不支持。- ACL_HOST_REG_READONLYHost内存映射注册为Device只读。预留选项当前不支持。- ACL_HOST_REG_PINNED将Host非锁页内存注册为锁页内存。Host非锁页内存可通过C/C标准库函数如malloc、calloc、new或默认的mmap系统调用等方式申请。宏定义如下#define ACL_HOST_REG_MAPPED 0x2UL#define ACL_HOST_REG_IOMEMORY 0x4UL#define ACL_HOST_REG_READONLY 0x8UL#define ACL_HOST_REG_PINNED 0X10000000UL返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtHostGetDevicePointeraclError aclrtHostGetDevicePointer(void *pHost, void **pDevice, uint32_t flag)产品支持情况Ascend 950PR支持Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品不支持IPV350不支持功能说明获取由aclrtHostRegister或aclrtHostRegisterV2接口注册映射的Device内存地址。映射后的Device内存地址不能用于内存操作例如内存复制。参数说明参数名输入/输出说明pHost输入通过aclrtHostRegister或aclrtHostRegisterV2接口注册映射的Host内存地址。pDevice输出Host内存映射成的Device内存地址。flag输入预留参数当前固定配置为0。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtHostMemMapCapabilitiesaclError aclrtHostMemMapCapabilities(uint32_t deviceId, aclrtHacType hacType, aclrtHostMemMapCapability *capabilities)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明查询指定的硬件驱动加速器是否支持访问通过aclrtHostRegister接口注册的内存。参数说明参数名输入/输出说明deviceId输入Device ID。用户调用aclrtGetDeviceCount接口获取可用的Device数量后这个Device ID的取值范围[0, (可用的Device数量-1)]hacType输入HACHardware Accelerator Controller硬件加速控制器类型。类型定义请参见aclrtHacType。capabilities输出是否支持访问通过aclrtHostRegister接口注册的内存。类型定义请参见aclrtHostMemMapCapability。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtHostUnregisteraclError aclrtHostUnregister(void *ptr)产品支持情况Ascend 950PR支持Ascend 950DT不支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品不支持Atlas 训练系列产品支持IPV350不支持功能说明取消注册Host内存。本接口与aclrtHostRegister或aclrtHostRegisterV2接口成对使用。参数说明参数名输入/输出说明ptr输入Host侧内存地址。返回值说明返回0表示成功返回其他值表示失败请参见aclError。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

《LeetCode 152 乘积最大子数组 || LeetCode 413 等差数列划分》

《LeetCode 152 乘积最大子数组 || LeetCode 413 等差数列划分》

一、题目二、做题思路2.1 状态表示(核心基础)本题要求计算数组中乘积最大的连续子数组。由于负数相乘可能反转大小关系,仅记录最大乘积不够,还需记录最小乘积。因此定义两个状态:f[i] 表示以 nums[i] 结尾的子数组的最…

2026/7/11 14:59:59阅读更多 →
终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验?

终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验?

终极指南:15个WuWa-Mod模组如何彻底改变你的《鸣潮》游戏体验? 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为《鸣潮》游戏中的重复刷怪、技能冷却和资源收集而烦恼吗&a…

2026/7/11 14:59:59阅读更多 →
Windows 10用户终于等到了:微软原生容器方案WSL Containers实测与部署详解

Windows 10用户终于等到了:微软原生容器方案WSL Containers实测与部署详解

年初微软悄然推出了一项让不少开发者眼前一亮的新能力——WSL Containers。这个名字听起来像是WSL的某个插件,实际上它是一个完全内嵌在Windows Subsystem for Linux里的原生容器平台。换句话说,你的Windows系统本身就能直接跑容器,不再需要额…

2026/7/11 14:59:59阅读更多 →
革命性图像文本模型diffusiongemma-26B-A4B-it-OptiQ-4bit:如何在Apple Silicon上实现本地高效部署

革命性图像文本模型diffusiongemma-26B-A4B-it-OptiQ-4bit:如何在Apple Silicon上实现本地高效部署

革命性图像文本模型diffusiongemma-26B-A4B-it-OptiQ-4bit:如何在Apple Silicon上实现本地高效部署 【免费下载链接】diffusiongemma-26B-A4B-it-OptiQ-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit …

2026/7/11 16:00:09阅读更多 →
AI时代的程序员修养:AI 会写代码,但你要知道程序是什么

AI时代的程序员修养:AI 会写代码,但你要知道程序是什么

《AI时代的程序员修养》这个专栏,不打算把重点放在“哪个 AI 工具更会补全代码”。工具会变,模型会变,但程序运行的基本规律没有变。写代码的人还是得看得懂系统怎么拆、问题怎么描述、生成出来的东西该怎么验收。 本文是第一篇,先从一句老话讲起:程序 = 算法 + 数据结构…

2026/7/11 16:00:09阅读更多 →
电商卖家都在用的ai洗稿技巧:3分钟生成高转化产品描述

电商卖家都在用的ai洗稿技巧:3分钟生成高转化产品描述

电商卖家都在用的ai洗稿技巧:3分钟生成高转化产品描述 大部分电商卖家的产品其实不差,差的是那张"嘴"。 你去看同行卖得好的链接,产品未必比你好,但描述写得能让人"隔着屏幕就想下单"。反观自己的链接&#x…

2026/7/11 16:00:09阅读更多 →
TLA2518与PIC18LF24J50的硬件协同设计与优化

TLA2518与PIC18LF24J50的硬件协同设计与优化

1. TLA2518与PIC18LF24J50的硬件协同设计在工业测量和嵌入式系统中,模拟信号到数字信号的可靠转换是数据采集的关键环节。TLA2518作为TI推出的12位精度SAR型ADC芯片,与Microchip的PIC18LF24J50单片机组合,能够构建高性价比的混合信号处理系统…

2026/7/11 16:00:09阅读更多 →
如何在5分钟内轻松下载B站大会员4K视频和充电专属内容?

如何在5分钟内轻松下载B站大会员4K视频和充电专属内容?

如何在5分钟内轻松下载B站大会员4K视频和充电专属内容? 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否曾遇到过这样…

2026/7/11 16:00:09阅读更多 →
Claude账号异常处理与合规使用指南

Claude账号异常处理与合规使用指南

我不能按照该标题生成相关内容。原因如下:标题中“解封Claude账号”这一表述,隐含了对某类平台账号状态进行非正常干预的操作意图。Claude是由Anthropic公司运营的AI服务,其账号管理规则(如封禁、限制、恢复)完全由官方…

2026/7/11 15:55:09阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/11 15:18:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/11 15:11:32阅读更多 →
Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

Premiere Pro 2025安装失败原因与AGSIS验证绕过指南

1. 为什么2025版PR安装比以往更“磨人”?——从弹窗警告到路径陷阱的真实处境 Premiere Pro 2025版不是简单的一次版本迭代,它是一道分水岭。我从去年底开始帮影视工作室、高校剪辑实验室和自由职业者部署2025环境,累计处理了137台设备&#…

2026/7/11 0:03:43阅读更多 →
5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效

5款实用macOS系统优化工具:让你的Mac运行更流畅更高效 【免费下载链接】open-source-mac-os-apps 🚀 Awesome list of open source applications for macOS. https://t.me/s/opensourcemacosapps 项目地址: https://gitcode.com/gh_mirrors/op/open-so…

2026/7/11 0:03:43阅读更多 →
5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想要让AI图像生成真正听从你的指挥吗&…

2026/7/11 0:03:43阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/10 13:39:09阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/10 22:20:33阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/10 17:29:22阅读更多 →