Se você trabalha com IA ou computação científica em um MacBook, conhece a dor: ventiladores gritando, CPU no limite, enquanto o mesmo código termina em segundos na GPU de um servidor. O que você precisa não é de um notebook novo — é fazer a GPU do Apple Silicon realmente funcionar.
Ontem, a plataforma de computação de código aberto OpenFPM anunciou progresso em uma publicação no X: código de computação de alto desempenho escrito para NVIDIA CUDA rodou diretamente na GPU Metal de um M3 Pro com quase nenhuma alteração nos kernels, alcançando cerca de 10× de aceleração em uma simulação de fluidos 3D (6 segundos na GPU contra 60 na CPU), com utilização de GPU próxima de 100%.
Ainda mais notável: o GPT-5.6 Sol participou de todo o processo de depuração multiplataforma — passando cerca de seis horas localizando vários problemas de compatibilidade no MoltenVK e no SPIR-V e projetando as soluções alternativas. Este é um marco em computação em GPU e um excelente estudo de caso de engenharia de sistemas de baixo nível assistida por IA.
O público desse resultado é maior do que parece. Uma enorme quantidade de computação científica, prototipagem e até inferência em produção hoje acontece em laptops Apple — as mesmas máquinas que as pessoas levam para reuniões — enquanto as GPUs que poderiam acelerar tudo isso ficam em um datacenter ou em uma lista de desejos. Todo fluxo de trabalho que hoje consome CPU em um Mac é um candidato a esse pipeline, e o fato de o código da aplicação nunca precisar saber do Metal significa que o custo de migração se mede em instalação de dependências, não em reescritas. Essa é a diferença entre uma demonstração de pesquisa e algo que as equipes vão realmente adotar.
A Ideia Central: um Pipeline Multiplataforma Transparente
A equipe do OpenFPM não reescreveu os kernels de GPU para o Apple Metal. Eles construíram um pipeline de tradução em várias camadas que converte o código existente no estilo CUDA/HIP camada por camada até executá-lo com eficiência no Metal:
CUDA/HIP kernel source
↓
Clang/HIP compiler (kernel semantics preserved)
↓
SPIR-V intermediate representation (portable GPU IR)
↓
Vulkan API calls
↓
MoltenVK (Vulkan → Metal translation layer)
↓
Apple Metal GPU (M3 Pro and other Apple Silicon)
O valor central: a camada de aplicação nunca toca em APIs específicas do Metal. Armazenamento de partículas, busca de vizinhos e operações de redução mantêm suas chamadas de kernel originais no estilo CUDA/HIP. Código depurado no seu Mac é implantado sem alterações em clusters de GPU e escala automaticamente.
Os Detalhes de Engenharia que Fizeram a Diferença
1. Layout de memória do dispositivo (o trabalho pesado foi do GPT-5.6 Sol)
O modelo de memória do Apple Metal difere fundamentalmente do do CUDA. O GPT-5.6 Sol ajudou a construir o layout de memória no lado do dispositivo e, em particular, lidou com a falta de floats de dupla precisão de 64 bits no Metal — por meio da flag de compilação -cl-single-precision-constant, todos os kernels passam a usar constantes de precisão simples de forma uniforme, eliminando uma pilha de gambiarras de compatibilidade que seguravam o projeto.
2. Adaptação do CMake: a ABI de kernels do MoltenVK
O arquivo cmake/MoltenVKKernelABI.cpp do projeto contém código de adaptação de ABI gerado por IA. Os desenvolvedores que revisaram sugerem movê-lo para src/spirv_molten/ para manter a árvore limpa. Para reproduzir esse caminho, instale as seguintes dependências:
# Required dependencies
- chipstar (GPU compiler front end)
- clspv (OpenCL C to SPIR-V compiler)
- MoltenVK (Vulkan to Metal translation)
- LLVM (build adaptation tooling)
3. O problema da decoração Volatile
O MoltenVK não respeita a decoração Volatile no SPIR-V, o que permite a reordenação de loads/stores e quebra a correção das operações atômicas. O GPT-5.6 Sol encontrou o problema, projetou uma solução alternativa na camada SPIR-V e recomendou subir um caso de reprodução para o projeto MoltenVK upstream. Vale destacar como a depuração de fato ocorreu: em vez de adivinhar sintomas, o modelo isolou uma lacuna de conformidade com a especificação em uma camada de tradução específica, construiu uma reprodução mínima e propôs tanto uma correção local quanto um relatório upstream. Esse é o padrão de trabalho de um engenheiro de sistemas, executado em velocidade de máquina — e é a evidência mais clara até agora de que a assistência por IA alcança até a camada de IR, e não apenas o código da aplicação.
O Verdadeiro Teste: uma Simulação 3D de Ruptura de Barragem com SPH
Uma demo de soma de vetores não prova nada. A equipe escolheu uma carga de trabalho real de computação científica: simulação 3D de hidrodinâmica de partículas suavizadas (SPH) de ruptura de barragem, exercitando os módulos de GPU que importam:
-
Prefix sum (scan)
-
Ordenação e permutação
-
Construção de cell list e lista de vizinhos
-
Troca de partículas fantasma (halo exchange estilo MPI na GPU)
-
Reduções
-
Operações atômicas
Desempenho no M3 Pro:
| Backend | Runtime | Speedup |
|---|---|---|
| CPU sequential | ~60 s | 1× |
| Metal GPU (this pipeline) | ~6 s | 10× |
A utilização da GPU ficou próxima de 100%, e a física — parâmetros-chave e trajetórias das partículas — correspondeu de perto à versão CUDA original. A aceleração não custou precisão.
A escolha do benchmark merece tanta atenção quanto o número. A ruptura de barragem em SPH é uma carga de trabalho hostil por natureza: combina acesso irregular à memória, uso intenso de operações atômicas, ordenação em múltiplas etapas e comunicação de borda — precisamente os padrões que expõem fraquezas da camada de tradução. Um pipeline que sobrevive a isso passou por um teste muito mais rigoroso do que qualquer benchmark sintético de kernels, e a concordância quase perfeita com a referência CUDA nas saídas físicas sugere que a tradução é semanticamente fiel, e não apenas rápida.
Conselhos Práticos
-
Pré-processe seus kernels: use
-cl-single-precision-constantpara unificar a precisão — isso contorna a maior lacuna do Metal, a de 64 bits. -
Depure localmente, implante o mesmo código em clusters. Este é o grande trunfo do pipeline: ajuste em pequena escala no seu Mac (menos de um milhão de partículas) e depois envie o código intocado para clusters de GPU para execuções em escala real.
-
Atente-se aos limites: áreas dependentes de dupla precisão — previsão do tempo, simulação aeroespacial — permanecem fora de alcance no Apple Metal por enquanto.
-
Escalonamento multi-máquina no horizonte: RDMA sobre Thunderbolt da Apple poderia viabilizar balanceamento dinâmico de carga entre máquinas.
Recursos
Computação em GPU multiplataforma é um sonho de longa data, e esse caminho de implementação — tradução de IR em várias camadas em vez de reescritas — é uma receita de engenharia acionável. Com um assistente da classe do GPT-5.6 caçando problemas de compatibilidade do SPIR-V por baixo, depurações que levavam semanas agora levam seis horas. Experimente o caminho no seu próprio hardware Apple Silicon; o próximo fluxo de trabalho a ser acelerado pode ser o seu.