Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
当前 SIMT 样例及 SIMT/SIMD 混合样例的 CMake 配置中,普遍通过 target_compile_options 手动传入 --npu-arch 和 --enable-simt。不同样例的配置位置和写法不一致,存在编译参数重复、配置分散、后续维护成本高等问题。
同时,Ascend C 的 CMake 工具链已经支持通过全局变量 CMAKE_ASC_ARCHITECTURES 和 CMAKE_ASC_ENABLE_SIMT 配置目标架构及 SIMT 编译模式,并自动将对应参数注入 ASC 编译命令。原有样例未统一使用该机制,用户在修改架构或新增样例时需要重复调整目标级编译选项。
本需求对相关 SIMT 样例的 CMake 配置进行统一,将架构和 SIMT 编译开关前置到 find_package(ASC) 之前配置,并删除重复的目标级编译参数。同时同步更新编译文档、样例版本要求及部分文件 License 头,解决样例配置不统一、说明与实际配置不一致的问题。
无
统一样例编译方式 所有相关样例采用 Ascend C CMake 工具链推荐的全局配置方式,降低不同样例之间的使用差异。
减少编译参数重复和配置错误 --npu-arch、--enable-simt 等通用参数由 CMake 工具链统一注入,避免在多个 target_compile_options 中重复维护,降低参数遗漏或冲突的风险。
便于架构切换和工程扩展 用户可以通过 -DCMAKE_ASC_ARCHITECTURES=dav-xxxx 在配置阶段切换 NPU 架构,无需修改每个目标的 CMake 配置。对于包含多个 ASC 源文件、多个库或多个可执行目标的工程,也可以保证编译参数统一生效。
明确配置顺序约束 将 CMAKE_ASC_ARCHITECTURES 和 CMAKE_ASC_ENABLE_SIMT 设置在 find_package(ASC) 之前,使工具链在初始化阶段即可读取配置,避免变量设置过晚导致配置不生效。
改善样例可维护性和文档一致性 样例 CMake 配置、中文文档和英文文档采用一致的编译方式,用户可以直接按照文档完成 SIMT 样例构建。受影响的 Gather 和 msProf 样例最低 CANN 版本同步更新为 9.1.0。
整体方案是将通用编译参数从“目标级手动配置”迁移到“ASC 工具链全局配置”,保留样例自身特有的编译选项。
在 find_package(ASC REQUIRED) 之前设置目标架构和 SIMT 开关:
cmake_minimum_required(VERSION 3.16)
set(CMAKE_ASC_ARCHITECTURES "dav-3510" CACHE STRING "NPU architecture")
set(CMAKE_ASC_ENABLE_SIMT ON)
find_package(ASC REQUIRED) project(kernel_samples LANGUAGES ASC CXX)
其中:
ASC CMake 模块内部根据全局变量生成编译参数,逻辑如下:
if(CMAKE_ASC_ARCHITECTURES) set(ASC_FLAGS "${ASC_FLAGS} --npu-arch=${CMAKE_ASC_ARCHITECTURES}") endif()
if(CMAKE_ASC_ENABLE_SIMT) set(ASC_FLAGS "${ASC_FLAGS} --enable-simt") endif()
因此,样例中删除以下重复配置:
target_compile_options(demo PRIVATE <<<<COMPILE_LANGUAGE:ASC>: --npu-arch=${CMAKE_ASC_ARCHITECTURES} --enable-simt> )
仅删除由全局配置统一管理的架构和 SIMT 参数,保留样例自身需要的选项,例如:
target_compile_options(demo PRIVATE <<<<COMPILE_LANGUAGE:ASC>:-dc> <<<<COMPILE_LANGUAGE:ASC>:--cce-res-usage> )
这样不会影响单独编译、调试、资源统计、场景选择等原有功能。
同步修改相关中文和英文 README 及编程指南:
开发中,预计9.10闭环
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Background(背景信息)
当前 SIMT 样例及 SIMT/SIMD 混合样例的 CMake 配置中,普遍通过 target_compile_options 手动传入 --npu-arch 和 --enable-simt。不同样例的配置位置和写法不一致,存在编译参数重复、配置分散、后续维护成本高等问题。
同时,Ascend C 的 CMake 工具链已经支持通过全局变量 CMAKE_ASC_ARCHITECTURES 和 CMAKE_ASC_ENABLE_SIMT 配置目标架构及 SIMT 编译模式,并自动将对应参数注入 ASC 编译命令。原有样例未统一使用该机制,用户在修改架构或新增样例时需要重复调整目标级编译选项。
本需求对相关 SIMT 样例的 CMake 配置进行统一,将架构和 SIMT 编译开关前置到 find_package(ASC) 之前配置,并删除重复的目标级编译参数。同时同步更新编译文档、样例版本要求及部分文件 License 头,解决样例配置不统一、说明与实际配置不一致的问题。
Origin(信息来源)
无
Benefit / Necessity (价值/作用)
统一样例编译方式
所有相关样例采用 Ascend C CMake 工具链推荐的全局配置方式,降低不同样例之间的使用差异。
减少编译参数重复和配置错误
--npu-arch、--enable-simt 等通用参数由 CMake 工具链统一注入,避免在多个 target_compile_options 中重复维护,降低参数遗漏或冲突的风险。
便于架构切换和工程扩展
用户可以通过 -DCMAKE_ASC_ARCHITECTURES=dav-xxxx 在配置阶段切换 NPU 架构,无需修改每个目标的 CMake 配置。对于包含多个 ASC 源文件、多个库或多个可执行目标的工程,也可以保证编译参数统一生效。
明确配置顺序约束
将 CMAKE_ASC_ARCHITECTURES 和 CMAKE_ASC_ENABLE_SIMT 设置在 find_package(ASC) 之前,使工具链在初始化阶段即可读取配置,避免变量设置过晚导致配置不生效。
改善样例可维护性和文档一致性
样例 CMake 配置、中文文档和英文文档采用一致的编译方式,用户可以直接按照文档完成 SIMT 样例构建。受影响的 Gather 和 msProf 样例最低 CANN 版本同步更新为 9.1.0。
Design(设计方案)
整体方案是将通用编译参数从“目标级手动配置”迁移到“ASC 工具链全局配置”,保留样例自身特有的编译选项。
1. 配置全局编译变量
在 find_package(ASC REQUIRED) 之前设置目标架构和 SIMT 开关:
cmake_minimum_required(VERSION 3.16)
set(CMAKE_ASC_ARCHITECTURES
"dav-3510"
CACHE STRING "NPU architecture")
set(CMAKE_ASC_ENABLE_SIMT ON)
find_package(ASC REQUIRED)
project(kernel_samples LANGUAGES ASC CXX)
其中:
2. 由 CMake 工具链自动注入通用参数
ASC CMake 模块内部根据全局变量生成编译参数,逻辑如下:
if(CMAKE_ASC_ARCHITECTURES)
set(ASC_FLAGS "${ASC_FLAGS} --npu-arch=${CMAKE_ASC_ARCHITECTURES}")
endif()
if(CMAKE_ASC_ENABLE_SIMT)
set(ASC_FLAGS "${ASC_FLAGS} --enable-simt")
endif()
因此,样例中删除以下重复配置:
target_compile_options(demo PRIVATE
<<COMPILE_LANGUAGE:ASC>:
--npu-arch=${CMAKE_ASC_ARCHITECTURES}
--enable-simt>
)
3. 保留样例特有编译选项
仅删除由全局配置统一管理的架构和 SIMT 参数,保留样例自身需要的选项,例如:
target_compile_options(demo PRIVATE
<<COMPILE_LANGUAGE:ASC>:-dc>
<<COMPILE_LANGUAGE:ASC>:--cce-res-usage>
)
这样不会影响单独编译、调试、资源统计、场景选择等原有功能。
4. 同步更新文档
同步修改相关中文和英文 README 及编程指南: