mxready 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mxready/__init__.py +1 -0
- mxready/api/__init__.py +4 -0
- mxready/api/middleware.py +149 -0
- mxready/api/rules.py +10 -0
- mxready/api/scans.py +164 -0
- mxready/api/workspace.py +156 -0
- mxready/app.py +179 -0
- mxready/cli/__init__.py +1 -0
- mxready/cli/build_verification_bundle.py +45 -0
- mxready/cli/generate_public_report.py +140 -0
- mxready/cli/scan_batch.py +368 -0
- mxready/cli/scan_repository.py +212 -0
- mxready/cli/serve.py +55 -0
- mxready/config.py +117 -0
- mxready/errors.py +11 -0
- mxready/logging_setup.py +88 -0
- mxready/mcp/__init__.py +5 -0
- mxready/mcp/server.py +433 -0
- mxready/models.py +382 -0
- mxready/persistence/__init__.py +1 -0
- mxready/persistence/sqlite.py +581 -0
- mxready/py.typed +0 -0
- mxready/reporting/__init__.py +4 -0
- mxready/reporting/badge.py +40 -0
- mxready/reporting/comparison.py +33 -0
- mxready/reporting/markdown.py +157 -0
- mxready/reporting/sarif.py +94 -0
- mxready/reporting/terminal.py +75 -0
- mxready/repository/__init__.py +14 -0
- mxready/repository/git_client.py +275 -0
- mxready/repository/github_archive.py +566 -0
- mxready/repository/identity.py +140 -0
- mxready/resources/__init__.py +19 -0
- mxready/resources/frontend/assets/index-BxJEwNUm.css +1 -0
- mxready/resources/frontend/assets/index-lzTCdWAt.js +9 -0
- mxready/resources/frontend/assets/mx-chip-C0HgFQyE.webp +0 -0
- mxready/resources/frontend/index.html +17 -0
- mxready/resources/rules/v1/core.yml +634 -0
- mxready/resources/rules/v1/manifest.yml +4 -0
- mxready/resources/schemas/verification-result-v1.json +259 -0
- mxready/scanning/__init__.py +17 -0
- mxready/scanning/analyzer.py +183 -0
- mxready/scanning/facts.py +596 -0
- mxready/scanning/indexer.py +299 -0
- mxready/scanning/path_context.py +174 -0
- mxready/scanning/python_source.py +67 -0
- mxready/scanning/rule_engine.py +595 -0
- mxready/scanning/rule_loader.py +282 -0
- mxready/scanning/toolchain.py +100 -0
- mxready/services/__init__.py +3 -0
- mxready/services/scans.py +239 -0
- mxready/services/worker.py +38 -0
- mxready/verification/__init__.py +11 -0
- mxready/verification/bundle.py +137 -0
- mxready/verification/validation.py +101 -0
- mxready-1.0.0.dist-info/METADATA +526 -0
- mxready-1.0.0.dist-info/RECORD +71 -0
- mxready-1.0.0.dist-info/WHEEL +5 -0
- mxready-1.0.0.dist-info/entry_points.txt +8 -0
- mxready-1.0.0.dist-info/licenses/LICENSE +201 -0
- mxready-1.0.0.dist-info/top_level.txt +2 -0
- mxready_runner/__init__.py +1 -0
- mxready_runner/__main__.py +3 -0
- mxready_runner/cli.py +88 -0
- mxready_runner/contracts.py +26 -0
- mxready_runner/execute.py +185 -0
- mxready_runner/inspect.py +79 -0
- mxready_runner/process.py +103 -0
- mxready_runner/py.typed +0 -0
- mxready_runner/redact.py +36 -0
- mxready_runner/schema.py +326 -0
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<meta
|
|
7
|
+
name="description"
|
|
8
|
+
content="MXReady:面向 PyTorch CUDA 扩展项目的沐曦 MXMACA 迁移准备度体检工具"
|
|
9
|
+
/>
|
|
10
|
+
<title>MXReady · 沐曦适配体检</title>
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-lzTCdWAt.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BxJEwNUm.css">
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<div id="root"></div>
|
|
16
|
+
</body>
|
|
17
|
+
</html>
|
|
@@ -0,0 +1,634 @@
|
|
|
1
|
+
- id: MXR-TOOLCHAIN-001
|
|
2
|
+
version: 2
|
|
3
|
+
title: 检测直接 nvcc 工具调用
|
|
4
|
+
category: toolchain
|
|
5
|
+
severity: blocker
|
|
6
|
+
# Makefile / *.mk 必须在内:CUDA 侧大量项目(含 cuda-samples)用 Make 构建,
|
|
7
|
+
# cu-bridge 的官方入口 make_maca 本身就是 make 包装器。此前这里漏掉 Makefile,
|
|
8
|
+
# 导致 `NVCC = nvcc` 这类最容易命中的写法完全不可见。
|
|
9
|
+
file_globs:
|
|
10
|
+
[
|
|
11
|
+
"**/*.py",
|
|
12
|
+
"**/*.sh",
|
|
13
|
+
"**/*.cmake",
|
|
14
|
+
"**/CMakeLists.txt",
|
|
15
|
+
"**/Makefile",
|
|
16
|
+
"**/makefile",
|
|
17
|
+
"**/GNUmakefile",
|
|
18
|
+
"**/*.mk",
|
|
19
|
+
]
|
|
20
|
+
patterns:
|
|
21
|
+
- type: regex
|
|
22
|
+
expression: '(?:subprocess\.(?:run|Popen|call|check_call|check_output)|os\.system)\s*\([^\n]{0,200}\bnvcc\b'
|
|
23
|
+
flags: [IGNORECASE]
|
|
24
|
+
- type: regex
|
|
25
|
+
expression: '(?m)^\s*(?:NVCC|CMAKE_CUDA_COMPILER)\s*=\s*[^\n]*\bnvcc\b'
|
|
26
|
+
flags: [IGNORECASE]
|
|
27
|
+
- type: regex
|
|
28
|
+
expression: '(?m)^\s*(?:[A-Za-z_][A-Za-z0-9_]*=\S+\s+)*(?:\S*/)?nvcc(?!\s*=)(?:\s|$)'
|
|
29
|
+
flags: [IGNORECASE]
|
|
30
|
+
message: 项目直接调用或固定指定 nvcc,迁移到 MXMACA/cu-bridge 时工具入口与参数需要复核。
|
|
31
|
+
recommendation: 请复核调用点,按 cu-bridge 当前版本配置对应工具链,并在沐曦环境验证构建。
|
|
32
|
+
references:
|
|
33
|
+
- title: MetaX-MACA cu-bridge
|
|
34
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
35
|
+
|
|
36
|
+
- id: MXR-TOOLCHAIN-002
|
|
37
|
+
version: 1
|
|
38
|
+
title: 识别 cu-bridge 工具链接入
|
|
39
|
+
category: toolchain
|
|
40
|
+
severity: info
|
|
41
|
+
file_globs:
|
|
42
|
+
[
|
|
43
|
+
"**/*.py",
|
|
44
|
+
"**/*.sh",
|
|
45
|
+
"**/*.cmake",
|
|
46
|
+
"**/CMakeLists.txt",
|
|
47
|
+
"**/Makefile",
|
|
48
|
+
"**/makefile",
|
|
49
|
+
"**/GNUmakefile",
|
|
50
|
+
"**/*.mk",
|
|
51
|
+
"**/Dockerfile",
|
|
52
|
+
"**/*.dockerfile",
|
|
53
|
+
]
|
|
54
|
+
patterns:
|
|
55
|
+
- type: fact
|
|
56
|
+
name: uses_cu_bridge_toolchain
|
|
57
|
+
equals: true
|
|
58
|
+
message: 项目已包含 cu-bridge 工具链入口(make_maca / cmake_maca / cucc / CUCC_* 环境变量),构建层已接入 MXMACA 兼容层。
|
|
59
|
+
recommendation: 请复核 cu-bridge 版本与 conf.json 的覆盖范围,并在沐曦环境验证构建;若有脚本绕过包装器直接调用 nvcc,仍需单独处理。
|
|
60
|
+
references:
|
|
61
|
+
- title: MetaX-MACA cu-bridge
|
|
62
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
63
|
+
- title: cu-bridge 使用手册
|
|
64
|
+
url: https://gitee.com/p4ul/cu-bridge/tree/master
|
|
65
|
+
|
|
66
|
+
- id: MXR-PATH-001
|
|
67
|
+
version: 1
|
|
68
|
+
title: 检测硬编码 CUDA 安装路径
|
|
69
|
+
category: path
|
|
70
|
+
severity: warning
|
|
71
|
+
file_globs:
|
|
72
|
+
[
|
|
73
|
+
"**/*.py",
|
|
74
|
+
"**/*.sh",
|
|
75
|
+
"**/*.cmake",
|
|
76
|
+
"**/CMakeLists.txt",
|
|
77
|
+
"**/*.toml",
|
|
78
|
+
"**/*.cfg",
|
|
79
|
+
"**/Makefile",
|
|
80
|
+
"**/makefile",
|
|
81
|
+
"**/GNUmakefile",
|
|
82
|
+
"**/*.mk",
|
|
83
|
+
]
|
|
84
|
+
patterns:
|
|
85
|
+
- type: regex
|
|
86
|
+
expression: '/usr/local/cuda(?:/|\b)'
|
|
87
|
+
message: 项目硬编码了 /usr/local/cuda,可能绕过 MXMACA/cu-bridge 提供的工具链路径。
|
|
88
|
+
recommendation: 请将路径改为可配置项,复核 cu-bridge 环境变量,并在沐曦服务器验证解析结果。
|
|
89
|
+
references:
|
|
90
|
+
- title: MetaX-MACA cu-bridge
|
|
91
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
92
|
+
|
|
93
|
+
- id: MXR-PYTORCH-001
|
|
94
|
+
version: 1
|
|
95
|
+
title: 识别 PyTorch CUDAExtension
|
|
96
|
+
category: pytorch-extension
|
|
97
|
+
severity: info
|
|
98
|
+
file_globs: ["**/*.py"]
|
|
99
|
+
patterns:
|
|
100
|
+
- type: fact
|
|
101
|
+
name: uses_torch_cuda_extension
|
|
102
|
+
equals: true
|
|
103
|
+
message: 项目通过 PyTorch CUDAExtension 构建原生扩展,需要准备与目标工具链匹配的编译环境。
|
|
104
|
+
recommendation: 请复核扩展源文件、编译参数与依赖库,并在 MXMACA PyTorch 环境完成最小构建验证。
|
|
105
|
+
references:
|
|
106
|
+
- title: PyTorch C++/CUDA extensions
|
|
107
|
+
url: https://docs.pytorch.org/docs/stable/cpp_extension.html
|
|
108
|
+
|
|
109
|
+
- id: MXR-DEPENDENCY-001
|
|
110
|
+
version: 1
|
|
111
|
+
title: 检测 flash-attn 依赖
|
|
112
|
+
category: dependency
|
|
113
|
+
severity: warning
|
|
114
|
+
file_globs: ["**/requirements*.txt", "**/pyproject.toml", "**/setup.cfg", "**/setup.py"]
|
|
115
|
+
patterns:
|
|
116
|
+
- type: dependency
|
|
117
|
+
name: flash-attn
|
|
118
|
+
message: 项目声明了 flash-attn,其原生扩展、架构参数与版本组合需要在目标平台单独验证。
|
|
119
|
+
recommendation: 请复核 flash-attn 版本和构建选项,先验证最小导入与算子,再运行项目级测试。
|
|
120
|
+
references:
|
|
121
|
+
- title: PyTorch C++/CUDA extensions
|
|
122
|
+
url: https://docs.pytorch.org/docs/stable/cpp_extension.html
|
|
123
|
+
|
|
124
|
+
- id: MXR-CMAKE-001
|
|
125
|
+
version: 1
|
|
126
|
+
title: 识别 CMake CUDA 语言
|
|
127
|
+
category: cmake
|
|
128
|
+
severity: info
|
|
129
|
+
file_globs: ["**/CMakeLists.txt", "**/*.cmake"]
|
|
130
|
+
patterns:
|
|
131
|
+
- type: fact
|
|
132
|
+
name: uses_cmake_cuda_language
|
|
133
|
+
equals: true
|
|
134
|
+
message: CMake 项目启用了 CUDA 语言,目标环境需要提供与工程探测逻辑匹配的编译器。
|
|
135
|
+
recommendation: 请复核 CMake 工具链选择和语言探测结果,并在 MXMACA/cu-bridge 环境验证配置阶段。
|
|
136
|
+
references:
|
|
137
|
+
- title: CMake FindCUDAToolkit
|
|
138
|
+
url: https://cmake.org/cmake/help/latest/module/FindCUDAToolkit.html
|
|
139
|
+
|
|
140
|
+
- id: MXR-CMAKE-002
|
|
141
|
+
version: 1
|
|
142
|
+
title: 检测 CMake FindCUDAToolkit
|
|
143
|
+
category: cmake
|
|
144
|
+
severity: warning
|
|
145
|
+
file_globs: ["**/CMakeLists.txt", "**/*.cmake"]
|
|
146
|
+
patterns:
|
|
147
|
+
- type: regex
|
|
148
|
+
expression: '\bfind_package\s*\(\s*CUDAToolkit\b'
|
|
149
|
+
flags: [IGNORECASE]
|
|
150
|
+
message: 工程显式查找 NVIDIA CUDAToolkit,其搜索路径和导入目标带有工具链假设。
|
|
151
|
+
recommendation: 请复核 CUDAToolkit_ROOT、导入目标和链接库,并在 cu-bridge 环境验证 CMake 配置。
|
|
152
|
+
references:
|
|
153
|
+
- title: CMake FindCUDAToolkit
|
|
154
|
+
url: https://cmake.org/cmake/help/latest/module/FindCUDAToolkit.html
|
|
155
|
+
|
|
156
|
+
- id: MXR-ARCH-001
|
|
157
|
+
version: 1
|
|
158
|
+
title: 检测 CUDA gencode 参数
|
|
159
|
+
category: architecture
|
|
160
|
+
severity: warning
|
|
161
|
+
file_globs: ["**/*.py", "**/*.sh", "**/*.cmake", "**/CMakeLists.txt", "**/*.toml", "**/*.cfg"]
|
|
162
|
+
patterns:
|
|
163
|
+
- type: regex
|
|
164
|
+
expression: '(?:-gencode|--generate-code)(?:[=\s]|$)'
|
|
165
|
+
message: 构建参数显式生成 NVIDIA compute/sm 目标,可能固化了设备架构假设。
|
|
166
|
+
recommendation: 请复核目标架构参数,依据 MXMACA 工具链要求调整,并在沐曦设备验证生成物。
|
|
167
|
+
references:
|
|
168
|
+
- title: MXMACA performance tuning guide
|
|
169
|
+
url: https://gitee.com/metax-maca/mxmaca-performance-tuning-guide
|
|
170
|
+
|
|
171
|
+
- id: MXR-ARCH-002
|
|
172
|
+
version: 1
|
|
173
|
+
title: 检测硬编码 sm 或 compute 架构
|
|
174
|
+
category: architecture
|
|
175
|
+
severity: warning
|
|
176
|
+
file_globs: ["**/*.py", "**/*.sh", "**/*.cmake", "**/CMakeLists.txt", "**/*.toml", "**/*.cfg"]
|
|
177
|
+
patterns:
|
|
178
|
+
- type: regex
|
|
179
|
+
expression: '\b(?:sm|compute)_[0-9]{2,3}\b'
|
|
180
|
+
flags: [IGNORECASE]
|
|
181
|
+
message: 项目硬编码了 NVIDIA sm/compute 架构编号,需要确认目标编译器如何处理该配置。
|
|
182
|
+
recommendation: 请复核架构列表是否可配置,并在 MXMACA 工具链上验证编译参数和运行结果。
|
|
183
|
+
references:
|
|
184
|
+
- title: MXMACA performance tuning guide
|
|
185
|
+
url: https://gitee.com/metax-maca/mxmaca-performance-tuning-guide
|
|
186
|
+
|
|
187
|
+
- id: MXR-TOOL-001
|
|
188
|
+
version: 1
|
|
189
|
+
title: 检测直接 nvidia-smi 调用
|
|
190
|
+
category: tool
|
|
191
|
+
severity: warning
|
|
192
|
+
file_globs:
|
|
193
|
+
[
|
|
194
|
+
"**/*.py",
|
|
195
|
+
"**/*.sh",
|
|
196
|
+
"**/Makefile",
|
|
197
|
+
"**/makefile",
|
|
198
|
+
"**/GNUmakefile",
|
|
199
|
+
"**/*.mk",
|
|
200
|
+
]
|
|
201
|
+
patterns:
|
|
202
|
+
- type: regex
|
|
203
|
+
expression: '(?:subprocess\.(?:run|Popen|call|check_call|check_output)|os\.system)\s*\([^\n]{0,200}\bnvidia-smi\b'
|
|
204
|
+
flags: [IGNORECASE]
|
|
205
|
+
- type: regex
|
|
206
|
+
expression: '(?m)^\s*(?:\S*/)?nvidia-smi(?:\s|$)'
|
|
207
|
+
flags: [IGNORECASE]
|
|
208
|
+
message: 项目直接调用 nvidia-smi,设备发现或诊断流程依赖 NVIDIA 专用工具。
|
|
209
|
+
recommendation: 请复核诊断逻辑并提供可替换工具入口,再在沐曦服务器验证设备信息采集。
|
|
210
|
+
references:
|
|
211
|
+
- title: MetaX-MACA cu-bridge
|
|
212
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
213
|
+
|
|
214
|
+
- id: MXR-COMM-001
|
|
215
|
+
version: 1
|
|
216
|
+
title: 检测 NCCL 环境变量覆盖
|
|
217
|
+
category: communication
|
|
218
|
+
severity: warning
|
|
219
|
+
file_globs: ["**/*.py", "**/*.sh", "**/*.toml", "**/*.cfg"]
|
|
220
|
+
patterns:
|
|
221
|
+
- type: regex
|
|
222
|
+
expression: '(?m)^\s*os\.environ\[(?=[^\]\n]*NCCL_[A-Z0-9_])[^\]\n]*\]\s*='
|
|
223
|
+
- type: regex
|
|
224
|
+
expression: '(?m)^\s*(?:export\s+)?NCCL_[A-Z0-9_]+\s*='
|
|
225
|
+
message: 项目覆盖了 NVIDIA NCCL 环境变量,多卡通信配置包含平台特定假设。
|
|
226
|
+
recommendation: 请复核通信后端、环境变量和拓扑配置,并在沐曦多卡环境进行针对性验证。
|
|
227
|
+
references:
|
|
228
|
+
- title: MetaX-MACA cu-bridge
|
|
229
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
230
|
+
|
|
231
|
+
- id: MXR-DEPENDENCY-002
|
|
232
|
+
version: 1
|
|
233
|
+
title: 检测 bitsandbytes 依赖
|
|
234
|
+
category: dependency
|
|
235
|
+
severity: warning
|
|
236
|
+
file_globs: ["**/requirements*.txt", "**/pyproject.toml", "**/setup.cfg", "**/setup.py"]
|
|
237
|
+
patterns:
|
|
238
|
+
- type: dependency
|
|
239
|
+
name: bitsandbytes
|
|
240
|
+
message: bitsandbytes 包含原生 GPU 组件和设备相关构建逻辑,需要单独确认目标平台版本。
|
|
241
|
+
recommendation: 请复核依赖版本、预编译包来源和算子覆盖,并在沐曦环境验证导入与核心功能。
|
|
242
|
+
references:
|
|
243
|
+
- title: MetaX-MACA cu-bridge
|
|
244
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
245
|
+
|
|
246
|
+
- id: MXR-DEPENDENCY-003
|
|
247
|
+
version: 1
|
|
248
|
+
title: 检测 xformers 依赖
|
|
249
|
+
category: dependency
|
|
250
|
+
severity: warning
|
|
251
|
+
file_globs: ["**/requirements*.txt", "**/pyproject.toml", "**/setup.cfg", "**/setup.py"]
|
|
252
|
+
patterns:
|
|
253
|
+
- type: dependency
|
|
254
|
+
name: xformers
|
|
255
|
+
message: xformers 可能构建并选择设备特定的原生算子,需确认版本与工具链组合。
|
|
256
|
+
recommendation: 请复核 xformers 构建选项和算子回退路径,并在沐曦环境验证项目实际调用链。
|
|
257
|
+
references:
|
|
258
|
+
- title: PyTorch C++/CUDA extensions
|
|
259
|
+
url: https://docs.pytorch.org/docs/stable/cpp_extension.html
|
|
260
|
+
|
|
261
|
+
- id: MXR-DEPENDENCY-004
|
|
262
|
+
version: 1
|
|
263
|
+
title: 检测 TensorRT 依赖或导入
|
|
264
|
+
category: dependency
|
|
265
|
+
severity: blocker
|
|
266
|
+
file_globs: ["**/requirements*.txt", "**/pyproject.toml", "**/setup.cfg", "**/setup.py", "**/*.py"]
|
|
267
|
+
patterns:
|
|
268
|
+
- type: dependency
|
|
269
|
+
name: tensorrt
|
|
270
|
+
- type: fact
|
|
271
|
+
name: imports_tensorrt
|
|
272
|
+
equals: true
|
|
273
|
+
message: 项目直接依赖或导入 TensorRT,当前执行路径包含 NVIDIA 专用运行时边界。
|
|
274
|
+
recommendation: 请复核是否存在可替换后端或隔离路径,并先验证沐曦目标栈的等价推理流程。
|
|
275
|
+
references:
|
|
276
|
+
- title: MetaX-MACA cu-bridge
|
|
277
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
278
|
+
|
|
279
|
+
- id: MXR-HEADER-001
|
|
280
|
+
version: 1
|
|
281
|
+
title: 识别 cuda_runtime.h 头文件
|
|
282
|
+
category: header
|
|
283
|
+
severity: info
|
|
284
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
285
|
+
patterns:
|
|
286
|
+
- type: regex
|
|
287
|
+
expression: '(?m)^\s*#\s*include\s*[<"]cuda_runtime\.h[>"]'
|
|
288
|
+
message: 源码直接包含 CUDA Runtime 头文件,需要由目标兼容层和工具链提供相应映射。
|
|
289
|
+
recommendation: 请复核使用到的 Runtime API,并结合 cu-bridge 当前版本在沐曦环境验证编译与功能。
|
|
290
|
+
references:
|
|
291
|
+
- title: MetaX-MACA cu-bridge
|
|
292
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
293
|
+
|
|
294
|
+
- id: MXR-HEADER-002
|
|
295
|
+
version: 1
|
|
296
|
+
title: 识别 cuda.h 驱动头文件
|
|
297
|
+
category: header
|
|
298
|
+
severity: info
|
|
299
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
300
|
+
patterns:
|
|
301
|
+
- type: regex
|
|
302
|
+
expression: '(?m)^\s*#\s*include\s*[<"]cuda\.h[>"]'
|
|
303
|
+
message: 源码直接包含 CUDA Driver 头文件,需要核对所用 Driver API 的目标映射。
|
|
304
|
+
recommendation: 请复核 Driver API 调用范围,并结合 cu-bridge 文档在沐曦环境验证编译与行为。
|
|
305
|
+
references:
|
|
306
|
+
- title: MetaX-MACA cu-bridge
|
|
307
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
308
|
+
|
|
309
|
+
- id: MXR-INTRINSIC-001
|
|
310
|
+
version: 1
|
|
311
|
+
title: 检测 CUDA warp 同步内建函数
|
|
312
|
+
category: intrinsic
|
|
313
|
+
severity: warning
|
|
314
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.h", "**/*.hpp"]
|
|
315
|
+
patterns:
|
|
316
|
+
- type: regex
|
|
317
|
+
expression: '\b__(?:shfl(?:_(?:up|down|xor))?_sync|ballot_sync|activemask)\s*\('
|
|
318
|
+
message: 内核使用 warp 同步内建函数,其掩码、warp 宽度和硬件执行假设需要复核。
|
|
319
|
+
recommendation: 请复核内建函数语义与 warp 假设,并依据性能指南在沐曦设备验证正确性和性能。
|
|
320
|
+
references:
|
|
321
|
+
- title: CUDA Programming Guide
|
|
322
|
+
url: https://docs.nvidia.com/cuda/cuda-programming-guide/
|
|
323
|
+
- title: MXMACA performance tuning guide
|
|
324
|
+
url: https://gitee.com/metax-maca/mxmaca-performance-tuning-guide
|
|
325
|
+
|
|
326
|
+
- id: MXR-KERNEL-001
|
|
327
|
+
version: 1
|
|
328
|
+
title: 检测 __launch_bounds__ 调优假设
|
|
329
|
+
category: kernel
|
|
330
|
+
severity: warning
|
|
331
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.h", "**/*.hpp"]
|
|
332
|
+
patterns:
|
|
333
|
+
- type: regex
|
|
334
|
+
expression: '\b__launch_bounds__\s*\('
|
|
335
|
+
message: 内核使用 __launch_bounds__ 固化线程和寄存器调优假设,目标架构的最佳配置可能不同。
|
|
336
|
+
recommendation: 请复核线程块和资源约束,并依据 MXMACA 性能指南在沐曦设备重新验证调优参数。
|
|
337
|
+
references:
|
|
338
|
+
- title: MXMACA performance tuning guide
|
|
339
|
+
url: https://gitee.com/metax-maca/mxmaca-performance-tuning-guide
|
|
340
|
+
- title: CUDA Programming Guide
|
|
341
|
+
url: https://docs.nvidia.com/cuda/cuda-programming-guide/
|
|
342
|
+
|
|
343
|
+
- id: MXR-GRAPH-001
|
|
344
|
+
version: 1
|
|
345
|
+
title: 检测 CUDA Graph API
|
|
346
|
+
category: graph
|
|
347
|
+
severity: warning
|
|
348
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
349
|
+
patterns:
|
|
350
|
+
- type: regex
|
|
351
|
+
expression: '\bcudaGraph[A-Za-z0-9_]*\s*\('
|
|
352
|
+
message: 项目调用 CUDA Graph API,图构建、更新和执行行为需要在目标运行时单独确认。
|
|
353
|
+
recommendation: 请复核实际使用的 Graph API 与错误处理路径,并在沐曦环境验证功能和收益。
|
|
354
|
+
references:
|
|
355
|
+
- title: CUDA Programming Guide
|
|
356
|
+
url: https://docs.nvidia.com/cuda/cuda-programming-guide/
|
|
357
|
+
- title: MetaX-MACA cu-bridge
|
|
358
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
359
|
+
|
|
360
|
+
- id: MXR-BUILD-001
|
|
361
|
+
version: 1
|
|
362
|
+
title: 检测 TORCH_CUDA_ARCH_LIST 覆盖
|
|
363
|
+
category: build
|
|
364
|
+
severity: warning
|
|
365
|
+
file_globs: ["**/*.py", "**/*.sh", "**/*.toml", "**/*.cfg"]
|
|
366
|
+
patterns:
|
|
367
|
+
- type: regex
|
|
368
|
+
expression: '(?m)^\s*os\.environ\[[^\]\n]*TORCH_CUDA_ARCH_LIST[^\]\n]*\]\s*='
|
|
369
|
+
- type: regex
|
|
370
|
+
expression: '(?m)^\s*(?:export\s+)?TORCH_CUDA_ARCH_LIST\s*='
|
|
371
|
+
message: 项目显式覆盖 TORCH_CUDA_ARCH_LIST,构建产物可能绑定 NVIDIA 架构列表。
|
|
372
|
+
recommendation: 请复核 PyTorch 扩展的架构选择方式,移除不适用假设,并在 MXMACA 环境验证构建。
|
|
373
|
+
references:
|
|
374
|
+
- title: PyTorch C++/CUDA extensions
|
|
375
|
+
url: https://docs.pytorch.org/docs/stable/cpp_extension.html
|
|
376
|
+
|
|
377
|
+
- id: MXR-PYTORCH-002
|
|
378
|
+
version: 1
|
|
379
|
+
title: 识别 PyTorch JIT 原生扩展
|
|
380
|
+
category: pytorch-extension
|
|
381
|
+
severity: info
|
|
382
|
+
file_globs: ["**/*.py"]
|
|
383
|
+
patterns:
|
|
384
|
+
- type: fact
|
|
385
|
+
name: uses_torch_cpp_extension_load
|
|
386
|
+
equals: true
|
|
387
|
+
message: 项目使用 torch.utils.cpp_extension.load 在运行时编译扩展,执行环境必须具备完整工具链。
|
|
388
|
+
recommendation: 请复核 JIT 源码、缓存、编译参数与依赖,并在 MXMACA 环境验证首次和重复加载。
|
|
389
|
+
references:
|
|
390
|
+
- title: PyTorch C++/CUDA extensions
|
|
391
|
+
url: https://docs.pytorch.org/docs/stable/cpp_extension.html
|
|
392
|
+
|
|
393
|
+
- id: MXR-DOCKER-001
|
|
394
|
+
version: 1
|
|
395
|
+
title: 检测 NVIDIA GPU 容器基础镜像与运行时配置
|
|
396
|
+
category: docker
|
|
397
|
+
severity: warning
|
|
398
|
+
file_globs: ["**/Dockerfile", "**/*.dockerfile", "**/docker-compose*.yml", "**/docker-compose*.yaml"]
|
|
399
|
+
patterns:
|
|
400
|
+
- type: regex
|
|
401
|
+
expression: '^\s*FROM\s+(?:nvidia/cuda|nvcr\.io|nvidia/cudagl|nvidia/tensorrt|nvidia/tritonserver)(?:[:/\s]|$)'
|
|
402
|
+
flags: [IGNORECASE, MULTILINE]
|
|
403
|
+
- type: regex
|
|
404
|
+
expression: '(?:nvidia-docker|nvidia-container-runtime|--gpus\s|--runtime\s*=\s*nvidia|gpus:\s*all)'
|
|
405
|
+
flags: [IGNORECASE]
|
|
406
|
+
message: 镜像或运行配置基于 NVIDIA GPU 容器体系,迁移到沐曦环境需要更换基础镜像与容器运行时参数。
|
|
407
|
+
recommendation: 请复核基础镜像来源、--gpus/--runtime 参数与 GPU 设备挂载方式,替换为沐曦环境的等价方案后验证容器内算子。
|
|
408
|
+
references:
|
|
409
|
+
- title: MetaX-MACA cu-bridge
|
|
410
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
411
|
+
|
|
412
|
+
- id: MXR-MEMORY-001
|
|
413
|
+
version: 1
|
|
414
|
+
title: 检测 CUDA 显存管理 Runtime API
|
|
415
|
+
category: runtime
|
|
416
|
+
severity: info
|
|
417
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
418
|
+
patterns:
|
|
419
|
+
- type: regex
|
|
420
|
+
expression: '\bcuda(?:Malloc|MallocAsync|MallocManaged|Free|FreeAsync)\s*\('
|
|
421
|
+
flags: [IGNORECASE]
|
|
422
|
+
message: 源码调用 CUDA 显存管理 Runtime API,需要确认 cu-bridge 对相应 API 的映射与行为差异。
|
|
423
|
+
recommendation: 请复核显存分配/释放调用点与错误处理,并结合 cu-bridge 当前版本在沐曦环境验证。
|
|
424
|
+
references:
|
|
425
|
+
- title: MetaX-MACA cu-bridge
|
|
426
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
427
|
+
|
|
428
|
+
- id: MXR-STREAM-001
|
|
429
|
+
version: 1
|
|
430
|
+
title: 检测 CUDA 流(Stream)API
|
|
431
|
+
category: runtime
|
|
432
|
+
severity: info
|
|
433
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
434
|
+
patterns:
|
|
435
|
+
- type: regex
|
|
436
|
+
expression: '\bcudaStream[A-Za-z0-9]*\s*\('
|
|
437
|
+
flags: [IGNORECASE]
|
|
438
|
+
message: 源码调用 CUDA 流(Stream)API,流创建、同步与事件语义需要结合目标运行时确认。
|
|
439
|
+
recommendation: 请复核流与事件的使用方式,并在沐曦环境验证并发与同步行为。
|
|
440
|
+
references:
|
|
441
|
+
- title: MetaX-MACA cu-bridge
|
|
442
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
443
|
+
|
|
444
|
+
- id: MXR-DEVICE-001
|
|
445
|
+
version: 1
|
|
446
|
+
title: 检测 CUDA 设备管理 API
|
|
447
|
+
category: runtime
|
|
448
|
+
severity: info
|
|
449
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
450
|
+
patterns:
|
|
451
|
+
- type: regex
|
|
452
|
+
expression: '\bcuda(?:SetDevice|GetDevice|GetDeviceCount|DeviceSynchronize|DeviceReset)\s*\('
|
|
453
|
+
flags: [IGNORECASE]
|
|
454
|
+
message: 源码调用 CUDA 设备管理 API,多设备枚举与选择逻辑包含平台假设。
|
|
455
|
+
recommendation: 请复核设备选择与同步逻辑,并在沐曦环境验证设备枚举与上下文行为。
|
|
456
|
+
references:
|
|
457
|
+
- title: MetaX-MACA cu-bridge
|
|
458
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
459
|
+
|
|
460
|
+
- id: MXR-COMM-002
|
|
461
|
+
version: 1
|
|
462
|
+
title: 检测 torch.distributed NCCL 通信后端
|
|
463
|
+
category: communication
|
|
464
|
+
severity: warning
|
|
465
|
+
file_globs: ["**/*.py"]
|
|
466
|
+
patterns:
|
|
467
|
+
- type: regex
|
|
468
|
+
expression: '\b(?:init_process_group|new_group)\s*\(\s*[''"]nccl[''"]'
|
|
469
|
+
- type: regex
|
|
470
|
+
expression: '\b(?:init_process_group|new_group)\s*\([^\n]{0,200}\bbackend\s*=\s*[''"]nccl[''"]'
|
|
471
|
+
message: 项目将分布式通信后端指定为 NCCL,迁移到沐曦环境需要确认通信库与后端的等价映射。
|
|
472
|
+
recommendation: 请复核通信后端选择、初始化参数与多卡拓扑,并在沐曦多卡环境验证集合通信行为。
|
|
473
|
+
references:
|
|
474
|
+
- title: MetaX-MACA cu-bridge
|
|
475
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
476
|
+
|
|
477
|
+
- id: MXR-DEPENDENCY-005
|
|
478
|
+
version: 1
|
|
479
|
+
title: 检测 apex 依赖或导入
|
|
480
|
+
category: dependency
|
|
481
|
+
severity: warning
|
|
482
|
+
file_globs: ["**/requirements*.txt", "**/pyproject.toml", "**/setup.cfg", "**/setup.py", "**/*.py"]
|
|
483
|
+
patterns:
|
|
484
|
+
- type: dependency
|
|
485
|
+
name: apex
|
|
486
|
+
- type: dependency
|
|
487
|
+
name: nvidia-apex
|
|
488
|
+
- type: fact
|
|
489
|
+
name: imports_apex
|
|
490
|
+
equals: true
|
|
491
|
+
message: 项目依赖或导入 apex,其混合精度与融合算子包含设备相关原生组件,需要单独确认目标平台版本。
|
|
492
|
+
recommendation: 请复核 apex 版本、算子覆盖与混合精度路径,并在沐曦环境验证导入与核心功能。
|
|
493
|
+
references:
|
|
494
|
+
- title: MetaX-MACA cu-bridge
|
|
495
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
496
|
+
|
|
497
|
+
- id: MXR-LIBRARY-001
|
|
498
|
+
version: 1
|
|
499
|
+
title: 识别 cuBLAS / cuDNN / cuFFT / cuSPARSE / cuSOLVER 头文件
|
|
500
|
+
category: library
|
|
501
|
+
severity: warning
|
|
502
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
503
|
+
patterns:
|
|
504
|
+
- type: regex
|
|
505
|
+
expression: '(?m)^\s*#\s*include\s*[<"](?:cublas|cublasLt|cudnn|cufft|cusparse|cusolver)[A-Za-z0-9_-]*\.h[>"]'
|
|
506
|
+
message: 源码直接包含 NVIDIA 数学库头文件,目标环境需要由兼容层或等价库提供相应 API 映射。
|
|
507
|
+
recommendation: 请复核实际使用的库 API 与链接配置,并结合 cu-bridge 当前版本在沐曦环境验证编译与数值行为。
|
|
508
|
+
references:
|
|
509
|
+
- title: MetaX-MACA cu-bridge
|
|
510
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
511
|
+
- title: MXMACA performance tuning guide
|
|
512
|
+
url: https://gitee.com/metax-maca/mxmaca-performance-tuning-guide
|
|
513
|
+
|
|
514
|
+
- id: MXR-RUNTIME-001
|
|
515
|
+
version: 1
|
|
516
|
+
title: 检测 CUDA 数据拷贝与事件 Runtime API
|
|
517
|
+
category: runtime
|
|
518
|
+
severity: info
|
|
519
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cc", "**/*.cpp", "**/*.c", "**/*.h", "**/*.hpp"]
|
|
520
|
+
patterns:
|
|
521
|
+
- type: regex
|
|
522
|
+
expression: '\bcuda(?:Memcpy|MemcpyAsync|Memcpy2D|Memcpy2DAsync|MemcpyPeer|MemcpyPeerAsync|Memset|MemsetAsync|EventCreate|EventRecord|EventSynchronize|EventQuery|EventElapsedTime|EventDestroy)\s*\('
|
|
523
|
+
flags: [IGNORECASE]
|
|
524
|
+
message: 源码调用 CUDA 数据拷贝或事件 API,其同步语义与错误处理需要结合目标运行时确认。
|
|
525
|
+
recommendation: 请复核拷贝路径、同步点与事件使用方式,并在沐曦环境验证数据一致性与性能。
|
|
526
|
+
references:
|
|
527
|
+
- title: CUDA Programming Guide
|
|
528
|
+
url: https://docs.nvidia.com/cuda/cuda-programming-guide/
|
|
529
|
+
- title: MetaX-MACA cu-bridge
|
|
530
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
531
|
+
|
|
532
|
+
- id: MXR-TEST-001
|
|
533
|
+
version: 1
|
|
534
|
+
title: 检测 CUDA 可用性静默跳过测试
|
|
535
|
+
category: test
|
|
536
|
+
severity: warning
|
|
537
|
+
file_globs: ["**/*.py"]
|
|
538
|
+
patterns:
|
|
539
|
+
- type: regex
|
|
540
|
+
expression: 'skipif\s*\([^\n]*\bnot\s+torch\.cuda\.is_available\(\)'
|
|
541
|
+
- type: regex
|
|
542
|
+
expression: 'skipUnless\s*\([^\n]*torch\.cuda\.is_available\(\)'
|
|
543
|
+
message: 测试在 torch.cuda 不可用时静默跳过,迁移到沐曦环境后可能因环境未配置而跳过,造成验证通过的假象。
|
|
544
|
+
recommendation: 请复核跳过条件,并在真机环境手动运行核心 CUDA 测试以确认实际覆盖。
|
|
545
|
+
references:
|
|
546
|
+
- title: pytest skipif documentation
|
|
547
|
+
url: https://docs.pytest.org/
|
|
548
|
+
- title: unittest skipUnless documentation
|
|
549
|
+
url: https://docs.python.org/3/library/unittest.html
|
|
550
|
+
|
|
551
|
+
- id: MXR-PYTORCH-003
|
|
552
|
+
version: 1
|
|
553
|
+
title: 识别 PyTorch 自动混合精度用法
|
|
554
|
+
category: runtime
|
|
555
|
+
severity: info
|
|
556
|
+
file_globs: ["**/*.py"]
|
|
557
|
+
patterns:
|
|
558
|
+
- type: regex
|
|
559
|
+
expression: '\b(?:torch\.cuda\.amp|torch\.amp)\b|\b(?:autocast|GradScaler)\s*\('
|
|
560
|
+
message: 项目使用 PyTorch 自动混合精度,目标环境的半精度算子支持与缩放行为需要结合 MXMACA 版本验证。
|
|
561
|
+
recommendation: 请复核混合精度路径与缩放器行为,并依据 MXMACA 性能指南在沐曦设备验证精度与性能。
|
|
562
|
+
references:
|
|
563
|
+
- title: MXMACA performance tuning guide
|
|
564
|
+
url: https://gitee.com/metax-maca/mxmaca-performance-tuning-guide
|
|
565
|
+
- title: MetaX-MACA cu-bridge
|
|
566
|
+
url: https://gitee.com/metax-maca/cu-bridge
|
|
567
|
+
|
|
568
|
+
- id: MXR-PTX-001
|
|
569
|
+
version: 1
|
|
570
|
+
title: 检测内联 PTX 汇编
|
|
571
|
+
category: ptx
|
|
572
|
+
severity: blocker
|
|
573
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cpp", "**/*.cc", "**/*.h", "**/*.hpp"]
|
|
574
|
+
patterns:
|
|
575
|
+
- type: regex
|
|
576
|
+
expression: '\b(?:__asm__|asm)\s*(?:(?:__volatile__|volatile)\s*)?\(\s*"'
|
|
577
|
+
message: 内联汇编块嵌入的是 NVIDIA 虚拟 ISA(PTX)指令,MXMACA 后端不执行 PTX;这类代码可能固化 NVIDIA 指令语义。
|
|
578
|
+
recommendation: 请逐处复核 asm 块对应的硬件能力,改用目标平台支持的内建函数或等价 C++ 实现,并在沐曦环境验证功能与性能。
|
|
579
|
+
references:
|
|
580
|
+
- title: NVIDIA Inline PTX Assembly
|
|
581
|
+
url: https://docs.nvidia.com/cuda/inline-ptx-assembly/index.html
|
|
582
|
+
- title: MXMACA runtime API guide
|
|
583
|
+
url: https://developer.metax-tech.com/api/client/document/preview/567/C500_RuntimeAPIProgrammingGuide_CN.html
|
|
584
|
+
|
|
585
|
+
- id: MXR-WARP-001
|
|
586
|
+
version: 1
|
|
587
|
+
title: 检测硬编码 32 线程束假设
|
|
588
|
+
category: warp
|
|
589
|
+
severity: blocker
|
|
590
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cpp", "**/*.cc", "**/*.h", "**/*.hpp"]
|
|
591
|
+
patterns:
|
|
592
|
+
- type: regex
|
|
593
|
+
expression: '(?m)^(?!\s*(?://|/\*|\*))[^\n]*threadIdx\.x\s*[%/&]\s*(?:31|32)\b'
|
|
594
|
+
- type: regex
|
|
595
|
+
expression: '(?m)^\s*#\s*define\s+(?:WARP_SIZE|WARPSIZE)\s+32\b'
|
|
596
|
+
- type: regex
|
|
597
|
+
expression: '(?m)^(?!\s*(?://|/\*|\*))[^\n]*\b(?:WARP_SIZE|warp_size|WARPSIZE)\s*=\s*32\b'
|
|
598
|
+
message: 代码按 32 线程一组计算 lane 或定义线程束宽度常量;MXMACA 的线程束(wave)宽度为 64,这类算术可能编译通过但结果错位。
|
|
599
|
+
recommendation: 请复核 lane 计算与掩码宽度,改用运行时查询的线程束宽度,并在沐曦环境用最小用例比对结果。
|
|
600
|
+
references:
|
|
601
|
+
- title: MXMACA runtime API guide
|
|
602
|
+
url: https://developer.metax-tech.com/api/client/document/preview/567/C500_RuntimeAPIProgrammingGuide_CN.html
|
|
603
|
+
|
|
604
|
+
- id: MXR-THRUST-001
|
|
605
|
+
version: 1
|
|
606
|
+
title: 识别 Thrust 用法
|
|
607
|
+
category: library
|
|
608
|
+
severity: info
|
|
609
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cpp", "**/*.cc", "**/*.h", "**/*.hpp"]
|
|
610
|
+
patterns:
|
|
611
|
+
- type: regex
|
|
612
|
+
expression: '\bthrust::[A-Za-z_]'
|
|
613
|
+
message: 项目使用 Thrust;MXMACA 提供 mcThrust wrapper 并在编译期自动接入,通常无需改动源码,接口对齐情况需按版本确认。
|
|
614
|
+
recommendation: 请复核 Thrust 版本与 mcThrust 的对应关系,并在沐曦环境验证编译与结果。
|
|
615
|
+
references:
|
|
616
|
+
- title: MXMACA AI training manual
|
|
617
|
+
url: https://developer.metax-tech.com/api/client/document/preview/587/C500_AITrainningMaunal_CN.html
|
|
618
|
+
|
|
619
|
+
- id: MXR-CUB-001
|
|
620
|
+
version: 1
|
|
621
|
+
title: 识别 CUB 用法
|
|
622
|
+
category: library
|
|
623
|
+
severity: info
|
|
624
|
+
file_globs: ["**/*.cu", "**/*.cuh", "**/*.cpp", "**/*.cc", "**/*.h", "**/*.hpp"]
|
|
625
|
+
patterns:
|
|
626
|
+
- type: regex
|
|
627
|
+
expression: '\bcub::[A-Za-z_]'
|
|
628
|
+
- type: regex
|
|
629
|
+
expression: '(?m)^\s*#\s*include\s*[<"]cub/[A-Za-z0-9_./]+[>"]'
|
|
630
|
+
message: 项目使用 CUB;MXMACA 提供 mcCUB 且对外 API 接口不变,通常无需改动源码。
|
|
631
|
+
recommendation: 请复核 CUB 版本与 mcCUB 的对应关系,并在沐曦环境验证编译与结果。
|
|
632
|
+
references:
|
|
633
|
+
- title: MXMACA AI training manual
|
|
634
|
+
url: https://developer.metax-tech.com/api/client/document/preview/587/C500_AITrainningMaunal_CN.html
|