6 puntos por GN⁺ 2024-02-13 | 2 comentarios | Compartir por WhatsApp

AMD apoyó discretamente una implementación de CUDA basada en ROCm y la publicó como código abierto

  • AMD ha estado trabajando durante varios años para que los desarrolladores puedan ejecutar en HIP/ROCm bases de código dirigidas a la API CUDA de NVIDIA.
  • A pesar de estos esfuerzos, si se buscaba el mejor rendimiento, no era una solución ideal (simple, inmediata y con rendimiento garantizado).
  • Durante los últimos dos años, AMD ha estado apoyando discretamente un proyecto que ofrece compatibilidad binaria a nivel de bibliotecas para que muchas aplicaciones NVIDIA CUDA puedan ejecutarse sobre la pila AMD ROCm sin cambios en el código fuente.

ZLUDA: soporte de CUDA para gráficos Intel

  • Hace algunos años, un proyecto llamado ZLUDA comenzó para dar soporte a CUDA en gráficos Intel, pero fue interrumpido por motivos personales.
  • El desarrollador de ZLUDA, Andrzej Janik, recibió de AMD en 2022 un contrato para adaptar ZLUDA a GPUs AMD usando HIP/ROCm.
  • Durante los últimos dos años, Janik implementó ZLUDA en GPUs Radeon para que mucho software CUDA pudiera ejecutarse en HIP/ROCm sin modificaciones.

Publicación de ZLUDA como código abierto

  • AMD decidió dejar de financiar este proyecto este año y no lanzarlo como producto de software.
  • Sin embargo, al finalizar el contrato había una cláusula que permitía a Janik publicar el trabajo como código abierto.
  • Janik ofreció acceso para probar y hacer benchmarks de esta nueva implementación de ZLUDA.

Limitaciones de la implementación de ZLUDA y código abierto

  • La implementación de ZLUDA no es 100% segura: el soporte para NVIDIA OptiX no está completo y actualmente no maneja software que no use código ensamblador PTX, entre otras limitaciones.
  • En la mayoría de los casos, esta implementación es sorprendentemente capaz para ser el esfuerzo de un solo desarrollador.
  • El código abierto tiene doble licencia Apache 2.0 o MIT.
  • Para esta implementación en Radeon se utilizó el lenguaje de programación Rust.

Opinión de GN⁺

  • Este artículo presenta un proyecto que AMD apoyó discretamente para ofrecer compatibilidad con CUDA, y que podría convertirse en una gran contribución para la comunidad de código abierto.
  • ZLUDA es un avance importante que permite a los desarrolladores ejecutar aplicaciones CUDA en la plataforma de AMD sin cambiar el código fuente.
  • Estos esfuerzos dan a los usuarios de GPUs AMD la oportunidad de acceder a un ecosistema de software más amplio, y resulta especialmente interesante que aproveche un lenguaje de programación moderno como Rust.

2 comentarios

 
bbulbum 2024-02-13

¡Que se joda Nvidia!

 
GN⁺ 2024-02-13
Opiniones de Hacker News
  • ZLUDA se publicó como resultado de que AMD dejara de financiarlo

    • AMD decidió que, después de 2 años de desarrollo, ejecutar aplicaciones CUDA en GPUs de AMD no tenía un caso de negocio.
    • Según las condiciones del contrato, si AMD consideraba que el desarrollo adicional no era adecuado, ZLUDA podía hacerse público.
  • Mención de la CUDA Dark API

    • La CUDA Dark API está compuesta por funciones no documentadas, y no se sabe con exactitud cuántas son.
    • Las aplicaciones comunes usan una o dos de las funciones más frecuentes.
    • Como no se conocen sus nombres ni los tipos de sus argumentos, implementarlas toma mucho tiempo.
    • ZLUDA hizo ingeniería inversa e implementación caso por caso después de observar que las aplicaciones las usaban.
  • Opiniones apoyando que AMD rompa el monopolio de CUDA

    • Una ventaja de la capa de traducción es que puede hacer que el hardware sea más viable de inmediato y fomentar la adopción.
    • Sin embargo, existe el riesgo de que los desarrolladores no den soporte a ROCm y solo usen la capa de traducción.
    • Proton+DXVK tuvo un impacto positivo en el gaming en Linux, pero para exprimir el rendimiento en cómputo GPU se necesita ajuste específico para cada arquitectura.
    • AMD tiene que hacer algo para ser competitiva en el mercado.
  • Relato de experiencia sobre intentar ejecutar Stable Diffusion en una GPU AMD y las dificultades encontradas

    • No hubo problemas para instalar ROCm ni para que se detectara la GPU, pero como el mundo de ML está centrado en Nvidia, fue difícil instalar cosas como PyTorch.
    • Al final logró cargar el modelo, pero el software no pudo generar ni una sola imagen antes de hacer colapsar la sesión gráfica.
    • Esa experiencia le dejó ganas de volver a comprar una GPU Nvidia.
  • Años después de que Blender abandonara OpenCL y usara un backend de CUDA, añadió un backend Radeon HIP, pero se descubrió que usar ZLUDA + el backend de CUDA era ligeramente más rápido que el backend Radeon HIP.

  • La decisión de AMD de dejar de financiar este proyecto parece incomprensible.

    • CUDA-on-ROCm podría romper el monopolio de NVIDIA y servir para frenar a NVIDIA de hacer cambios en CUDA.
    • Si no eres el número 1 del mercado, debes seguir el estándar de facto para competir con valor real y crear y adoptar estándares realmente abiertos.
  • Pregunta relacionada con la noticia de que Nvidia había eludido la verificación del driver con licencia GPL del kernel

    • Hubo noticias de que en el kernel 6.6 se bloquearía el driver si Nvidia no lo corregía, pero no hubo respuesta por parte de Nvidia.
    • Actualmente usa el kernel 6.7.4, y hay información confusa sobre si Nvidia ya resolvió el problema o si el bloqueo fue pospuesto.
  • En un artículo de Phoronix se presenta una guía para quienes quieran compilar directamente el stack ROCm/HIP de AMD.

  • ROCm está mejor explicado en Github que en la documentación oficial, y esto resalta la importancia del branding como una de las razones por las que AMD pierde competitividad en el mercado.

  • Hay opiniones de que AMD debería asignar más equipos a este proyecto.