news 2026/5/9 16:54:49

CANN/runtime物理内存共享示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/runtime物理内存共享示例

7_physical_memory_sharing_withpid

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

描述

本样例展示了同一个Device、两个进程间的物理内存共享,但在共享内存时启用进程白名单校验。

产品支持情况

本样例支持以下产品:

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

编译运行

环境安装详情以及运行详情请见example目录下的README。

运行步骤如下:

# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录 source ${install_root}/cann/set_env.sh export ASCEND_INSTALL_PATH=${install_root}/cann # ${ascend_name} 替换为昇腾AI处理器的型号,可通过 npu-smi info 查看 Name 字段并去掉空格获得,例如 ascend910b3 export SOC_VERSION=${ascend_name} # 部分样例中涉及调用AscendC算子,需配置AscendC编译器ascendc.cmake所在的路径,如 ${install_root}/cann/aarch64-linux/tikcpp/ascendc_kernel_cmake # 可在CANN包安装路径下查找ascendc_kernel_cmake,例如find ./ -name ascendc_kernel_cmake,并将${cmake_path}替换为ascendc_kernel_cmake所在路径 export ASCENDC_CMAKE_DIR=${cmake_path} # 编译运行 bash run.sh

CANN RUNTIME API

在该Sample中,涉及的关键功能点及其关键接口,如下所示:

  • 初始化
    • 调用aclInit接口初始化AscendCL配置。
    • 调用aclFinalize接口实现AscendCL去初始化。
  • Device管理
    • 调用aclrtSetDevice接口指定用于运算的Device。
    • 调用aclrtResetDeviceForce接口强制复位当前运算的Device,回收Device上的资源。
  • Stream管理
    • 调用aclrtCreateStream接口创建Stream。
    • 调用aclrtDestroyStreamForce接口强制销毁Stream,丢弃所有任务。
  • 内存管理
    • 调用aclrtMemGetAllocationGranularity查询内存申请粒度。
    • 调用aclrtMallocPhysical申请Device物理内存,并返回一个物理内存handle。
    • 调用aclrtReserveMemAddress预留虚拟内存。
    • 调用aclrtMapMem将虚拟内存映射到物理内存。
    • 调用aclrtMemSetAccess设置虚拟内存的访问权限。
    • 调用aclrtMemExportToShareableHandle将通过aclrtMallocPhysical接口获取到的物理内存handle导出。
    • 调用aclrtMemSetPidToShareableHandle设置共享内存的进程白名单。
    • 调用aclrtUnmapMem取消虚拟内存与物理内存之间的映射关系。
    • 调用aclrtReleaseMemAddress释放通过aclrtReserveMemAddress接口申请的虚拟内存。
    • 调用aclrtFreePhysical释放通过aclrtMallocPhysical接口申请的物理内存。
    • 调用aclrtDeviceGetBareTgid获取当前进程的进程ID。
    • 调用aclrtMemImportFromShareableHandle在本进程中获取shareableHandle里的信息,并返回本进程中的handle。
    • 调用aclrtMallocHost接口申请Host上的内存。
    • 调用aclrtFreeHost接口释放Host上的内存。
  • 数据传输
    • 调用aclrtMemcpy接口通过内存复制的方式实现数据传输。

已知issue

暂无

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 16:52:35

高效开发利器:Trae 插件 PyCharm 安装与配置实战指南

在快速迭代的后端开发中,效率至关重要。传统的接口调试方式,往往需要依赖 Postman 或 curl 等工具,频繁切换窗口,效率低下。而 Trae 插件作为一款轻量级的 HTTP 客户端,可以直接集成到 PyCharm IDE 中,实现…

作者头像 李华
网站建设 2026/5/9 16:49:32

CANN/transformer仓experimental路径MIX算子开发贡献

transformer仓experimental路径MIX算子开发贡献 【免费下载链接】cann-learning-hub CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。 项目地址: https://gitcode.com/cann/cann-lea…

作者头像 李华
网站建设 2026/5/9 16:49:10

前端安全:安全审计实战指南

前端安全:安全审计实战指南 前言 安全审计是发现和修复安全漏洞的关键!如果你的网站从来没有做过安全审计,那你的网站可能存在很多安全隐患。今天我就来给大家讲讲如何进行前端安全审计。 为什么需要安全审计 发现漏洞:找出潜…

作者头像 李华
网站建设 2026/5/9 16:43:35

Shell脚本AI助手:终端集成Ollama与OpenAI的智能运维实践

1. 项目概述:一个纯粹的Shell脚本智能终端助手 在终端里直接和AI对话,让它帮你写命令、分析日志、解答技术问题,甚至管理本地的大语言模型——听起来是不是很酷?这就是 shell-pilot 带给我的核心体验。作为一个常年泡在终端里的…

作者头像 李华
网站建设 2026/5/9 16:38:31

CANN算子平台贡献指南

了解行为准则 【免费下载链接】ascend-boost-comm 算子公共平台,南向对接不同组织开发的算子库,北向支撑不同加速库应用,实现M x N算子能力复用 项目地址: https://gitcode.com/cann/ascend-boost-comm Ascend Boost Comm属于CANN开放…

作者头像 李华
网站建设 2026/5/9 16:37:34

构建AI模型开放框架:从可复现性到社区协作的完整指南

1. 项目概述:为什么我们需要一个“模型开放框架”?最近几年,AI模型的发展速度让人眼花缭乱,从能写诗作画的文生图模型,到能流畅对话、编写代码的大语言模型,几乎每个月都有新的“明星”诞生。作为一名在AI领…

作者头像 李华