news 2026/7/15 15:05:53

CANN/asc-devkit静态库编译示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit静态库编译示例

Static Library Compile 样例

概述

本样例基于Gather算子,演示了将Host + Device混合.asc文件(含Kernel定义与<<<>>>内核调用)编译为静态库(.a),再由Host侧.cpp链接调用的静态库编译流程。其中.asc文件的<<<>>>调用函数通过extern暴露给纯Host侧的.cpp。代码结构与调用关系如图 1 所示:

图1:代码结构与调用关系

支持的产品

  • Ascend 950PR/Ascend 950DT

支持的CANN软件版本

  • > CANN 9.0.0

目录结构介绍

├── 03_static_library_compile │ ├── CMakeLists.txt // 编译工程文件 │ ├── gather_kernel.asc // 混合文件(含Kernel定义、<<<>>>内核调用) │ ├── main.cpp // 纯Host侧代码(通过extern调用.asc暴露的函数) │ └── figures // README中的图片资源

算子描述

gather算子实现了从长度为100000的一维输入向量中获取指定索引的12288个数据的功能。

静态库编译介绍

通过静态库编译,.asc混合文件被编译为独立的静态库(.a),Host侧.cpp通过链接该.a完成调用。

bisheng命令行编译

使用-lib选项将.asc混合文件编译为静态库(.a)。具体编译命令如下:

bisheng -lib kernel.asc -o libkernel.a --npu-arch=dav-3510 --enable-simt

其中,--npu-arch为编译时指定的 AI 处理器架构,本样例仅支持dav-3510,各产品型号对应的架构版本号请通过对应关系表进行查询。--enable-simt用于指定SIMT方式编译。

更多 bisheng 编译选项及用法说明,请参考AI-Core算子编译基本用法。

CMake方式编译

在 CMake 工程中,使用add_library配置STATIC关键字即可将.asc文件编译为静态库:

# 将.asc文件编译为静态库 add_library(kernel STATIC kernel.asc)

编译运行

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

  • 配置环境变量 请根据当前环境上 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
  • 样例执行

    • 命令行方式

      bisheng -lib gather_kernel.asc -o libgather_kernel.a --npu-arch=dav-3510 --enable-simt # 编译 .asc 为静态库 bisheng main.cpp -o demo -L./ -L${ASCEND_HOME_PATH}/lib64 -I${ASCEND_HOME_PATH}/include \ -lgather_kernel -lascendcl -lruntime -lstdc++ # 链接生成可执行文件 ./demo # 执行样例
    • CMake方式

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

      使用 NPU 仿真模式时,添加-DCMAKE_ASC_RUN_MODE=sim参数即可。示例如下:

      cmake -DCMAKE_ASC_RUN_MODE=sim -DCMAKE_ASC_ARCHITECTURES=dav-3510 ..;make -j; # NPU仿真模式

      注意:切换编译模式前需清理 cmake 缓存,可在 build 目录下执行rm CMakeCache.txt后重新 cmake。

  • 执行结果

    执行结果如下,说明精度对比成功。

    [Success] Case accuracy is verification passed.

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

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

025、空间降噪与时域降噪:噪声抑制与细节保留的平衡艺术

025、空间降噪与时域降噪&#xff1a;噪声抑制与细节保留的平衡艺术去年在调试一款车载环视系统时&#xff0c;遇到一个让人抓狂的问题&#xff1a;夜间停车场场景下&#xff0c;图像上的噪点像雪花一样闪烁&#xff0c;但一旦开启强降噪&#xff0c;停车位的白色标线边缘就开始…

作者头像 李华
网站建设 2026/7/15 15:04:28

基于GPU加速的实时视频处理框架:OBS高级蒙版插件技术深度解析

基于GPU加速的实时视频处理框架&#xff1a;OBS高级蒙版插件技术深度解析 【免费下载链接】obs-advanced-masks Advanced Masking Plugin for OBS 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-masks 在专业直播和视频制作领域&#xff0c;传统的静态遮罩…

作者头像 李华
网站建设 2026/7/15 15:04:09

android-性能-分析

以下是Android性能分析的完整指南&#xff0c;涵盖核心工具、优化方向及实操方法&#xff0c;适用于2025年开发环境&#xff1a; ⚙️ 一、性能分析工具分类 1. 官方工具链 工具用途关键能力版本适配Android Profiler实时监测CPU/内存/网络/能耗火焰图分析、内存泄漏检测&…

作者头像 李华
网站建设 2026/7/15 15:03:59

macOS窗口置顶终极指南:用Topit让多任务效率提升300%

macOS窗口置顶终极指南&#xff1a;用Topit让多任务效率提升300% 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否曾在macOS上同时处理多个任务时&#xf…

作者头像 李华
网站建设 2026/7/15 15:02:45

如何构建专业级可视化H5页面编辑器:开源项目h5maker技术解析

如何构建专业级可视化H5页面编辑器&#xff1a;开源项目h5maker技术解析 【免费下载链接】h5maker h5编辑器类似maka、易企秀 账号/密码&#xff1a;admin 项目地址: https://gitcode.com/gh_mirrors/h5/h5maker h5maker是一款基于Vue.js和Node.js构建的开源可视化H5页面…

作者头像 李华