Aller au contenu

ZLUDA prend en charge cuFFT sur les GPU AMD via hipFFT

Une pull request fusionnée ajoute la bibliothèque cuFFT de NVIDIA à ZLUDA, permettant aux GPU AMD de faire tourner des unités Folding@Home basées sur CUDA sans modification de code.

Par Tech AI Wire Team

2 min de lecture

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

Une nouvelle pull request pour ZLUDA, la couche open source qui fait tourner les logiciels CUDA de NVIDIA sur des cartes graphiques AMD, ajoute la prise en charge de cuFFT. Il s'agit de la bibliothèque de NVIDIA pour les transformées de Fourier rapides, un type de calcul qui extrait les fréquences contenues dans un signal. Le changement a été fusionné dans le projet le 22 septembre 2026. Phoronix rapporte que cela permet au client de calcul distribué Folding@Home de faire tourner du travail basé sur CUDA sur des GPU AMD Radeon, sans aucun changement dans le logiciel lui-même.

Une transformée de Fourier convertit un signal, comme une image ou un extrait audio, en une liste des fréquences qu'il contient. Des logiciels scientifiques, certains pipelines de machine learning et le client de repliement de protéines de Folding@Home s'appuient tous sur cuFFT pour ce calcul. Jusqu'ici, ce chemin de code ne fonctionnait que sur du matériel NVIDIA.

Comment fonctionne la traduction

ZLUDA intercepte les appels qu'un programme adresse aux bibliothèques CUDA de NVIDIA et les redirige plutôt vers des outils équivalents chez AMD. Pour cuFFT, la pull request fusionnée transmet ces appels à hipFFT, la bibliothèque FFT propre à AMD.

Un détail demandait un soin particulier. CUDA identifie chaque plan FFT par un nombre de 32 bits, appelé un handle. hipFFT utilise à la place un pointeur mémoire brut. Tronquer ou réinterpréter ce pointeur directement aurait pu faire planter le programme ou renvoyer silencieusement des résultats faux. La pull request construit donc un registre synchronisé qui associe les handles numériques de CUDA aux pointeurs de hipFFT. hipFFT se charge lui-même à l'exécution, avec un code d'initialisation distinct pour Windows et pour Linux.

Le portage ne couvre que les fonctions cuFFT qui ont un équivalent direct dans hipFFT, pas la bibliothèque entière. La pull request liste ce qui a été testé avant la fusion :

Domaine testéRésultat
Gestion du cycle de vie des handlesRéussi
Configuration de l'espace de travailRéussi
Planification de transformées 64 bitsRéussi
Transformées 3D réel vers complexeRéussi
Unités de travail Folding@Home Core24 et Core27Exécutées avec succès

Ce qu'il reste à faire

Le mainteneur de ZLUDA, vosen, a signalé trois problèmes en relisant le changement, selon la pull request. Les identifiants de handle pourraient en théorie déborder. Un verrou global pourrait sérialiser les opérations FFT plus que nécessaire. Et certains codes d'erreur renvoyés par hipFFT ne sont pas encore associés au bon code d'erreur CUDA, un manque que la relecture qualifie de gravité moyenne à élevée.

Les tests sont aussi inégaux selon les plateformes. Les builds Windows et les tests sur matériel AMD ont tous deux réussi, et le code compile proprement sous Linux. Mais l'auteur de la pull request, AmosKito1, a écrit avoir une "capacité de test limitée sous Linux". Le chemin Linux a donc reçu moins d'usage réel que le chemin Windows jusqu'ici.

Ce que cela signifie pour les développeurs

Si votre logiciel appelle cuFFT et que vous voulez le tester sur du matériel AMD via ZLUDA, vérifiez d'abord que chaque fonction utilisée a un équivalent direct dans hipFFT. Le portage ne couvre pas encore toute l'API. Attendez-vous à ce que le chemin Windows soit mieux testé que le chemin Linux pour l'instant. Patientez avant d'utiliser ce portage pour une tâche longue ou critique pour la sécurité, le temps que les problèmes de débordement de handle et de correspondance d'erreurs signalés par vosen soient résolus.

Les utilisateurs de Folding@Home en profitent le plus clairement aujourd'hui. Leurs cartes AMD peuvent désormais prendre en charge des unités de travail CUDA qui ont besoin de cuFFT, un travail auparavant réservé aux GPU NVIDIA. Quiconque maintient du code scientifique ou de traitement du signal accéléré par GPU et reposant sur cuFFT dispose maintenant d'une seconde cible matérielle pour ses tests, sans devoir tout réécrire pour une bibliothèque AMD native.

Sources

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

Articles liés

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

FEX-Emu détaille le coût du TSO x86 sur Arm

Émuler les règles mémoire de x86 sur Arm fait tomber le débit des accès non alignés à 8,5% de la référence. Les écritures combinées seraient 816 fois pires.