CompileFlags:
Add:
# C++17 标准
- "-std=c++17"
# 使用 GCC 的 libstdc++
- "-stdlib=libstdc++"
# 定义 NPU 架构宏(用于条件编译,选择 2201 作为默认)
- "-D__NPU_ARCH__=2201"
# 注入GCC标准库路径(自行替换对应版本与路径)
- "-isystem"
- "/usr/include/c++/9"
- "-isystem"
- "/usr/include/x86_64-linux-gnu/c++/9"
- "-isystem"
- "/usr/lib/gcc/x86_64-linux-gnu/9/include"
# 注入AscendC头文件路径(自行替换cann包路径)
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/adv_api/matmul"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/aicpu_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/basic_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/c_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/interface"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/simt_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/tiling"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/utils"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/adv_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/basic_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/c_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/simt_api"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/utils"
- "-isystem"
- "/usr/local/Ascend/cann-9.0.0/x86_64-linux/include"
# 启用 CPU 调试模式,会自动加载 kernel_macros.h 中的定义
- "-DASCENDC_CPU_DEBUG=1"
# 定义 Ascend C 特殊关键字(防止 clangd 报错)
# 这些关键字在真实的 Ascend C 编译器中是内建的
# 函数属性 - 使用 GNU 属性语法
- "-D__aicore__=__attribute__((annotate(\"aicore\")))"
- "-D__host_aicore__=__attribute__((annotate(\"host_aicore\")))"
- "-D__global__=__attribute__((annotate(\"global\")))"
- "-D__host__=__attribute__((annotate(\"host\")))"
- "-D__device__=__attribute__((annotate(\"device\")))"
# 内存空间限定符 - 定义为空(类型限定符不能使用属性语法)
- "-D__gm__="
- "-D__simt_vf__="
- "-D__vector__="
- "-D__cube__="
- "-D__launch_bounds__(x)="
- "-D__ubuf__="
- "-D__BLOCK_LOCAL__="
- "-D__WORKGROUP_LOCAL__="
- "-D__VEC_SCOPE__="
- "-D__cbuf__="
- "-D__ubuf__="
- "-D__cc__="
- "-D__ca__="
- "-D__cb__="
- "-D__fbuf__="
- "-D__sync_noalias__="
- "-D__sync_alias__="
- "-D__check_sync_alias__="
- "-D__sync_out__="
- "-D__sync_in__="
- "-D__inout_pipe__(...)="
- "-D__in_pipe__(...)="
- "-D__out_pipe__(...)="
- "-D__ssbuf__="
- "-D__simt_callee__="
- "-D__simt_vf__="
- "-D__simd_callee__="
- "-D__simd_vf__="
- "-D__no_simd_vf_fusion__="
- "-D__disable_kernel_type_autoinfer__="
- "-DGM_ADDR=uint8_t*"
# Ascend C 高级宏(通常在 kernel_macros.h 中定义)
- "-DASCENDC_HOST=__attribute__((annotate(\"host\")))"
- "-DASCENDC_AICORE=__attribute__((annotate(\"aicore\")))"
- "-DASCENDC_HOST_AICORE=__attribute__((annotate(\"host_aicore\")))"
# 抑制未知属性和其他不相关的警告
- "-Wno-unknown-attributes"
- "-Wno-ignored-attributes"
- "-Wno-gnu-zero-variadic-macro-arguments"
- "-Wno-nested-anon-types"
Diagnostics:
# 抑制一些可能不相关的警告
UnusedIncludes: None
MissingIncludes: None
Suppress:
- "unused-includes"
- "pp_file_not_found"
- "unknown-warning-option"
- "macro-redefined"
- "drv_no_cuda_installation" # 不需要 CUDA
- "redefinition" # 避免 operator new 等重定义错误
---
If:
PathMatch: ".*\\.asc$"
CompileFlags:
Add:
- "-x"
- "c++"
Diagnostics:
Suppress:
- "attributes_not_allowed"
- "decomp_decl_template"
- "ignored_attributes"
- "unknown_type_name"
- "undeclared_var_use"
- "invalid_token_after_toplevel_declarator"
- "missing_type_specifier"
- "typename_nested_not_found"