Skill für Leistungsmuster
Ein wachsender Katalog bekannter Codemuster, die Leistungsprobleme verursachen, mit Erkennungssignalen und Lösungsanleitungen für jedes Muster. Der Kernkatalog konzentriert sich auf x86-CPU-Code, mit einer Plattform-Routing für Windows, WSL Linux, natives Linux und CUDA/NVIDIA-Umgebungen.
Das Optimierungswissen ist portabel, wenn die Hardware identisch ist. Was sich je nach Plattform ändert, sind die Mechanismen: Profiler-Vokabular, Compiler-Flags, Debug-Info-Format, Synchronisationsprimitive, CPU-Feature-Erkennung und ob der Engpass auf CPU-Host-Code oder CUDA-Device-Arbeit liegt.
Schritt 0 — Plattform routen
Wenn der Benutzer WSL, Linux, CUDA, NVIDIA, GPU, Nsight, Treiber-/Toolkit-Konflikte,
Container erwähnt oder die Plattform unklar ist, bitte zuerst
references/platform-routing.md lesen.
Dann die plattformspezifische Referenz laden:
| Plattform / Symptom | Lesen |
|---|---|
| Windows nativ C/C++ CPU-Leistung | PORTING-NOTES.md |
| WSL Linux CPU-Leistung | references/wsl-linux.md, dann references/linux-native.md |
| Natives Linux CPU-Leistung | references/linux-native.md |
| CUDA/NVIDIA Einrichtung oder GPU-Leistung | references/cuda.md |
Verwenden Sie scripts/collect-perf-env.ps1 unter Windows und
scripts/collect-perf-env.sh in WSL/nativem Linux, wenn die Umgebung das
Problem ist oder der Benutzer nicht genügend Toolchain-/Profiler-Kontext bereitgestellt hat.
So verwenden Sie dieses Skill
Schritt 1 — Die richtige Datei für Ihren Kontext laden
| Kontext | Diese Datei lesen |
|---|---|
| Sie haben Profiling-Ausgaben (VTune, AMD uProf, ETW/WPA, perf, Flamegraph, Nsight-Zusammenfassung usw.) | triggers/from-profile.md |
| Sie lesen vorhandenen Quellcode und haben noch keine Profiling-Daten | triggers/from-source.md |
| Sie schreiben neuen leistungskritischen C/C++- oder SIMD-Code | guidelines/new-code.md |
Die Trigger-Dateien decken alle dieselben Muster ab; sie sind getrennt, damit Sie nur
das Relevante laden. guidelines/new-code.md ist eine Checkliste für das Schreiben –
laden Sie sie anstelle einer Trigger-Datei, wenn Sie neuen Code generieren, nicht überprüfen.
Schritt 2 — Das passende Muster identifizieren
Jede Trigger-Datei enthält eine kompakte Tabelle und kurze Beschreibungen – genug, um zu entscheiden, ob der Code oder das Profil mit einem bekannten Muster übereinstimmt.
Schritt 3 – Die detaillierte Pattern-Datei lesen
Wenn ein Muster zutrifft, lesen Sie die entsprechende Datei aus patterns/. Versuchen Sie
nicht, die Lösung aus dem Gedächtnis umzusetzen.
Schritt 4 — Die Lösung anwenden und verifizieren
Folgen Sie den Schritt-für-Schritt-Anweisungen und der Verifikationsmethode in der Pattern-Datei, unter Verwendung der Plattformmechanik aus der in Schritt 0 geladenen Routing-Datei.
Mehrere Muster können gleichzeitig zutreffen. Prüfen Sie alle plausiblen Übereinstimmungen, bevor Sie sich für eines entscheiden.
Wiederverwendbare Bibliotheksmodule
Diese eigenständigen Implementierungsanleitungen stehen jedem Agenten zur Verfügung, der in diesem Skill arbeitet – nicht nur bei der Verfolgung eines bestimmten Musters. Laden Sie die relevante Datei direkt, wenn die Fähigkeit benötigt wird.
| Modul | Bereitgestellte Funktionen |
|---|---|
library/cpu-dispatch.md | Laufzeit-CPU-Feature-Erkennung und Variantenauswahl unter Windows. Nur manuelle Funktionszeiger-Dispatch – target_clones ist auf dem PE/COFF-Ziel nicht verfügbar (kein IFUNC). Behandelt __builtin_cpu_supports, den expliziten __cpuid/_xgetbv-Pfad und __attribute__((target(...))) pro Variante. Anbieterneutral (Intel + AMD). Verwenden Sie dies, wenn eine Funktion mehrere leistungsbezogene Implementierungen hat, die zur Laufzeit zusammengeschaltet werden müssen. |
patterns/simd-upconversion-impl.md | Vollständiger Schritt-für-Schritt-Reißverschluss-Algorithmus zur Verdoppelung der Vektorregisterbreite in Intrinsics (SSE→AVX2 oder AVX2→AVX-512); AVX-512-Akkumulator-Vorlage; Checkliste nach der Transformation (CPUID-Guards, vzeroupper, Zielattribute). |
patterns/fast-crc32c-impl.md | Fertige CRC32C-Bibliothek: AVX-512 VPCLMULQDQ-Fusion, SSE4.2 + PCLMULQDQ-Multi-Akkumulator, einfacher C-Fallback. Inklusive Laufzeit-CPU-Dispatch-Wrapper. Verwenden Sie dies, wenn neuer CRC32C-Code benötigt wird oder eine vorhandene Implementierung den Engpass darstellt. |
references/platform-routing.md | Routing für Windows / WSL / natives Linux / CUDA-Anfragen vor Anwendung eines Musters. |
references/cuda.md | CUDA-Setup und Leistungs-Triage: Treiber-/Toolkit-Sichtbarkeit, Nsight Systems vs. Nsight Compute, WSL-GPU-Grenzen. |
Skill-übergreifende Integration
Profiling-/Datenerfassungs-Skills können dieses Skill aufrufen, nachdem sie ein bekanntes Muster identifiziert haben. Dieses Skill funktioniert auch eigenständig anhand von Quellcode, Profiler-Ausschnitten oder Ausgaben der Umgebungsabfrage.
Skill-Status
Ported und überprüft für Windows nativ C/C++, dann erweitert mit Routing-Hinweisen für
WSL Linux, natives Linux und CUDA/NVIDIA-Umgebungen. Die folgenden Kern-Dateien sind
vorhanden: diese SKILL.md, PORTING-NOTES.md,
triggers/from-source.md, triggers/from-profile.md, guidelines/new-code.md,
design.md, library/cpu-dispatch.md, CRC32C-Bibliotheksquellen, Plattformreferenzen,
Benchmark-Tests und alle Pattern-Dateien:
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 enthält absichtlich ungeprüfte Drittanbieter-DLL-Einträge
in einer TODO-Tabelle; diese nicht ohne primäre Quellenverifikation und Windows-Messung zu
Empfehlungen erheben.