Skip to content
Warp 1.9 ships with a rewritten marching cubes implementation, compatibility with the CUDA 13 toolkit, and new functions for ahead-of-time module compilation. The programming model has also been en...
Source: github.com

Warp 1.9 Lançado: Suporte CUDA 13.0, Módulos AOT e Marching Cubes totalmente Warp

Sources: https://github.com/NVIDIA/warp/releases/tag/v1.9.0, https://github.com/NVIDIA/warp/releases/tag/v1.9.0#new_tab, NVIDIA Dev Blog

TL;DR

  • Warp 1.9 traz compatibilidade com o toolkit CUDA 13.0, um pipeline de Marching Cubes totalmente Warp e corrigindo um bug de deslocamento há muito tempo identificado.
  • Novas ferramentas AOT permitem compilação de módulos ahead-of-time com wp.compile_aot_module() e wp.load_aot_module(), incluindo strip_hash=True para distribuir módulos pré-compilados sem enviar o código-fonte.
  • O modelo de programação ganha indexação mais flexível para tipos compostos, suporte direto a IntEnum/IntFlag, alocação de arrays locais dentro de kernels com wp.zeros() e três novas operações de tile indexadas para padrões avançados de acesso à memória.
  • A captura de gráfico CUDA agora tem suporte total para solucionadores, com convergência no lado do dispositivo via wp.capture_while() e opções para escolha entre verificação no host ou no dispositivo.
  • Melhorias contínuas abrangem warp.sparse, warp.fem e suporte mais amplo para execução em tiles, com heurísticas automáticas e overrides manuais através de tile_size.

Contexto e antecedentes

Warp continua evoluindo como uma estrutura de programação GPU baseada em Python, voltada para kernels de alto desempenho em CPU e GPU. A versão v1.9 alinha o Warp com o toolkit CUDA 13.x e amplia as capacidades de AOT para facilitar a distribuição de artefatos pré-compilados. Um destaque importante é a implementação reescrita de Marching Cubes em Warp, transformando uma implementação anterior em CUDA C++ para Warp, executável em CPU e GPU. Essa mudança também resolve um problema antigo de deslocamento, reforçando o compromisso do Warp com correção e portabilidade. Para avaliadores da evolução do ecossistema CUDA, o CUDA Toolkit 13.0 foi lançado no começo de agosto, e o Warp oferece opções de compatibilidade para facilitar upgrades e requisitos de driver. Consulte as notas do lançamento para detalhes.

O que há de novo

Warp 1.9 traz um conjunto amplo de melhorias e capacidades novas. As mudanças mais visíveis incluem a reescrita do Marching Cubes em Warp, compatibilidade com CUDA 13.0 e um conjunto de melhorias AOT. Além do trabalho principal, a atualização oferece indexação mais flexível para tipos compostos, suporte direto a IntEnum e IntFlag dentro de funções e kernels Warp, além da capacidade de alocar arrays locais em kernels usando wp.zeros(), com esses arrays armazenados em registradores para acesso rápido. A implementação de Marching Cubes é totalmente diferenciável e contribuída pela comunidade, permitindo que rode inteiramente em Warp em CPU e GPU. A nova funcionalidade AOT introduz wp.compile_aot_module() e wp.load_aot_module(), com a opção strip_hash=True que remove hashes únicos de nomes de módulos para distribuir artefatos pré-compilados sem código Python. AOT e implantação

  • wp.compile_aot_module() e wp.load_aot_module()
  • strip_hash=True para remover hashes de nomes ao distribuir módulos pré-compilados
  • Documentação descrevendo fluxos de AOT e planos de expansão futura Modelos e melhorias de linguagem
  • Indexação mais flexível para tipos compostos (vetores, matrizes, quaternions, transforms)
  • Suporte direto a IntEnum e IntFlag dentro de funções e kernels
  • Visualizações no kernel que suportam formas dinâmicas e tipos de struct via atributo ptr
  • wp.zeros() permite alocar arrays locais de tamanho fixo em registradores
  • Três novas operações de tile indexadas para carregar, armazenar e operações atômicas com mapeamento de índice personalizado
  • Suporte adequado à escrita em elementos de matriz contidos em campos de struct Algoritmos e desempenho
  • Implementação de Marching Cubes totalmente diferenciável em Warp
  • Solvers iterativos (CG, BiCGSTAB, GMRES) compatíveis com captura de CUDA graph; convergência no lado do dispositivo com wp.capture_while()
  • warp.sparse suporta blocos de tamanho arbitrário e operações baseadas em tile com heurísticas para escolher entre execução tileada e não tileada
  • warp.fem.integrate usa tiling de memória para acumulação de quadratura com seleção automática de tamanho de tile Notas de estabilidade, testes e observações
  • Testes iniciais no NVIDIA Jetson Thor indicaram possivelmente falhas de segmentação ao iniciar kernels de CPU; kernels de GPU não são afetados. Resolução sugerida envolve construir Warp a partir do código-fonte com LLVM/Clang v18+.
  • Funcionalidades depreciadas em lançamentos anteriores serão removidas na v1.10 (início de novembro)
  • O release agradece contribuições da comunidade e orienta para o v1.9.0 no CHANGELOG.md para uma lista completa de mudanças Compatibilidade e transição
  • Compatibilidade com CUDA Toolkit 13.0: duas opções: rodas Warp compiladas com CUDA 12.8 podem rodar em drivers CUDA 13.x por compatibilidade direta, ou construir com CUDA 13.x para Warp
  • Distribuições PyPI de Warp continuarão a ser construídas com CUDA 12.8 durante o período de transição
  • As notas do release destacam planos contínuos para ampliar fluxos de AOT em atualizações futuras Referências e fontes
  • A página oficial de notas de lançamento e detalhes está disponível em: https://github.com/NVIDIA/warp/releases/tag/v1.9.0#new_tab

Por que isso importa (impacto para desenvolvedores/empresas)

Para desenvolvedores, o Warp 1.9 reduz as barreiras para distribuir kernels de alto desempenho ao permitir fluxos AOT e a distribuição de módulos pré-compilados sem expor o código-fonte. A compatibilidade com CUDA 13.0 reduz atrito para equipes que atualizam GPUs e drivers, mantendo, ao mesmo tempo, a compatibilidade com wheels construídas para CUDA 12.8. A implementação do Marching Cubes em Warp abre possibilidades para pipelines de renderização diferenciável e visualização volumétrica executados com eficiência em CPU e GPU. Os avanços em indexação, memória dentro do kernel e novas operações de tile oferecem maior controle sobre comportamento de memória e características de desempenho em cenários com matrizes esparsas e métodos de elementos finitos. Do ponto de vista de engenharia, os aprimoramentos em AOT refletem uma tendência da indústria rumo à compilação offline e distribuição de kernels pré-construídos, o que pode simplificar empacotamento de software e melhorar a latência de inicialização em ambientes de produção. A combinação de recursos—preparo para CUDA 13.0, fluxos AOT, uso de memória local mais flexível, e suporte sólido a graph capture—solidifica o Warp como uma plataforma flexível para pesquisadores e engenheiros que buscam otimizar desempenho em implantações de CPU e GPU.

Detalhes técnicos ou Implementação

| Área | Itens-chave | Observações |---|---|---| | Marching Cubes | Reescrito em Warp; totalmente diferenciável; execução em CPU e GPU | Substitui implementação anterior em CUDA C++; corrige o bug de deslocamento (#324) |AOT | wp.compile_aot_module(), wp.load_aot_module() | strip_hash=True para distribuir artefatos pré-compilados sem código-fonte |Toolkit CUDA | Compatibilidade CUDA 13.0; wheels com CUDA 12.8 durante a transição | Caminhos duais de implantação para drivers |Indexação e tipos | Indexação flexível para tipos compostos; suporte direto a IntEnum/IntFlag | Visões no kernel dinâmicas, tipos de struct via ptr |Arrays locais | wp.zeros() em kernels | Alocação em registradores para velocidade |Operações de tile | Três novas operações de tile indexadas | Padrões de acesso à memória mais avançados |Sparse e FEM | warp.sparse com blocos de tamanho arbitrário; warp.fem.integrate com tiling | Tuning automático com opção de override tile_size |Graph capture | Solvers iterativos compatíveis com CUDA graph; convergência no dispositivo via wp.capture_while() | Suporte total a graph capture |Estabilidade | Possível falha de segmentação no CPU kernels em Jetson Thor | Resolver com LLVM/Clang v18+; GPUs não afetados |Deprecações | Funcionalidades antigas serão removidas na v1.10 | Roteiro de evolução informado |

Pontos-chave para levar adiante

  • Warp 1.9 avança na prontidão com CUDA 13.0 e habilita fluxos AOT com distribuição de módulos pré-compilados sem código-fonte.
  • Marching Cubes totalmente em Warp facilita pipelines de renderização diferenciável em CPU/GPU.
  • Novos recursos de memória e tile access ampliam a flexibilidade de kernels em matrizes esparsas e FE.
  • A captura de graph CUDA mais abrangente reduz overheads e melhora a reprodutibilidade de cenários computacionais complexos.
  • A transição de CUDA 12.8 para CUDA 13.x permanece suave, com opções de compatibilidade de driver e rotas de build.

FAQ

  • Qual é o foco principal do Warp 1.9?

    Compatibilidade com CUDA 13.0, implementação Marching Cubes totalmente em Warp, e fluxos AOT com suporte a distribuição de módulos pré-compilados.

  • Como usar AOT em Warp 1.9?

    Use wp.compile_aot_module() para compilar e wp.load_aot_module() para carregar módulos pré-compilados; a opção strip_hash=True permite distribuir artefatos sem o código Python.

  • CUDA 13.0 é suportado plenamente?

    Sim, com duas opções: rodas Warp para CUDA 12.8 rodam em drivers CUDA 13.x graças à compatibilidade reversa, ou compilar contra CUDA 13.x para Warp.

  • O que mudou na captura de graph e convergência?

    Solvers iterativos são totalmente compatíveis com CUDA graph, e a convergência no lado do dispositivo pode ser verificada com wp.capture_while().

  • Existem problemas conhecidos?

    Testes iniciais em Jetson Thor indicaram falhas de segmentação ao iniciar kernels de CPU; recomenda-se usar LLVM/Clang v18+ ao construir Warp a partir do código-fonte.

Referências

More news