6 pontos por GN⁺ 2024-02-13 | 2 comentários | Compartilhar no WhatsApp

AMD apoiou discretamente uma implementação de CUDA sobre ROCm e a lançou como código aberto

  • A AMD vem trabalhando há vários anos para permitir que bases de código voltadas à API CUDA da NVIDIA possam rodar em HIP/ROCm.
  • Apesar desses esforços, isso não era uma boa solução (simples, imediata e com desempenho garantido) para quem buscava desempenho ideal.
  • Nos últimos dois anos, a AMD vem apoiando discretamente um projeto para fornecer compatibilidade binária em nível de biblioteca, permitindo que muitos aplicativos NVIDIA CUDA rodem sobre a pilha AMD ROCm sem alterações no código-fonte.

ZLUDA: suporte a CUDA para gráficos Intel

  • Alguns anos atrás, um projeto chamado ZLUDA foi iniciado para oferecer suporte a CUDA em gráficos Intel, mas foi interrompido por motivos pessoais.
  • O desenvolvedor do ZLUDA, Andrzej Janik, recebeu da AMD em 2022 um contrato para adaptar o ZLUDA ao uso de HIP/ROCm em GPUs AMD.
  • Nos últimos dois anos, Janik implementou o ZLUDA em GPUs Radeon, permitindo que muitos softwares CUDA rodem em HIP/ROCm sem modificações.

Código aberto do ZLUDA

  • A AMD decidiu encerrar o financiamento deste projeto neste ano e não lançá-lo como produto de software.
  • No entanto, havia uma cláusula no fim do contrato permitindo que Janik publicasse o trabalho como código aberto.
  • Janik ofereceu acesso para testar e executar benchmarks desta nova implementação do ZLUDA.

Limitações da implementação do ZLUDA e código aberto

  • A implementação do ZLUDA não é 100% segura, com suporte incompleto ao NVIDIA OptiX e sem lidar atualmente com softwares que não usam código assembly PTX, entre outras limitações.
  • Na maioria dos casos, esta implementação é surpreendentemente capaz para o trabalho de um único desenvolvedor.
  • O código aberto é licenciado de forma dupla sob as licenças Apache 2.0 ou MIT.
  • A linguagem de programação Rust foi usada para esta implementação para Radeon.

Opinião do GN⁺

  • Este artigo apresenta um projeto que a AMD apoiou discretamente para oferecer compatibilidade com CUDA, o que pode ser uma grande contribuição para a comunidade de código aberto.
  • O ZLUDA é um avanço importante por permitir que desenvolvedores executem aplicativos CUDA na plataforma AMD sem alterar o código-fonte.
  • Esses esforços dão aos usuários de GPUs AMD acesso a um ecossistema de software mais amplo, e é especialmente interessante ver o uso de uma linguagem moderna como Rust.

2 comentários

 
bbulbum 2024-02-13

Nvidia, vai se foder!

 
GN⁺ 2024-02-13
Opinião do Hacker News
  • O ZLUDA foi publicado como código aberto depois que a AMD encerrou o financiamento

    • Após dois anos de desenvolvimento, a AMD decidiu que executar aplicativos CUDA em GPUs AMD não tinha viabilidade de negócio.
    • Pelos termos do contrato, o ZLUDA poderia ser aberto caso a AMD julgasse inadequado continuar o desenvolvimento.
  • Menção à CUDA Dark API

    • A CUDA Dark API é composta por funções não documentadas, e não se sabe ao certo quantas são.
    • Aplicativos comuns usam uma ou duas das funções mais frequentes.
    • Como não se conhecem os nomes nem os tipos de argumentos dessas funções, a implementação consome muito tempo.
    • O ZLUDA fez engenharia reversa e implementou esses casos individualmente após observar aplicativos usando essas funções.
  • Opiniões torcendo para que a AMD quebre o monopólio do CUDA

    • Uma camada de tradução tem a vantagem de tornar o hardware mais viável imediatamente e pode acelerar a adoção.
    • Porém, existe o risco de os desenvolvedores não oferecerem suporte ao ROCm e usarem apenas a camada de tradução.
    • O Proton+DXVK teve um efeito positivo nos jogos no Linux, mas extrair desempenho de computação em GPU exige otimização para arquiteturas específicas.
    • A AMD precisa fazer alguma coisa para ser competitiva no mercado.
  • Relato de experiência sobre a tentativa de rodar Stable Diffusion em uma GPU AMD e as dificuldades encontradas

    • Não houve problema para instalar o ROCm e reconhecer a GPU, mas como o ecossistema de ML está concentrado na Nvidia, foi difícil instalar coisas como PyTorch.
    • No fim, o modelo até carregou, mas o software não conseguiu gerar sequer uma imagem antes de derrubar a sessão gráfica.
    • Essa experiência despertou novamente a vontade de comprar uma GPU Nvidia.
  • Alguns anos depois de o Blender abandonar o OpenCL e adotar um backend CUDA, ele adicionou um backend Radeon HIP, mas foi constatado que usar ZLUDA + backend CUDA é ligeiramente mais rápido do que o backend Radeon HIP.

  • A decisão da AMD de parar de financiar este projeto parece incompreensível.

    • CUDA-on-ROCm pode quebrar o monopólio da NVIDIA e também servir para desestimular mudanças arbitrárias da NVIDIA no CUDA.
    • Quando você não é o líder do mercado, precisa seguir o padrão de fato para competir em valor real, além de criar e adotar padrões verdadeiramente abertos.
  • Pergunta relacionada à notícia de que a Nvidia teria burlado a verificação de driver sob licença GPL no kernel

    • Houve notícia de que, no kernel 6.6, o driver seria bloqueado se a Nvidia não corrigisse isso, mas não houve resposta da Nvidia.
    • A pessoa está usando atualmente o kernel 6.7.4 e viu informações confusas sobre se a Nvidia resolveu o problema ou se o bloqueio foi adiado.
  • Um artigo do Phoronix apresenta um guia para quem quiser compilar diretamente a stack ROCm/HIP da AMD.

  • O ROCm parece ser melhor explicado no GitHub do que na documentação oficial, o que reforça a importância do branding como um dos motivos de a AMD perder competitividade no mercado.

  • Há também quem ache que a AMD deveria alocar mais equipes para este projeto.