BookinglyTech News
Software

ZLUDA empieza a traducir las API cuFFT de NVIDIA a hipFFT de AMD

El proyecto de compatibilidad CUDA ya cubre parte de las funciones de la librería de transformadas de Fourier de NVIDIA, siempre que exista un equivalente directo en hipFFT.

2 min de lecturaPhoronix0 vistas

ZLUDA ha empezado a implementar parte de las API cuFFT de NVIDIA apoyándose en hipFFT, la librería equivalente del ecosistema ROCm de AMD. El proyecto, que traduce llamadas CUDA para que corran en GPU que no son de NVIDIA, cubre de momento solo aquellas funciones donde existe una interfaz hipFFT directamente equivalente. El trabajo llega en ZLUDA 7-preview.11.

El autor del pull request es el desarrollador AmosKito1. La aproximación no reescribe la librería: traduce en tiempo de ejecución las llamadas a cuFFT hacia hipFFT. Esa traducción dinámica bastó para que los núcleos Core24 y Core27 de Folding@Home, tal y como se distribuyen para CUDA, arrancaran sobre hardware de AMD.

Cobertura parcial, y ahí está el matiz

No todas las API de cuFFT están soportadas. Solo las que tienen un equivalente directo en hipFFT, lo que deja fuera cualquier función cuya semántica no encaje uno a uno. Para quien mueve código científico, la diferencia es la de siempre en este tipo de capas: la aplicación que solo usa lo común arranca; la que depende de una rutina concreta de cuFFT sigue sin hacerlo, y el fallo aparece en tiempo de ejecución, no al compilar.

Conviene tener claro qué hace cada pieza. cuFFT es la librería de transformadas rápidas de Fourier de NVIDIA, una dependencia habitual en simulación, procesado de señal y cálculo numérico. hipFFT cubre el mismo terreno dentro de ROCm, la pila de cómputo de AMD. ZLUDA se coloca en medio como capa de compatibilidad: no reimplementa nada, intercepta y redirige. El resultado depende por completo de lo bien que encajen las dos interfaces en cada llamada.

Que el proyecto cubra una parte de cuFFT acerca la posibilidad de ejecutar binarios CUDA en Radeon sin tocar el código fuente, que es el objetivo declarado de ZLUDA desde el principio. El camino, eso sí, sigue lleno de huecos: cuFFT no es más que una de las bibliotecas que una aplicación CUDA puede necesitar, y cada una de ellas arrastra su propio conjunto de funciones sin equivalente limpio al otro lado.

La versión 7-preview.11 se puede descargar y probar ya. Lo que queda por ver es si el proyecto extiende la cobertura al resto de cuFFT o si se queda en el subconjunto que hipFFT replica sin ambigüedad. Mientras tanto, antes de dar por hecho que una aplicación va a funcionar, merece la pena mirar qué funciones de la librería usa de verdad.