
Ingénierie inverse du dictionnaire d'instructions NVIDIA SASS, audits de noyaux et reconnaissance de motifs à travers les architectures GPU.
Rétro-ingénierie du SASS NVIDIA, des kernels contrôlés aux audits de production.
Article 1 · Article 2 · Base de connaissances · Bibliothèque de motifs · Glossaire des instructions SM120 · Notes sur l'encodage · Commencez ici · Structure du projet · Chapitres sur les tensor-cores · Contribuer
SASS King est un projet systématique de rétro-ingénierie du SASS NVIDIA, le jeu d'instructions natif du GPU émis dans les binaires CUDA compilés. Le projet commence avec le matériel Blackwell grand public SM120 / SM120a et s'étend progressivement vers une bibliothèque complète d'ISA et de motifs multi-architectures.
L'objectif est pratique : aider un ingénieur de kernel à ouvrir un dump SASS, reconnaître les motifs du compilateur, identifier les structures pertinentes pour la performance, et relier le binaire aux décisions d'optimisation au niveau du source.
Le projet a terminé sa phase initiale de bibliothèque de motifs Phase 3 : 29 signatures SASS réutilisables sont maintenant formalisées sous patterns/, avec knowledge/FINDINGS.md conservé comme la trace complète des preuves. La prochaine étape majeure est la Phase 4 : appliquer ces motifs à des kernels de production réels.
| Si vous voulez... | Commencez ici | Puis lisez |
|---|---|---|
| Comprendre le projet en 10 minutes | docs/README.md | docs/START_HERE.md, puis docs/PROJECT_STRUCTURE.md |
| Reproduire les preuves | corpus/README.md | un chapitre conclusion*.md, puis son dump .sass |
| Trouver la source de vérité | knowledge/FINDINGS.md | knowledge/SASS_INSTRUCTIONS_SM120.md, knowledge/encoding/README.md |
| Reconnaître un motif dans un nouveau dump | patterns/README.md | la page patterns/NN-*.md correspondante |
| Démarrer un audit de production | production/README.md | les pages PATTERN-NN correspondantes et les preuves sources |
| Contribuer une correction ou un dump | CONTRIBUTING.md | docs/START_HERE.md |
Le dépôt est organisé comme un pipeline de preuves :
corpus/ kernels contrôlés et preuves SASS brutes
knowledge/ découvertes à l'échelle du projet, notes d'instructions et notes d'encodage
patterns/ signatures d'audit réutilisables de la Phase 3
production/ audits de kernels réels de la Phase 4
Le dernier grand travail public de rétro-ingénierie SASS comparable en esprit a été celui de Jia et al. sur Volta et Turing en 2018. Ampere, Hopper et Blackwell ont considérablement modifié le mélange d'instructions : chemins de copie asynchrones, familles de tensor-cores, instructions de chargement/stockage de matrices, formes MMA éparses et à échelle, et nouveaux flux de registres uniformes.
SASS King comble cette lacune en combinant des micro-kernels contrôlés, la lecture brute du SASS, des sondes d'exécution et des audits de kernels de production.
| Domaine | Statut | Où |
|---|---|---|
| Kernels pédagogiques SM120 | Terminés, kernels 01-12 | corpus/basics/01_vector_add/ à corpus/math_and_spills/12_register_spill/ |
| Études sur les tensor-cores | Terminées, jusqu'au Kernel 25 | corpus/tensor_cores/ |
| Découvertes globales | Source de vérité active | knowledge/FINDINGS.md |
| Glossaire des instructions SM120 | Actif, basé sur des preuves | knowledge/SASS_INSTRUCTIONS_SM120.md |
| Pilotes d'encodage | Commencé avec LDSM, STSM, QMMA | knowledge/encoding/ |
| Validation croisée denvdis | Premier passage terminé ; des lacunes dans les codes de contrôle subsistent | knowledge/DENVDIS_INTEGRATION.md |
| Bibliothèque de motifs | Bibliothèque initiale de la Phase 3 terminée | patterns/ |
| Audits de production | Phase suivante | production/ |
La bibliothèque formelle de motifs est le principal résultat de la Phase 3. Elle transforme les preuves locales des chapitres en signatures d'audit réutilisables, afin qu'un audit puisse citer un motif nommé au lieu de réécrire la piste de recherche complète à chaque fois.
La Phase 3 est considérée comme terminée parce que :
knowledge/FINDINGS.md ;patterns/README.md ;| Famille de motifs | Exemples | Où |
|---|---|---|
| Calcul des tensor-cores | Chaînes d'accumulateurs HMMA, QMMA, OMMA ; métadonnées éparses ; fragments étroits | patterns/02-* à patterns/04-*, patterns/10-*, patterns/21-* |
| Mémoire matricielle et épilogues | LDSM, STSM, pipelines de copie asynchrone, épilogues de réduction REDG | patterns/05-*, patterns/06-*, patterns/07-*, patterns/28-* |
| Flux de contrôle | divergence/reconvergence, back-edges de boucle, sorties prédicatées, pièges froids, CALLs locaux | patterns/08-*, patterns/14-*, patterns/16-*, patterns/26-*, patterns/29-* |
| Mémoire et registres | mémoire globale vectorisée, débordements, mise en mémoire tampon de la mémoire partagée, descripteurs, flux de registres uniformes | patterns/09-*, patterns/11-*, patterns/17-*, patterns/19-*, patterns/20-* |
| Arithmétique et ordonnancement | Fusion FFMA, constantes, chemins lents MUFU, scoreboards, recyclage de durée de vie | patterns/12-*, patterns/18-*, patterns/22-*, patterns/23-*, patterns/24-* |
| Collectifs warp | réductions warp, shuffle/vote/match/sync primitives | patterns/01-*, patterns/25-* |
Chaque page de motif comprend :
Utilisez patterns/README.md comme index orienté audit. Utilisez knowledge/FINDINGS.md lorsque vous avez besoin du contexte de recherche plus long derrière un motif.