- ZLUDA 3 es una tecnología open source que busca ejecutar sin modificaciones en GPU AMD aplicaciones para GPU NVIDIA que estaban atadas a CUDA
- Comenzó como una implementación alternativa compatible con CUDA para GPU Intel, pero tras la suspensión de las evaluaciones de Intel y AMD, ahora se publicó código orientado a GPU AMD
- En Blender hay casos de rendimiento similar al backend nativo HIP, pero 3DF Zephyr y RealityCapture aparecen como “much slower” en ZLUDA, por lo que la variación según la app es grande
- Se confirmó la posibilidad de ejecutar apps de CG exclusivas de NVIDIA como RealityCapture y Arnold, pero el soporte de OptiX se mantiene en un nivel mínimo en Linux, lo que impone restricciones a los flujos de trabajo de renderizado
- Sin apoyo de Intel ni AMD, el proyecto está cerca de “realistically now abandoned”, y la licencia del SDK de NVIDIA también limita el desarrollo de capas de traducción para plataformas que no sean NVIDIA
El problema de dependencia de CUDA que ZLUDA 3 busca resolver
- ZLUDA 3 es un proyecto open source para ejecutar aplicaciones basadas en GPU creadas para GPU NVIDIA en hardware de otros fabricantes
- Está diseñado para ejecutar aplicaciones existentes en hardware nuevo sin modificaciones, sin exigir trabajo adicional de porting a los desarrolladores de apps
- ZLUDA se presentó por primera vez en 2020 como una implementación drop-in alternativa de CUDA para GPU Intel, y después de la versión 2 de 2021 se volvió difícil continuar su desarrollo
- En 2021, cuando Andrzej Janik trabajaba en Intel, la empresa evaluó ZLUDA como candidata a tecnología oficial, pero concluyó que “no había un caso de negocio para ejecutar aplicaciones CUDA en GPU Intel”
- Janik dejó Intel en 2022 y se acercó a AMD; AMD también evaluó ZLUDA durante dos años, pero decidió no seguir adelante
- Luego se publicó como open source el código actualizado, y se puede ver más contexto en el artículo de Phoronix
Alcance de funcionamiento comprobado en apps de CG
- ZLUDA 3 tiene como objetivo ejecutar en GPU AMD apps de GPU desarrolladas con la API CUDA de NVIDIA
- En áreas como VFX, motion graphics y visualización, algunas apps y renderizadores clave de CG están basados en CUDA, por lo que en la práctica siguen siendo exclusivos de NVIDIA
- HIP de AMD es una tecnología para portar apps CUDA a hardware AMD, pero requiere trabajo por parte de los desarrolladores de software
- Entre el software exclusivo de NVIDIA que Janik probó con ZLUDA se incluyen 3DF Zephyr, RealityCapture y Autodesk Arnold
- El soporte para Arnold está a nivel de prueba de concepto, y las escenas renderizadas con éxito mediante la implementación de OptiX de ZLUDA son limitadas
Límites prácticos de rendimiento y compatibilidad
- Janik evalúa que las apps CUDA se ejecutan en GPU AMD con “near-native performance”
- Según los benchmarks de Phoronix y un hilo del foro Blender Artists, hay casos en Blender donde el rendimiento de ZLUDA es similar al del backend nativo HIP
- En cambio, el repositorio de ZLUDA en GitHub marca a 3DF Zephyr y RealityCapture como much slower en ZLUDA
- Muchos renderizadores GPU usan, además de CUDA, OptiX de NVIDIA para acelerar el ray tracing
- El soporte de OptiX en ZLUDA está en un nivel “minimum”
- El soporte de OptiX solo existe en Linux y no está disponible en Windows
- El estado de la implementación es “buggy, unoptimized and incomplete”
- ZLUDA-OptiX no está incluido en las versiones redistribuibles, por lo que hay que compilarlo directamente
- Es difícil determinar si otras apps de CG basadas en CUDA pueden ejecutarse sin pruebas de usuarios
- Persisten problemas conocidos
- V-Ray benchmark se ejecuta en algunas combinaciones “lucky” de versiones antiguas de ZLUDA y HIP
- OctaneBench no se ejecuta en absoluto
Continuidad del proyecto y restricciones de licencia
- Janik considera que, sin el apoyo de Intel o AMD, ZLUDA está en un estado “realistically now abandoned”
- Está abierto a propuestas que hagan avanzar el proyecto
- De lo contrario, es probable que solo agregue soporte para tecnologías de NVIDIA que le interesen personalmente, como DLSS
- El código actual también puede ser útil para desarrolladores de software que estén haciendo un porting gradual de CUDA a HIP
- Según una actualización del 14 de marzo de 2024, Tom’s Hardware señaló que los términos de licencia del SDK de NVIDIA prohíben usar los resultados de SDK, incluido el CUDA Toolkit, para desarrollar tecnologías de traducción orientadas a plataformas que no sean NVIDIA
- Las versiones compiladas de ZLUDA 3 están disponibles para Windows y Linux, y el código fuente se ofrece bajo Apache 2.0 o MIT license
- Descarga de ZLUDA 3 disponible en el repositorio de GitHub del proyecto
1 comentarios
Opiniones en Hacker News
Hace 22 días también hubo una discusión relacionada: una publicación [0] que decía que AMD había financiado una implementación drop-in de CUDA basada en ROCm y que luego se publicó como open source recibió 400 comentarios.
El comentario principal destacado de ese hilo señalaba que la publicación en sí fue resultado de que AMD dejara de financiar el proyecto: “Después de 2 años de desarrollo y revisión, AMD determinó que no había un caso de negocio para ejecutar aplicaciones CUDA en GPU AMD. Una de las condiciones del contrato con AMD era que, si AMD decidía que no era apto para desarrollo adicional, yo podía publicarlo. Y así llegamos a hoy”. Fuente: https://github.com/vosen/ZLUDA?tab=readme-ov-file#faq
[0] https://news.ycombinator.com/item?id=39344815
Zluda: Run CUDA code on Intel GPUs, unmodified - https://news.ycombinator.com/item?id=36341211 - junio de 2023, 90 comentarios
Zluda: CUDA on Intel GPUs - https://news.ycombinator.com/item?id=26262038 - febrero de 2021, 77 comentarios
Entre las publicaciones relacionadas recientes también está Nvidia bans using translation layers for CUDA software to run on other chips - https://news.ycombinator.com/item?id=39592689 - marzo de 2024, 155 comentarios.
Que AMD haya cortado la financiación de este proyecto es realmente absurdo. Apenas se publicó como open source, empezó a generar valor para los usuarios de AMD.
Este tipo de cosas parece que debería ser la máxima prioridad de AMD, pero en la práctica durante años anduvo dando vueltas con dos —¿ahora tres?— API alternativas con poco soporte.
“HIP es muy ligero, por lo que tiene poco o ningún impacto en el rendimiento frente a programar directamente en modo CUDA”.
“La herramienta HIPIFY convierte automáticamente el código fuente CUDA a HIP”.
En el mercado de tarjetas gráficas de consumo podría traer beneficios a corto plazo, pero a largo plazo es casi pegarse un tiro en el pie, porque sigue consolidando la posición de Nvidia en centros de datos.
En esta discusión también parece relevante la publicación que dice que “Nvidia prohibió usar capas de traducción para ejecutar software CUDA en otros chips” [1].
[1] https://news.ycombinator.com/item?id=39592689
La emulación está protegida legalmente, tanto de forma explícita como por jurisprudencia. La reproducción de API con fines de compatibilidad llegó hasta la Corte Suprema de EE. UU. y se determinó que no estaba sujeta a copyright, al menos dentro de un margen bastante amplio.
No soy abogado, pero no veo bien qué fundamento legal espera tener Nvidia. Si se trata de una persona o empresa que no tiene ningún hardware de Nvidia, el asunto se siente irrelevante. Si una empresa ya tiene hardware de Nvidia, quizá puedan intentar algún argumento, pero ¿eso no entra más bien de lleno en el terreno de las prácticas anticompetitivas?
Aunque se violaría el EULA, no hace falta aceptar el EULA mientras no descargues software CUDA, y los autores de ZLUDA probablemente pudieron evitarlo.
Que “Intel también acabó determinando que ‘no había un caso de negocio para ejecutar aplicaciones CUDA en GPU Intel’” es bastante frustrante.
Se confirmó algo que cualquiera que haya tocado alguna vez GPGPU de AMD sabe. Lo único que impide que AMD se convierta en una empresa de 2 billones de dólares es un software realmente espantoso.
Recuerdo haber encontrado un bug en el compilador OpenCL de AMD [1], y también era muy fácil matar el compilador OpenCL con un error de segmentación. Eso nunca se corrigió, así que dejé de reportarlo.
Que AMD no haya desarrollado un competidor de CUDA es una de las decisiones más cortoplacistas que he visto. No entiendo por qué no cambiaron a la junta directiva por gente que entienda que, aunque fabriques el mejor hardware, si el software que lo usa es, por decirlo muy suavemente, pésimo, nadie lo va a comprar ni usar.
Los clientes tenemos que comprar caras tarjetas Nvidia porque, al parecer, somos demasiado ricos como para preocuparnos por ese billón de dólares de valor que la junta de AMD dejó sobre la mesa. Si alguien tiene acciones de AMD, debería hacerse preguntas. Esa junta debería irse por el desagüe más cercano.
[1] https://github.com/msoos/amdmiscompile -- al final esto sí se corrigió
Mi entendimiento ingenuo es que una tarjeta gráfica es una computadora rara a la que puedes subirle instrucciones y datos y dejar que calcule por su cuenta.
No entiendo por qué CUDA es tan importante. ¿AMD no podría simplemente permitir acceso directo a sus GPU como si fueran un arreglo de 4096 placas Arduino?
Las empresas que desarrollan hardware, en general, son malas haciendo software. Hay excepciones, pero no muchas, y esas empresas de hecho han sido recompensadas en su cotización bursátil. No conozco la cultura de la división de software de AMD, pero normalmente arreglar algo así requiere cambios bastante grandes.
Es difícil que se resuelva solo cambiando a la junta. Si las órdenes de la alta dirección no son el único factor que arrastra a la empresa hacia abajo, habría que cambiar muchas más capas de gestión y reemplazar a bastantes mandos medios. Si la contratación de software no se hizo bien, a veces incluso hay que cambiar a contribuidores individuales.
Intel es buena en software, SYCL es un estándar abierto, así que ambas empresas podrían beneficiarse del mismo código, y los clientes podrían ejecutar código SYCL incluso en Threadripper si quisieran. Algunos Threadripper de hoy son tan rápidos como algunas GPU.
¿AMD intenta construir su propio ecosistema cerrado y propietario? No entiendo por qué no se compromete con un estándar abierto multiplataforma.
Cuando mi UPS no era buena, también podía limitar la energía de la GPU, y podía hacer overclock automático para estirar mi RX 580 más o menos un año más.
Pero el software/los drivers desde alrededor de 2020 hacen que los títulos de VR crasheen en menos de una hora. Tampoco hay paquete de software para Linux, y CoreCtrl no es tan bueno. A veces la repetición instantánea simplemente no funciona. Nunca logré hacer funcionar bien ROCm con LLM locales ni en Windows ni en Linux, y a DKMS le encanta hacer un montón de compilaciones inútiles en cada apt upgrade.
Estoy pensando si para mi próxima GPU me voy por una Intel Arc por curiosidad, o simplemente vuelvo a Nvidia. Las candidatas serían algo como A580, RX 6600 o RTX 3050, aunque también podría aguantar hasta que bajen los precios de otros componentes.
¿Existe algún lenguaje de programación que compile a varios lenguajes de kernels, como Metal, CUDA o lo que sea del lado de AMD? Si no existe, ¿por qué no?
Un compilador de C compila a varias arquitecturas de CPU. ¿No debería haber también un compilador para arquitecturas de GPU? Tal vez simplemente nadie lo ha construido todavía.
https://www.khronos.org/api/opencl
¿Alguien ha usado esto para correr herramientas de fotogrametría open source como Meshroom? El artículo menciona algunas herramientas propietarias, pero mis necesidades son bastante pequeñas.
Esto se parece muchísimo al caso Oracle contra Google por el uso de bytecode de la JVM.
Es parecido a que Google dijera “nuestras aplicaciones de Android solo pueden ejecutarse en teléfonos aprobados por Google”. Según entiendo, Google en la práctica sí hace algo así con cosas como el framework de Play o Maps.
Hace poco escuché un rumor interesante: la persona de NVIDIA que estuvo a cargo de CUDA tuvo que luchar durante años para conseguir recursos y convencer a la empresa de tomar este proyecto en serio.
Sin CUDA, NVIDIA jamás se habría convertido en la empresa de casi 1 billón de dólares que es hoy.
También está relacionado que geohot siguiera peleándose con costosas GPU de AMD: https://twitter.com/tinygrad/status/1764734675002810622