尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

asc-devkit Aclrtc运行时编译示例

asc-devkit Aclrtc运行时编译示例
📅 发布时间:2026/7/15 15:25:00

Aclrtc运行时编译 + printf打印样例

概述

本样例展示了如何使用Aclrtc(运行时编译)接口,在 Host 侧运行时编译核函数源码并执行,核函数通过printf打印输出结果。

支持的产品

  • Ascend 950PR/Ascend 950DT
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品

目录结构介绍

├── rtc_hello_world │ ├── CMakeLists.txt // 编译工程文件 │ ├── rtc_hello_world.cpp // Host 侧代码(含 RTC 核函数源码字符串)

样例描述

  • 样例实现:
    • Kernel实现
      核函数源码以字符串形式嵌入 Host 代码中,通过printf打印输出结果。

    • 调用实现
      调用 aclrtc 接口系列在运行时编译并执行核函数,完整链路如下:

      • 编译阶段

        1. aclrtcCreateProg— 创建编译程序对象,传入核函数源码字符串
        2. aclrtcAddNameExpr— 注册需要导出的核函数名(含模板参数,如Kernel::add_custom<float>)
        3. aclrtcCompileProg— 执行运行时编译,通过 options 传入--npu-arch指定 NPU 架构
        4. aclrtcGetBinDataSize/aclrtcGetBinData— 获取编译产物的二进制大小及数据(device ELF)
        5. aclrtcGetLoweredName— 获取核函数编译后的 mangled name,用于后续查找
      • 加载阶段

        1. aclrtBinaryLoadFromData— 将编译产物的二进制加载到设备(通过ACL_RT_BINARY_MAGIC_ELF_AICORE标记为 AI Core 可执行)
        2. aclrtBinaryGetFunction— 从加载的二进制中获取核函数句柄(funcHandle)
      • 参数配置阶段

        1. aclrtKernelArgsInit— 初始化核函数参数句柄
        2. aclrtKernelArgsAppend— 逐个追加参数(核函数为__gm__ uint8_t* x, __gm__ uint8_t* y, __gm__ uint8_t* z,对应传入三个 Device 内存指针)
        3. aclrtKernelArgsFinalize— 完成参数配置
      • 执行阶段

        1. aclrtLaunchKernelWithConfig— 启动核函数,指定 block 数量、stream 等执行配置
      • 资源清理

        1. aclrtcDestroyProg— 销毁编译程序对象

      数据生成与精度校验均在 Host 侧 C++ 内完成,不依赖外部脚本。

编译运行

在本样例根目录下执行如下步骤,编译并执行样例。

  • 配置环境变量
    请根据当前环境上 CANN 开发套件包的安装方式,选择对应配置环境变量的命令。

    • 默认路径,root 用户安装 CANN 软件包

      source /usr/local/Ascend/cann/set_env.sh
    • 默认路径,非 root 用户安装 CANN 软件包

      source $HOME/Ascend/cann/set_env.sh
    • 指定路径 install_path,安装 CANN 软件包

      source ${install_path}/cann/set_env.sh
  • 样例执行

    mkdir -p build && cd build; # 创建并进入build目录 cmake -DCMAKE_ASC_ARCHITECTURES=dav-2201 ..;make -j; # 编译工程 ./demo # 执行编译生成的可执行程序,执行样例

    [!WARNING] 注意 Aclrtc 仅支持 NPU 运行模式,不支持 cpu 调试或 sim 仿真模式。

  • 执行结果
    执行结果如下,说明执行成功。

    [AIV Block 0/8] Hello World!!! [AIV Block 1/8] Hello World!!! [AIV Block 2/8] Hello World!!! [AIV Block 3/8] Hello World!!! [AIV Block 4/8] Hello World!!! [AIV Block 5/8] Hello World!!! [AIV Block 6/8] Hello World!!! [AIV Block 7/8] Hello World!!!

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

相关新闻

  • 企业微信重拳出击:当“拉群“变成“拉锯战“,私域运营的下半场怎么打?
  • 2026 济南天桥手表回收,易奢福:假表不收,真表不压价,就这么横 - ys韩
  • CANN/asc-devkit TensorDesc简介

最新新闻

  • NGA论坛优化摸鱼插件:告别杂乱,开启高效浏览新体验
  • 2026年AI标书工具推荐:三大场景实测,谁才是投标人的效率王炸? - 品牌日记
  • Spring、SpringMVC、SpringBoot核心知识点(持续更新中)
  • openEuler hygon-kernel编译与部署教程:从源码到生产环境的完整指南
  • 2026 玉环海岛黄金变现全实测!陆海全域免费上门,30 年老店避坑完整指南 - 得天独厚
  • 如何用顶级TUI工具重构你的终端工作流:终极指南与实战案例

日新闻

  • 告别启动盘残留:用Diskpart彻底清除U盘EFI分区与恢复完整空间
  • 2026 年宜春诚信的塑料缠绕膜厂家哪个好,缠绕膜背后的秘密:你不知道的成本陷阱 - 领域鉴赏官
  • Arch ECS 入门指南:10分钟掌握C#高性能数据驱动架构

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号