
Engenharia reversa do dicionário de instruções SASS da NVIDIA, auditorias de kernel e reconhecimento de padrões em todas as arquiteturas de GPU.
Engenharia reversa do SASS da NVIDIA desde kernels controlados até auditorias de produção.
Artigo 1 · Artigo 2 · Base de conhecimento · Biblioteca de padrões · Glossário de instruções SM120 · Notas de codificação · Comece por aqui · Estrutura do projeto · Capítulos de tensor-core · Contribuindo
SASS King é um projeto sistemático de engenharia reversa do SASS da NVIDIA, o conjunto de instruções nativas da GPU emitido dentro de binários CUDA compilados. O projeto começa com hardware Blackwell de consumo SM120 / SM120a e expande em direção a uma biblioteca completa de ISA e padrões entre arquiteturas ao longo do tempo.
O objetivo é prático: ajudar um engenheiro de kernel a abrir um dump SASS, reconhecer padrões do compilador, identificar estruturas relevantes para desempenho e conectar o binário de volta às decisões de otimização no nível do código-fonte.
O projeto concluiu sua biblioteca de padrões inicial da Fase 3: 29 assinaturas SASS reutilizáveis agora estão formalizadas em patterns/, com knowledge/FINDINGS.md mantida como trilha de evidências completa. O próximo grande passo é a Fase 4: aplicar esses padrões a kernels reais de produção.
| Se você quiser... | Comece por aqui | Depois leia |
|---|---|---|
| Entender o projeto em 10 minutos | docs/README.md | docs/START_HERE.md, depois docs/PROJECT_STRUCTURE.md |
| Reproduzir as evidências | corpus/README.md | um capítulo conclusion*.md, depois seu dump .sass |
| Encontrar a fonte da verdade | knowledge/FINDINGS.md | knowledge/SASS_INSTRUCTIONS_SM120.md, knowledge/encoding/README.md |
| Reconhecer um padrão em um novo dump | patterns/README.md | a página correspondente patterns/NN-*.md |
| Iniciar uma auditoria de produção | production/README.md | páginas PATTERN-NN correspondentes e evidências de origem |
| Contribuir com uma correção ou dump | CONTRIBUTING.md | docs/START_HERE.md |
O repositório está organizado como um pipeline de evidências:
corpus/ kernels controlados e evidências SASS brutas
knowledge/ descobertas do projeto, notas de instruções e notas de codificação
patterns/ assinaturas de auditoria reutilizáveis da Fase 3
production/ auditorias de kernels reais da Fase 4
O último trabalho público amplo de engenharia reversa do SASS comparável em espírito foi Jia et al. sobre Volta e Turing em 2018. Ampere, Hopper e Blackwell mudaram substancialmente o mix de instruções: caminhos de cópia assíncrona, famílias de tensor-core, instruções de load/store de matriz, formas MMA esparsas e escalonadas e novos fluxos de registradores uniformes.
SASS King preenche essa lacuna combinando micro-kernels controlados, leitura bruta de SASS, sondas de tempo de execução e auditorias de kernels de produção.
| Área | Status | Onde |
|---|---|---|
| Kernels de ensino SM120 | Completos até kernels 01-12 | corpus/basics/01_vector_add/ a corpus/math_and_spills/12_register_spill/ |
| Estudos de tensor-core | Completos até Kernel 25 | corpus/tensor_cores/ |
| Descobertas globais | Fonte ativa da verdade | knowledge/FINDINGS.md |
| Glossário de instruções SM120 | Ativo, baseado em evidências | knowledge/SASS_INSTRUCTIONS_SM120.md |
| Pilotamentos de codificação | Iniciado com LDSM, STSM, QMMA | knowledge/encoding/ |
| Validação cruzada denvdis | Primeira passada completa; lacunas mais profundas de código de controle permanecem | knowledge/DENVDIS_INTEGRATION.md |
| Biblioteca de padrões | Biblioteca inicial da Fase 3 completa | patterns/ |
| Auditorias de produção | Próxima fase | production/ |
A biblioteca formal de padrões é o principal resultado da Fase 3. Ela transforma as evidências locais dos capítulos em assinaturas de auditoria reutilizáveis, para que uma auditoria possa citar um padrão nomeado em vez de reescrever toda a trilha de pesquisa a cada vez.
A Fase 3 é considerada concluída porque:
knowledge/FINDINGS.md;patterns/README.md;| Família de padrões | Exemplos | Onde |
|---|---|---|
| Computação de tensor-core | Cadeias de acumuladores HMMA, QMMA, OMMA; metadados esparsos; fragmentos estreitos | patterns/02-* a patterns/04-*, patterns/10-*, patterns/21-* |
| Memória de matriz e epílogos | LDSM, STSM, pipelines de cópia assíncrona, epílogos de redução REDG | patterns/05-*, patterns/06-*, patterns/07-*, patterns/28-* |
| Fluxo de controle | divergência/reconvergência, arestas de retorno de loop, saídas predicadas, armadilhas frias, CALLs locais | patterns/08-*, patterns/14-*, patterns/16-*, patterns/26-*, patterns/29-* |
| Memória e registradores | memória global vetorizada, spills, staging em memória compartilhada, descritores, fluxo de registradores uniformes | patterns/09-*, patterns/11-*, patterns/17-*, patterns/19-*, patterns/20-* |
| Aritmética e escalonamento | Fusão FFMA, constantes, caminhos lentos MUFU, scoreboards, reciclagem de tempo de vida | patterns/12-*, patterns/18-*, patterns/22-*, patterns/23-*, patterns/24-* |
| Coletivos de warp | reduções warp, shuffle/vote/match/sync primitivas | patterns/01-*, patterns/25-* |
Cada página de padrão inclui:
Use patterns/README.md como o índice voltado para auditoria. Use knowledge/FINDINGS.md quando precisar do contexto de pesquisa mais longo por trás de um padrão.
A Fase 3 não afirma que todo comportamento do SASS da NVIDIA está decodificado. Ela estabelece uma camada de padrão SM120 / SM120a reutilizável suficientemente boa para iniciar auditorias manuais de produção. O decodificação de layout em tempo de execução, o posicionamento completo de bits de código de controle, a geração automatizada de relatórios cubin e a reprodução entre arquiteturas permanecem como trabalho futuro.