
Ingeniería inversa del diccionario de instrucciones NVIDIA SASS, auditorías de kernels y reconocimiento de patrones en todas las arquitecturas de GPU.
Ingeniería inversa de SASS de NVIDIA desde kernels controlados hasta auditorías de producción.
Artículo 1 · Artículo 2 · Base de conocimiento · Biblioteca de patrones · Glosario de instrucciones SM120 · Notas de codificación · Empezar aquí · Estructura del proyecto · Capítulos de núcleos tensoriales · Contribuir
SASS King es un proyecto sistemático de ingeniería inversa para SASS de NVIDIA, el conjunto de instrucciones nativas de la GPU emitidas dentro de los binarios CUDA compilados. El proyecto comienza con hardware Blackwell de consumo SM120 / SM120a y se expande hacia una biblioteca ISA y de patrones completa entre arquitecturas con el tiempo.
El objetivo es práctico: ayudar a un ingeniero de kernels a abrir un volcado SASS, reconocer patrones del compilador, identificar estructuras relevantes para el rendimiento y conectar el binario con decisiones de optimización a nivel de código fuente.
El proyecto ha completado su biblioteca de patrones inicial de la Fase 3: 29 firmas SASS reutilizables ahora están formalizadas en patterns/, con knowledge/FINDINGS.md mantenido como la cadena de evidencia completa. El siguiente paso importante es la Fase 4: aplicar esos patrones a kernels de producción reales.
| Si quieres... | Empieza aquí | Luego lee |
|---|---|---|
| Entender el proyecto en 10 minutos | docs/README.md | docs/START_HERE.md, luego docs/PROJECT_STRUCTURE.md |
| Reproducir la evidencia | corpus/README.md | un capítulo conclusion*.md, luego su volcado .sass |
| Encontrar la fuente de verdad | knowledge/FINDINGS.md | knowledge/SASS_INSTRUCTIONS_SM120.md, knowledge/encoding/README.md |
| Reconocer un patrón en un volcado nuevo | patterns/README.md | la página patterns/NN-*.md correspondiente |
| Iniciar una auditoría de producción | production/README.md | páginas PATTERN-NN correspondientes y evidencia fuente |
| Contribuir con una corrección o volcado | CONTRIBUTING.md | docs/START_HERE.md |
El repositorio está organizado como un pipeline de evidencia:
corpus/ kernels controlados y evidencia SASS en bruto
knowledge/ hallazgos a nivel de proyecto, notas de instrucciones y notas de codificación
patterns/ firmas de auditoría reutilizables de la Fase 3
production/ auditorías de kernels reales de la Fase 4
El último trabajo público amplio de ingeniería inversa de SASS comparable en espíritu fue Jia et al. sobre Volta y Turing en 2018. Ampere, Hopper y Blackwell han cambiado sustancialmente la mezcla de instrucciones: rutas de copia asíncrona, familias de núcleos tensoriales, instrucciones de carga/almacenamiento de matrices, formas MMA dispersas y escaladas, y nuevos flujos de registros uniformes.
SASS King llena ese vacío combinando micro-kernels controlados, lectura directa de SASS, sondas de ejecución y auditorías de kernels de producción.
| Área | Estado | Dónde |
|---|---|---|
| Kernels didácticos SM120 | Completos a través de kernels 01-12 | corpus/basics/01_vector_add/ a corpus/math_and_spills/12_register_spill/ |
| Estudios de núcleos tensoriales | Completos hasta el Kernel 25 | corpus/tensor_cores/ |
| Hallazgos globales | Fuente de verdad activa | knowledge/FINDINGS.md |
| Glosario de instrucciones SM120 | Activo, respaldado por evidencia | knowledge/SASS_INSTRUCTIONS_SM120.md |
| Pilotos de codificación | Iniciados con LDSM, STSM, QMMA | knowledge/encoding/ |
| Validación cruzada con denvdis | Pasada inicial completa; persisten brechas más profundas en códigos de control | knowledge/DENVDIS_INTEGRATION.md |
| Biblioteca de patrones | Biblioteca inicial de la Fase 3 completa | patterns/ |
| Auditorías de producción | Siguiente fase | production/ |
La biblioteca formal de patrones es la principal salida de la Fase 3. Convierte la evidencia local de los capítulos en firmas de auditoría reutilizables, de modo que una auditoría pueda citar un patrón nombrado en lugar de reescribir toda la traza de investigación cada vez.
La Fase 3 se considera completa porque:
knowledge/FINDINGS.md;patterns/README.md;| Familia de patrones | Ejemplos | Dónde |
|---|---|---|
| Cómputo de núcleos tensoriales | Cadenas de acumuladores HMMA, QMMA, OMMA; metadatos dispersos; fragmentos estrechos | patterns/02-* a patterns/04-*, patterns/10-*, patterns/21-* |
| Memoria de matrices y epílogos | LDSM, STSM, pipelines de copia asíncrona, epílogos de reducción REDG | patterns/05-*, patterns/06-*, patterns/07-*, patterns/28-* |
| Flujo de control | divergencia/reconvergencia, bordes de retroceso de bucle, salidas predicadas, trampas frías, CALLs locales | patterns/08-*, patterns/14-*, patterns/16-*, patterns/26-*, patterns/29-* |
| Memoria y registros | memoria global vectorizada, spills, staging en memoria compartida, descriptores, flujo de registros uniformes | patterns/09-*, patterns/11-*, patterns/17-*, patterns/19-*, patterns/20-* |
| Aritmética y planificación | Fusión FFMA, constantes, caminos lentos MUFU, scoreboards, reciclaje de vida útil | patterns/12-*, patterns/18-*, patterns/22-*, patterns/23-*, patterns/24-* |
| Colectivos de warp | reducciones warp, primitivas shuffle/vote/match/sync | patterns/01-*, patterns/25-* |
Cada página de patrón incluye:
Usa patterns/README.md como el índice orientado a auditoría. Usa knowledge/FINDINGS.md cuando necesites el contexto de investigación más largo detrás de un patrón.