ZLUDA hace posible ejecutar aplicaciones CUDA en GPUs AMD
- ZLUDA 3, el proyecto de código abierto desarrollado por Andrzej Janik, permite ejecutar en hardware de otros fabricantes aplicaciones basadas en GPU diseñadas para GPUs NVIDIA.
- Esta tecnología está diseñada para que las aplicaciones existentes puedan ejecutarse en nuevo hardware sin trabajo adicional por parte de los desarrolladores.
- Las versiones anteriores de ZLUDA permitían ejecutar aplicaciones CUDA en GPUs Intel, pero en la versión 3 el enfoque cambió a las GPUs AMD.
¿ZLUDA no era para GPUs Intel?
- ZLUDA se lanzó por primera vez en 2020 como una alternativa a CUDA para GPUs Intel.
- Tras el lanzamiento de la versión 2 en 2021, Janik anunció que no podía seguir desarrollando el proyecto, pero después Intel comenzó a evaluar ZLUDA como una tecnología oficial.
- Intel decidió que no había un caso de negocio para ejecutar aplicaciones CUDA en GPUs Intel, y Janik dejó la empresa y se acercó a AMD.
- AMD evaluó ZLUDA durante dos años, pero decidió no seguir adelante con el proyecto, y Janik publicó como código abierto el código actualizado.
¿Por qué es importante para los artistas de CG?
- ZLUDA versión 3 permite ejecutar en GPUs AMD aplicaciones basadas en GPU desarrolladas con la API CUDA de NVIDIA.
- En industrias como VFX, motion graphics y visualización, muchas aplicaciones importantes de CG, especialmente los renderizadores, están basadas en CUDA y son exclusivas de NVIDIA.
- AMD tiene su propia tecnología, HIP, pero requiere trabajo por parte de los desarrolladores de software.
- ZLUDA en realidad está construido sobre HIP y está diseñado para permitir que aplicaciones CUDA se ejecuten en GPUs AMD sin modificaciones.
¿Qué tan rápido es ejecutar aplicaciones CUDA bajo ZLUDA?
- Janik describe la ejecución de aplicaciones CUDA en GPUs AMD como con un "rendimiento casi nativo".
- Sin embargo, según el repositorio de GitHub de ZLUDA, 3DF Zephyr y RealityCapture son "mucho más lentos" bajo ZLUDA.
- Muchos desarrolladores de renderizadores GPU también usan OptiX, una segunda API de NVIDIA que contribuye al rendimiento, y ZLUDA ofrece soporte "mínimo" para OptiX.
¿Otras aplicaciones de CG pueden ejecutarse mediante ZLUDA en GPUs AMD?
- Sin pruebas de usuarios, es difícil decir qué tan bien funcionarán otras aplicaciones de CG basadas en CUDA bajo ZLUDA.
- Hay muchos problemas conocidos, y Janik tuvo un éxito limitado con otros renderizadores GPU.
¿Podrán ejecutarse más aplicaciones de CG basadas en CUDA bajo ZLUDA en el futuro?
- Janik dice que sin apoyo de Intel o AMD, ZLUDA está "realísticamente abandonado".
- Está abierto a propuestas que puedan impulsar el proyecto, pero de lo contrario es probable que solo dé soporte a tecnologías de NVIDIA que le interesen personalmente.
- El código fuente está disponible públicamente y, incluso en su estado actual, ZLUDA puede ser usado por desarrolladores de software como parte de una "migración más gradual" de CUDA a HIP.
Licencia y requisitos del sistema
- Las versiones compiladas de ZLUDA 3 están disponibles para Windows y Linux. El código fuente se ofrece bajo licencia Apache 2.0 o MIT.
Opinión de GN⁺
- ZLUDA tiene el potencial de impulsar la competencia en el mercado de GPUs al abrir el ecosistema propietario de CUDA de NVIDIA a los usuarios de AMD.
- Este proyecto puede beneficiar especialmente a usuarios de software de renderizado o de aplicaciones de cómputo científico que dependen de CUDA, al ofrecerles más opciones de hardware.
- Sin embargo, dado que ZLUDA aún está en una etapa temprana y no ofrece compatibilidad ni rendimiento completos, su adopción en entornos de producción reales debe hacerse con cautela.
- Reducir la brecha tecnológica entre AMD y NVIDIA podría ofrecer a los consumidores mejores precios y más opciones, lo que puede fomentar una competencia saludable en el mercado.
- El interés y las contribuciones continuas de la comunidad de código abierto serán importantes para el éxito de este proyecto, y ofrecen una buena oportunidad para que contribuyan expertos de áreas relacionadas.
1 comentarios
Comentarios en Hacker News
Discusión previa hace 22 días: AMD desarrolló una implementación de CUDA basada en ROCm y la publicó como código abierto [0], hubo 400 comentarios.
Que AMD haya dejado de financiar este proyecto es completamente absurdo. Apenas se publicó como código abierto, empezó a aportar valor a los usuarios de AMD, y parecería que esto debería ser la máxima prioridad de AMD; en cambio, AMD ha desperdiciado años con dos (¿o eran tres?) APIs alternativas que hasta ahora casi no tienen soporte.
Contenido relacionado con la discusión: Nvidia prohíbe el uso de capas de traducción para ejecutar software CUDA en otros chips [1]
Intel también terminó decidiendo que "no hay un caso de negocio para ejecutar aplicaciones CUDA en GPUs de Intel". Esto solo confirma lo que ya sabe cualquiera que haya trabajado con GPGPU de AMD.
Es bien sabido que el software de AMD es pésimo, y ese es el único factor que impide que AMD sea una empresa de 2 billones de dólares. El compilador OpenCL de AMD tenía errores, y era fácil hacerlo colapsar con un
segfault(al final me rendí y ni siquiera lo reporté). Que AMD no haya desarrollado un competidor para CUDA fue una decisión extremadamente cortoplacista. No puedo entender por qué no han reemplazado a la junta directiva de AMD. Puedes fabricar el mejor hardware, pero si el software para usarlo es terrible, nadie lo va a comprar ni a usar. Como cliente, da la impresión de que a la junta directiva de AMD no le importan los billones de dólares de valor que han dejado sobre la mesa, así que uno no tiene más opción que comprar tarjetas Nvidia sobrevaloradas. Quienes poseen acciones de AMD deberían hacer preguntas, y esa junta debería irse por el desagüe más cercano.Me pregunto si existe algún lenguaje de programación que pueda compilar a distintos lenguajes de kernel, como Metal, CUDA y lo que sea que tenga AMD. Si no existe, ¿por qué no? Así como hay compiladores de C que generan código para distintas arquitecturas de CPU, ¿no debería haber compiladores que generen código para arquitecturas de GPU? Tal vez simplemente nadie lo ha hecho todavía.
Me pregunto si alguien ha probado esto con herramientas OSS de fotogrametría como Meshroom. El artículo menciona algunas cosas privativas, pero en realidad no hace falta tanto.
El problema de las GPUs de AMD no son los kernels individuales, sino las bibliotecas. En las notas de la versión parece mencionarse "soporte mínimo agregado para cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL y NVML", así que este proyecto iba avanzando en esa dirección. Nadie sabe si podrá mantener el impulso después de que AMD dejara de financiarlo.
Esto es casi exactamente el mismo problema que usar bytecode de la JVM en el caso Oracle vs Google.
También es relevante la continua y (costosa) lucha de geohot con las GPUs de AMD: enlace de Twitter