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混合文件被编译为独立的静态库.aHost侧.cpp通过链接该.a完成调用。bisheng命令行编译使用-lib选项将.asc混合文件编译为静态库.a。具体编译命令如下bisheng -lib kernel.asc -o libkernel.a --npu-archdav-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-archdav-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_ARCHITECTURESdav-3510 ..;make -j; # 编译工程 ./demo # 执行样例使用 NPU 仿真模式时添加-DCMAKE_ASC_RUN_MODEsim参数即可。示例如下cmake -DCMAKE_ASC_RUN_MODEsim -DCMAKE_ASC_ARCHITECTURESdav-3510 ..;make -j; # NPU仿真模式注意切换编译模式前需清理 cmake 缓存可在 build 目录下执行rm CMakeCache.txt后重新 cmake。执行结果执行结果如下说明精度对比成功。[Success] Case accuracy is verification passed.创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
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混合文件被编译为独立的静态库.aHost侧.cpp通过链接该.a完成调用。bisheng命令行编译使用-lib选项将.asc混合文件编译为静态库.a。具体编译命令如下bisheng -lib kernel.asc -o libkernel.a --npu-archdav-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-archdav-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_ARCHITECTURESdav-3510 ..;make -j; # 编译工程 ./demo # 执行样例使用 NPU 仿真模式时添加-DCMAKE_ASC_RUN_MODEsim参数即可。示例如下cmake -DCMAKE_ASC_RUN_MODEsim -DCMAKE_ASC_ARCHITECTURESdav-3510 ..;make -j; # NPU仿真模式注意切换编译模式前需清理 cmake 缓存可在 build 目录下执行rm CMakeCache.txt后重新 cmake。执行结果执行结果如下说明精度对比成功。[Success] Case accuracy is verification passed.创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考