验证
本章节解释 为什么这个仓库的性能结论值得信任,以及信任在哪里停止。
优化方法论回答的是:"我们如何提升性能?"验证回答的是不同的问题:"证据实际上证明了什么,又不能证明什么?"两个问题都重要,但只有第二个是诚实的。
验证模型
| 证据层次 | 能证明什么 | 不能证明什么 |
|---|---|---|
| 托管 CI + 仓库检查 | 格式检查、CUDA 编译、文档结构、Pages 可构建性,以及路由/工作流健康检查 | GPU 运行时正确性、CUDA benchmark 数字或特定硬件加速比 |
GPU 机器上的本地 ctest --test-dir build | 在项目数值容差策略下,相对 cuBLAS oracle 的运行时正确性 | 普遍性的性能主张或 GPU 型号无关性 |
| 本地 benchmark 执行 | 在命名 GPU 上、使用命名命令和范围标签下的性能行为 | 其他 GPU、其他 CUDA 版本,或无标签工作负载的结果 |
规范化验证页面
| 需求 | 页面 |
|---|---|
| 了解正确性阈值和 oracle 策略 | 正确性策略 |
| 解读 benchmark 标签和报告数字 | Benchmark 范围 |
| 负责任地复现一个结果 | 可复现性 |
| 查看具有代表性的结果快照 | Benchmark 结果 |
| 理解加速背后的分析模型 | 性能模型 |
托管 CI 能证明什么
托管 CI 被信任来证明仓库健康:CUDA 编译、文档结构、Pages 可构建性、格式检查以及文档测试/构建健康度。它保持公共界面的一致性。
托管 CI 不被信任来证明 CUDA 运行时行为或 benchmark 性能。这些主张需要真实的 GPU 机器。
只有本地 GPU 运行才能证明什么
本地 GPU 运行是以下方面的必要条件:
- 基于 cuBLAS 的运行时正确性检查
- Tensor Core 快速路径与回退行为
- benchmark 数字,包括端到端与纯计算的差异
- 关于占用率、staging 和内存行为的特定架构结论
如何阅读公布的数字
把本仓库中的每个数字视为有范围的证据,而不是普遍承诺。
- 先读 GPU 型号和 CUDA 背景。
- 再读 benchmark 标签。
- 再读 shape 集合。
- 只有这样才能把这个数字与另一个结果进行比较。
如果以上任何字段缺失,这个数字是提示,不是主张。
本项目刻意避免的常见呈现错误
- 在没有 shape、转换和回退说明的情况下声称"Tensor Core 总是更快"。
- 在没有 benchmark 标签或工作负载范围的情况下引用单个 GFLOPS 数字。
- 忽略 FP32 与混合精度之间的数值容差差异。
- 把托管 CI 成功当作 CUDA 运行时正确性或性能的证明。
- 在没有明确标注的情况下跨不同 GPU 型号或 CUDA 版本比较结果。
信任层次结构
最可信
│
▼ [本地 GPU] cuBLAS oracle + ctest 正确性套件
▼ [本地 GPU] 带命名硬件、shape 和标签的 benchmark
▼ [托管 CI] 格式检查、CUDA 编译、结构、文档与工作流检查
▼ [分析性] 性能模型(roofline、代价模型)
▼ [定性] 架构原理与设计论证
│
最难证伪验证章节在顶部两层运作。架构和学院章节在底部两层运作。这种分离是刻意的。