성능 패턴 스킬은(는) 무엇을 하나요?
성능 문제를 일으키는 잘 알려진 코드 패턴의 증가하는 카탈로그로, 각 패턴에 대한 탐지 신호와 해결 플레이북을 제공합니다. 핵심 패턴 카탈로그는 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 기능 탐지 및 변형 선택. 수동 함수 포인터 디스패치 전용 — PE/COFF 대상에서는 target_clones를 사용할 수 없음(IFUNC 없음). __builtin_cpu_supports, 명시적 __cpuid/_xgetbv 경로, 변형별 __attribute__((target(...)))를 다룹니다. 벤더 중립적(Intel + AMD). 여러 성능 수준 구현을 런타임에 연결해야 하는 함수가 있을 때 사용하십시오. |
patterns/simd-upconversion-impl.md | 내장 함수에서 벡터 레지스터 너비를 두 배로 늘리는(SSE→AVX2 또는 AVX2→AVX-512) 완전한 단계별 지퍼 알고리즘; AVX-512 누산기 템플릿; 변환 후 체크리스트(CPUID 가드, vzeroupper, target 속성). |
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 항목을
TODO 테이블에 보관합니다. 기본 소스 검증 및 Windows 측정 없이 이를 권장
사항으로 승격하지 마십시오.