已合并
enable clangd #717
jianwei10创建于 3月4日
enable clangd #717
已合并
jianwei10创建于 3月4日
已删除 :master合入到cann/asc-devkitmaster
2 个文件变更+199-0
A.clangd+144-0
@@ -0,0 +1,144 @@
1+CompileFlags:
2+ Add:
3+ # C++17 标准
4+ - "-std=c++17"
5+ 
6+ # 使用 GCC 的 libstdc++
7+ - "-stdlib=libstdc++"
8+ 
9+ # 定义 NPU 架构宏(用于条件编译,选择 2201 作为默认)
10+ - "-D__NPU_ARCH__=2201"
11+ 
12+ # 注入GCC标准库路径(自行替换对应版本与路径)
13+ - "-isystem"
14+ - "/usr/include/c++/9"
15+ - "-isystem"
16+ - "/usr/include/x86_64-linux-gnu/c++/9"
17+ - "-isystem"
18+ - "/usr/lib/gcc/x86_64-linux-gnu/9/include"
19+ 
20+ # 注入AscendC头文件路径(自行替换cann包路径)
21+ - "-isystem"
22+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include"
23+ - "-isystem"
24+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/adv_api/matmul"
25+ - "-isystem"
26+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/aicpu_api"
27+ - "-isystem"
28+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/basic_api"
29+ - "-isystem"
30+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/c_api"
31+ - "-isystem"
32+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/interface"
33+ - "-isystem"
34+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/micro_api"
35+ - "-isystem"
36+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/simt_api"
37+ - "-isystem"
38+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/tiling"
39+ - "-isystem"
40+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/include/utils"
41+ 
42+ - "-isystem"
43+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl"
44+ - "-isystem"
45+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/adv_api"
46+ - "-isystem"
47+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/basic_api"
48+ - "-isystem"
49+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/c_api"
50+ - "-isystem"
51+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/micro_api"
52+ - "-isystem"
53+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/simt_api"
54+ - "-isystem"
55+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/asc/impl/utils"
56+ 
57+ - "-isystem"
58+ - "/usr/local/Ascend/cann-9.0.0/x86_64-linux/include"
59+ 
60+ # 启用 CPU 调试模式,会自动加载 kernel_macros.h 中的定义
61+ - "-DASCENDC_CPU_DEBUG=1"
62+ 
63+ # 定义 Ascend C 特殊关键字(防止 clangd 报错)
64+ # 这些关键字在真实的 Ascend C 编译器中是内建的
65+ # 函数属性 - 使用 GNU 属性语法
66+ - "-D__aicore__=__attribute__((annotate(\"aicore\")))"
67+ - "-D__host_aicore__=__attribute__((annotate(\"host_aicore\")))"
68+ - "-D__global__=__attribute__((annotate(\"global\")))"
69+ - "-D__host__=__attribute__((annotate(\"host\")))"
70+ - "-D__device__=__attribute__((annotate(\"device\")))"
71+ 
72+ # 内存空间限定符 - 定义为空(类型限定符不能使用属性语法)
73+ - "-D__gm__="
74+ - "-D__simt_vf__="
75+ - "-D__vector__="
76+ - "-D__cube__="
77+ - "-D__launch_bounds__(x)="
78+ - "-D__ubuf__="
79+ - "-D__BLOCK_LOCAL__="
80+ - "-D__WORKGROUP_LOCAL__="
81+ - "-D__VEC_SCOPE__="
82+ - "-D__cbuf__="
83+ - "-D__ubuf__="
84+ - "-D__cc__="
85+ - "-D__ca__="
86+ - "-D__cb__="
87+ - "-D__fbuf__="
88+ - "-D__sync_noalias__="
89+ - "-D__sync_alias__="
90+ - "-D__check_sync_alias__="
91+ - "-D__sync_out__="
92+ - "-D__sync_in__="
93+ - "-D__inout_pipe__(...)="
94+ - "-D__in_pipe__(...)="
95+ - "-D__out_pipe__(...)="
96+ - "-D__ssbuf__="
97+ - "-D__simt_callee__="
98+ - "-D__simt_vf__="
99+ - "-D__simd_callee__="
100+ - "-D__simd_vf__="
101+ - "-D__no_simd_vf_fusion__="
102+ - "-D__disable_kernel_type_autoinfer__="
103+ - "-DGM_ADDR=uint8_t*"
104+ 
105+ # Ascend C 高级宏(通常在 kernel_macros.h 中定义)
106+ - "-DASCENDC_HOST=__attribute__((annotate(\"host\")))"
107+ - "-DASCENDC_AICORE=__attribute__((annotate(\"aicore\")))"
108+ - "-DASCENDC_HOST_AICORE=__attribute__((annotate(\"host_aicore\")))"
109+ 
110+ # 抑制未知属性和其他不相关的警告
111+ - "-Wno-unknown-attributes"
112+ - "-Wno-ignored-attributes"
113+ - "-Wno-gnu-zero-variadic-macro-arguments"
114+ - "-Wno-nested-anon-types"
115+ 
116+Diagnostics:
117+ # 抑制一些可能不相关的警告
118+ UnusedIncludes: None
119+ MissingIncludes: None
120+ Suppress:
121+ - "unused-includes"
122+ - "pp_file_not_found"
123+ - "unknown-warning-option"
124+ - "macro-redefined"
125+ - "drv_no_cuda_installation" # 不需要 CUDA
126+ - "redefinition" # 避免 operator new 等重定义错误
127+---
128+If:
129+ PathMatch: ".*\\.asc$"
130+CompileFlags:
131+ Add:
132+ - "-x"
133+ - "c++"
134+ 
135+Diagnostics:
136+ Suppress:
137+ - "attributes_not_allowed"
138+ - "decomp_decl_template"
139+ - "ignored_attributes"
140+ - "unknown_type_name"
141+ - "undeclared_var_use"
142+ - "invalid_token_after_toplevel_declarator"
143+ - "missing_type_specifier"
144+ - "typename_nested_not_found"
MREADME.md+55-0
@@ -63,6 +63,61 @@ Ascend C是[CANN](https://hiascend.com/software/cann) (Compute Architecture fo
63- [编译构建](docs/quick_start.md):介绍搭建环境、编译执行、本地验证等操作。63- [编译构建](docs/quick_start.md):介绍搭建环境、编译执行、本地验证等操作。
64- [样例执行](examples/README.md):提供算子开发样例,介绍端到端执行样例的方式。64- [样例执行](examples/README.md):提供算子开发样例,介绍端到端执行样例的方式。
65 65 
66+## 🧰clangd/IDE 支持
67+ 
68+- 安装 clangd(推荐 15+,以Ubuntu操作系统为例)以及VSCode插件clangd
69+ 
70+ ```bash
71+ sudo apt install -y clangd-15
72+ ```
73+ 
74+- 配置本地VSCode的`settings.json`(示例)
75+ 
76+ ```json
77+ {
78+ "clangd.path": "/usr/bin/clangd-15",
79+ "clangd.arguments": [
80+ "--background-index=0",
81+ "--clang-tidy=0"
82+ ],
83+ "files.associations": {
84+ "*.asc": "cpp"
85+ }
86+ }
87+ ```
88+ 
89+- 在项目根目录下配置 `.clangd`(示例)完整 `.clangd`文件在本目录下给出.
90+ 
91+ ```yaml
92+ CompileFlags:
93+ Add:
94+ - "-std=c++17"
95+ - "-DASCENDC_CPU_DEBUG=1"
96+ - "-D__NPU_ARCH__=2201"
97+ ...
98+ 
99+ ---
100+ If:
101+ PathMatch: ".*\\.asc$"
102+ CompileFlags:
103+ Add:
104+ - "-x"
zhugexun_sjtu

🟢 低严重度:示例架构不一致

README 示例中的 NPU 架构是 2201,与主配置文件 .clangd.txt 中的 3101 不一致,可能造成混淆。

建议:统一架构值,确保文档和实际配置一致。

likedislike
105+ - "c++"
106+ Diagnostics:
107+ Suppress:
108+ - "attributes_not_allowed"
109+ - "decomp_decl_template"
110+ - "ignored_attributes"
111+ - "unknown_type_name"
112+ - "undeclared_var_use"
113+ - "invalid_token_after_toplevel_declarator"
114+ - "missing_type_specifier"
115+ - "typename_nested_not_found"
116+ ```
117+ 
118+- 重启clangd(VSCode: Command Palette -> "Clangd: Restart language server")
119+ 
120+- 💡 关于 ASC 语言语法高亮、代码跳转的支持,如有任何建议或改进意见,欢迎社区开发者积极反馈!
66 121 
67## 📖相关文档122## 📖相关文档
68 123