OpenCL gana terreno en CUDA

Hola y mil gracias por leerme. Soy Simón Sánchez y en esta ocasión te voy a hablar sobre OpenCL gana terreno en CUDA

Como los dos marcos de programación líderes para la computación GPU, OpenCL y CUDA han competido por la participación de la comunidad de desarrolladores en los últimos años. Hasta hace poco, CUDA ha atraído la mayor parte de la atención de los desarrolladores, especialmente en el ámbito de la informática de alto rendimiento. Pero el software OpenCL ha madurado hasta el punto en que los profesionales de HPC están echando un segundo vistazo.

Tanto OpenCL como CUDA proporcionan un modelo genérico para el paralelismo de datos y el acceso de bajo nivel al hardware, pero solo OpenCL proporciona un marco abierto estándar de la industria. Como tal, ha obtenido el apoyo de casi todos los fabricantes de procesadores, incluidos AMD, Intel y NVIDIA, así como de otros que atienden los mercados de computadoras móviles e integradas. Como resultado, las aplicaciones desarrolladas en OpenCL ahora son portables a una variedad de GPU y CPU.

Aunque OpenCL 1.0 se introdujo en diciembre de 2008, solo un año y medio después de que NVIDIA lanzara su primera versión de CUDA, OpenCL sigue siendo muy popular en CUDA, especialmente cuando se trata de HPC. Esto se debe principalmente a un esfuerzo concertado de NVIDIA para establecer CUDA como el marco de programación dominante para desarrollar aplicaciones de GPU en este ámbito.

AMD fue el impulso más fuerte de la tecnología OpenCL para la computación técnica, pero la falta de un conjunto de productos competitivos para la computación con GPU de alta gama ha empañado ese mensaje. Hasta ahora, el uso de OpenCL se ha relegado principalmente a la informática del lado del cliente, especialmente para las plataformas móviles, que han incorporado cada vez más el silicio GPU en sus diseños. Apple, que inicialmente desarrolló OpenCL antes de entregarlo al estándar abierto de Khronos Group, fue fundamental para que la tecnología despegara.

El golpe para OpenCL para los usuarios de HPC fue la falta de madurez, lo que resultó en un rendimiento reducido, en comparación con CUDA. También existe la percepción de que el apoyo de los principales fabricantes de chips HPC (Intel, AMD y NVIDIA) sería poco entusiasta, al menos para sus procesadores de gama alta. En muchos sentidos, eso sigue siendo cierto, ya que NVIDIA está dedicando la mayor parte de su atención a su propio software CUDA de producción, mientras que Intel parece haber optado por sus propios marcos de programación paralelos, principalmente Cilk Plus y Threading Building Blocks.

AMD, sin embargo, sigue admitiendo OpenCL y algunas de las versiones más recientes de compiladores y bibliotecas han mejorado significativamente el rendimiento. De hecho, Kyle Spafford, del Future Technology Group en Oak Ridge National Lab (ORNL), ha estado analizando las dos tecnologías durante algún tiempo y ahora está convencido de que el rendimiento de OpenCL ahora está a la par con el de CUDA. Recientemente presentó sus hallazgos a Georgia Tech’s Taller de Keeneland.

Spafford ejecutó el Scalable Heterogeneous Computing Benchmark Suite (SHOC) de ORNL optimizado para CUDA y OpenCL y descubrió que OpenCL puede igualar el rendimiento de CUDA en la mayoría de los núcleos matemáticos básicos. También descubrió que el rendimiento de OpenCL en algunos núcleos, como SGEMM, se ha multiplicado por 10 desde 2009. El único código para el que CUDA todavía tiene una ventaja de rendimiento significativa es el de la Transformada rápida de Fourier (FFT). Spafford atribuye el mejor rendimiento de FFT de CUDA al uso de un rápido intrínseco, con la implementación de OpenCL (NVIDIA en este caso *) que emplea una versión más lenta y precisa. Si las implementaciones coinciden, la diferencia de rendimiento desaparece, dice Spafford.

Otros han encontrado un comportamiento similar en aplicaciones científicas independientes. Un equipo de investigación en Dartmouth que ejecuta un modelo numérico de ondas gravitacionales con OpenCL y CUDA encontró un rendimiento similar entre OpenCL y CUDA, en este caso en las GPU Tesla y los procesadores Cell BE de IBM. En el resultado papel, los investigadores concluyen que «una implementación basada en OpenCL ofrece un rendimiento comparable al basado en un SDK nativo en ambos tipos de hardware del acelerador».

El fabricante de software de GPU AccelerEyes ha visto el rendimiento de CUDA y OpenCL igual. La compañía, que lanzó recientemente versiones beta basadas en OpenCL de sus dos productos de software insignia, ArrayFire y Jacket, descubrió que para la mayoría del código del kernel, las dos tecnologías ahora muestran un rendimiento similar. Al igual que ORNL, descubrieron que la velocidad de FFT es incluso mejor en CUDA gracias a la implementación más rápida de NVIDIA, pero el compilador de AMD y las bibliotecas OpenCL han mejorado dramáticamente, tanto en términos de rango como de rendimiento.

Según John Melonakos, CEO de AccelerEyes, más de la mitad de los clientes desarrollan código acelerado por GPU en sus PC antes de implementarlo en una estación de trabajo o clúster, por lo que la capacidad de admitir hardware que no sea de NVIDIA puede ser muy útil. Por ejemplo, los clientes que usan MacBooks como plataformas de desarrollo no pueden ejecutar CUDA allí porque Apple no tiene la opción de GPU NVIDIA en sus computadoras portátiles más recientes. Y debido a que las bibliotecas AMD OpenCL utilizadas por AccelerEyes en sus ofertas beta funcionan perfectamente en CPU Intel, CPU AMD y GPU NVIDIA, no hay problemas de incompatibilidad de hardware.

Luego están los usuarios que no están dispuestos a adoptar pilas de software específicas de proveedores como CUDA. «Hay una clase de personas que absolutamente quieren hacer computación con GPU pero son resistentes a cualquier cosa que esté bloqueada por el proveedor», dijo Melonakos a Calendae. Él dice que este es el grupo que primero cambió a sus ofertas basadas en OpenCL.

Para contrarrestar este tipo de percepción, NVIDIA abrió recientemente el código fuente del compilador CUDA para desarrolladores externos. Sin embargo, es significativo que NVIDIA no esté poniendo sus bibliotecas matemáticas CUDA tan importantes, como CUBLAS y CUFFT, en la placa de código abierto. Según Melonakos, el conjunto grande y maduro de bibliotecas es la verdadera fortaleza de CUDA en el campo de la informática técnica. De código abierto o no, NVIDIA aún conserva el control de la tecnología de software CUDA, por lo que todavía se la percibe como una solución específica del proveedor.

NVIDIA e Intel también están cubriendo sus apuestas con OpenCL, y ambos proveedores ofrecen enlaces de software para sus respectivos hardware. En este punto, estas empresas están proporcionando este soporte como un guiño a sus desarrolladores de computación móvil (aunque Intel también está trabajando en un puerto de procesador MIC). Pero como existe una cantidad cada vez mayor de polinización cruzada entre los dispositivos móviles y la HPC en la actualidad, no está claro cómo los desarrolladores terminarán utilizando estas tecnologías.

De hecho, si el espacio móvil se adhiere a OpenCL a lo grande y se convierte en la solución estándar de bajo nivel para la computación heterogénea, esto podría acelerar su adopción en el extremo superior. Una vez que OpenCL alcance una masa crítica de aceptación en un gran mercado como ese, habrá un rápido aumento en la demanda de compiladores y bibliotecas robustos. Como dijo Melonakos: «No creo que OpenCL desaparezca».

[Editor’s note: The original article erroneously stated that the SHOC benchmark work used AMD’s implementation of OpenCL, rather than NVIDIA’s. We regret the error.]

No te olvides compartir en una historia de tu Instagram para que tus amigos lo lean

??? ? ? ???

Comparte