Pular para o conteúdo

ZLUDA agora roda cuFFT em GPUs AMD via hipFFT

Um pull request já mesclado adiciona a biblioteca cuFFT da NVIDIA ao ZLUDA, permitindo que GPUs AMD rodem unidades do Folding@Home baseadas em CUDA sem alterar o código.

Por Tech AI Wire Team

2 min de leitura

XLinkedIn
A Sapphire AMD Radeon RX 7900 XTX graphics card with its triple-fan cooler, shot at an angle on a white background.
Foto: Geni

Um novo pull request para o ZLUDA, a camada de código aberto que roda software CUDA da NVIDIA em placas de vídeo AMD, adiciona suporte a cuFFT. Essa é a biblioteca da NVIDIA para transformadas rápidas de Fourier, um tipo de cálculo que extrai as frequências contidas em um sinal. A mudança foi mesclada ao projeto em 22 de setembro de 2026. A Phoronix informa que isso permite que o cliente de computação distribuída do Folding@Home rode trabalho baseado em CUDA em GPUs AMD Radeon, sem qualquer alteração no próprio software.

Uma transformada de Fourier converte um sinal, como uma imagem ou um trecho de áudio, em uma lista das frequências que ele contém. Softwares científicos, alguns pipelines de machine learning e o cliente de dobramento de proteínas do Folding@Home dependem do cuFFT para esse cálculo. Até agora, esse caminho de código só funcionava em hardware NVIDIA.

Como funciona a tradução

O ZLUDA intercepta as chamadas que um programa faz às bibliotecas CUDA da NVIDIA e as redireciona para ferramentas equivalentes da AMD. Para o cuFFT, o pull request mesclado encaminha essas chamadas para o hipFFT, a biblioteca de FFT da própria AMD.

Um detalhe exigiu cuidado extra. O CUDA identifica cada plano de FFT com um número de 32 bits, chamado de handle. O hipFFT usa, em vez disso, um ponteiro de memória bruto. Truncar ou reinterpretar esse ponteiro diretamente poderia travar o programa ou devolver resultados errados silenciosamente. Por isso o pull request cria um registro sincronizado que mapeia os handles numéricos do CUDA para os ponteiros do hipFFT. O próprio hipFFT é carregado em tempo de execução, com código de configuração separado para Windows e Linux.

O port cobre apenas as funções do cuFFT que têm um equivalente direto no hipFFT, não a biblioteca inteira. O pull request lista o que foi testado antes da mesclagem:

Área testadaResultado
Gerenciamento do ciclo de vida do handleAprovado
Configuração do espaço de trabalhoAprovado
Planejamento de transformadas de 64 bitsAprovado
Transformadas 3D de real para complexoAprovado
Unidades de trabalho Folding@Home Core24 e Core27Rodaram com sucesso

O que ainda falta

O mantenedor do ZLUDA, vosen, apontou três problemas ao revisar a mudança, segundo o pull request. Os IDs de handle poderiam, em teoria, transbordar. Um lock global poderia serializar operações de FFT mais do que o necessário. E alguns códigos de erro vindos do hipFFT ainda não estão mapeados para o código de erro correto do CUDA, uma lacuna que a revisão classificou como de gravidade média a alta.

Os testes também são desiguais entre as plataformas. As builds para Windows e os testes em hardware AMD passaram, e o código compila sem problemas no Linux. Mas o autor do pull request, AmosKito1, escreveu que tinha "capacidade limitada de testes no Linux". O caminho do Linux teve, até agora, menos uso real do que o do Windows.

O que isso significa para desenvolvedores

Se o seu software chama o cuFFT e você quer testá-lo em hardware AMD via ZLUDA, verifique primeiro se cada função usada tem um equivalente direto no hipFFT. O port ainda não cobre toda a API. Espere que o caminho do Windows esteja mais testado que o do Linux por enquanto. Espere as lacunas de transbordamento de handle e mapeamento de erros apontadas por vosen serem fechadas antes de usar isso para algo de longa duração ou crítico para segurança.

Os usuários do Folding@Home saem ganhando de forma mais clara hoje. Suas placas AMD agora podem assumir unidades de trabalho CUDA que precisam de cuFFT, trabalho que antes ia só para GPUs NVIDIA. Quem mantém código científico ou de processamento de sinais acelerado por GPU baseado em cuFFT agora tem um segundo alvo de hardware para testar, sem precisar reescrever para uma biblioteca nativa da AMD.

Fontes

  1. ZLUDA Now Implements Some NVIDIA cuFFT APIs With hipFFT - Phoronix
  2. Implement core cuFFT APIs with hipFFT (#672) - GitHub (vosen/ZLUDA)

Artigos relacionados

An Arm single-board computer photographed from directly above on a gray backdrop, the arm wordmark on its processor package.
Ferramentas dev

FEX-Emu detalha o custo do TSO do x86 no Arm

Emular as regras de memória do x86 no Arm derruba a vazão dos acessos não alinhados para 8,5% da referência. Escritas combinadas seriam 816 vezes piores.