性能模式技能 是做什么的?
一份不断增长的、已知会导致性能问题的代码模式目录,其中包含每种模式的检测信号和解决方案手册。核心模式目录专注于 x86 CPU 代码,并支持 Windows、WSL Linux、原生 Linux 和 CUDA/NVIDIA 环境的平台路由。
在硬件相同的情况下,优化知识是可移植的。不同平台变化的是具体机制:性能分析工具词汇、编译器标志、调试信息格式、同步原语、CPU 特性检测,以及瓶颈是 CPU 主机代码还是 CUDA 设备工作。
步骤 0 — 路由平台
如果用户提到 WSL、Linux、CUDA、NVIDIA、GPU、Nsight、驱动程序/工具包不匹配、容器,或者平台不明确,请先阅读 references/platform-routing.md。
然后加载特定于平台的参考文件:
| 平台 / 症状 | 阅读文件 |
|---|---|
| Windows 原生 C/C++ CPU 性能 | PORTING-NOTES.md |
| WSL Linux CPU 性能 | references/wsl-linux.md,然后 references/linux-native.md |
| 原生 Linux CPU 性能 | references/linux-native.md |
| CUDA/NVIDIA 设置或 GPU 性能 | references/cuda.md |
当环境是问题所在,或者用户未提供足够的工具链/性能分析工具上下文时,在 Windows 上使用 scripts/collect-perf-env.ps1,在 WSL/原生 Linux 内使用 scripts/collect-perf-env.sh。
如何使用本技能
第 1 步 — 根据上下文加载正确的文件
| 上下文 | 阅读此文件 |
|---|---|
| 您拥有 性能分析输出(VTune、AMD uProf、ETW/WPA、perf、火焰图、Nsight 摘要等) | triggers/from-profile.md |
| 您正在 阅读现有源代码 且尚未获得性能分析数据 | triggers/from-source.md |
| 您正在 编写新的 性能敏感的 C/C++ 或 SIMD 代码 | guidelines/new-code.md |
这些触发器文件涵盖了所有相同的模式;它们被分开以便您只加载相关内容。guidelines/new-code.md 是一个编写时清单 — 在生成新代码时加载它而不是触发器文件,用于审查代码,而非审查现有代码。
第 2 步 — 识别匹配的模式
每个触发器文件包含一个紧凑的表格和简要描述 — 足以判断代码或性能分析结果是否匹配已知模式。
第 3 步 — 读取模式详情文件
当匹配到模式时,读取 patterns/ 中相应的文件。不要凭记忆尝试修复。
第 4 步 — 应用修复并验证
遵循模式文件中的逐步说明和验证方法,并应用在步骤 0 中加载的路由文件中的平台特定机制。
多个模式可以同时应用。在选择一个模式之前,检查所有看似合理的匹配项。
可重用的库模块
这些独立的实现指南可供在此技能中工作的任何智能体使用,而不仅仅是在遵循特定模式时。如果需要该功能,请直接加载相关文件。
| 模块 | 提供的内容 |
|---|---|
library/cpu-dispatch.md | 在 Windows 上进行运行时 CPU 特性检测和变体选择。仅限手动函数指针分发 — target_clones 在 PE/COFF 目标上不可用(无 IFUNC)。涵盖 __builtin_cpu_supports、显式 __cpuid/_xgetbv 路径以及每个变体的 __attribute__((target(...)))。供应商中立(Intel + AMD)。当函数有多个需要运行时连接在一起的性能级别实现时使用。 |
patterns/simd-upconversion-impl.md | 用于在 intrinsics 中加倍向量寄存器宽度的完整逐步拉链算法(SSE→AVX2 或 AVX2→AVX-512);AVX-512 累加器模板;转换后检查清单(CPUID 防护、vzeroupper、目标属性)。 |
patterns/fast-crc32c-impl.md | 即用型 CRC32C 库:AVX-512 VPCLMULQDQ 融合、SSE4.2 + PCLMULQDQ 多累加器、纯 C 语言回退方案。包含运行时 CPU 分发包装器。当需要新的 CRC32C 代码或现有实现成为瓶颈时使用。 |
references/platform-routing.md | 在应用模式之前路由 Windows / WSL / 原生 Linux / CUDA 请求。 |
references/cuda.md | CUDA 设置和性能问题排查:驱动程序/工具包可见性、Nsight Systems 与 Nsight Compute 对比、WSL GPU 边界。 |
跨技能集成
性能分析器/数据收集技能在识别出已知模式后可以调用本技能。本技能也可以从源代码、性能分析器片段或环境探测输出中独立工作。
技能状态
已针对 Windows 原生 C/C++ 进行移植和审查,然后扩展了 WSL Linux、原生 Linux 和 CUDA/NVIDIA 环境的路由说明。包含以下核心文件:本 SKILL.md、PORTING-NOTES.md、triggers/from-source.md、triggers/from-profile.md、guidelines/new-code.md、design.md、library/cpu-dispatch.md、CRC32C 库源代码、平台参考、基准测试以及所有模式文件:
parallel-accumulator、missing-vzeroupper、missing-restrictttas、false-sharing、per-cpu-stats、cold-path-annotationcv-thundering-herd、mutex-to-rwlock、simd-sortsimd-upconversion+simd-upconversion-implfast-crc32c+fast-crc32c-impllibrary-version-upgrade
references/library-versions.md 故意将未经核实的第三方 DLL 条目保留在待办表格中;未经原始来源验证和 Windows 测量,不得将其提升为推荐项。