Si no estás suscripto: Regístrate

28 de febrero 2012

Gana terreno OpenCL a CUDA

Michael Feldman


Como los dos marcos de programación más importantes para el cómputo GPU, OpenCL y CUDA han estado compitiendo por Mindshare en la comunidad de desarrolladores de 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 computación de alto rendimiento. Pero el software OpenCL ha madurado hasta el punto en el que los profesionales de HPC está tomando un segundo vistazo.

Tanto OpenCL y CUDA proporciona un modelo de propósito general para paralelismo de datos, así como acceso de bajo nivel al hardware, pero sólo OpenCL proporciona un proceso abierto, estándar de la industria marco. Como tal, ha contado con el apoyo de casi todos los fabricantes de procesadores como AMD, Intel y NVIDIA, así como otros que sirven a los mercados de computación móviles e integrados. Como resultado, las aplicaciones desarrolladas en OpenCL son ahora portable a través de una variedad de GPUs y CPUs.

A pesar de OpenCL 1.0 se introdujo en diciembre de 2008, justo un año y medio después de la NVIDIA lanzó su primera versión de CUDA, OpenCL todavía está por debajo de CUDA en popularidad por un amplio margen, especialmente con respecto a la HPC. Esto se debe principalmente a un esfuerzo concertado por NVIDIA CUDA para establecer el marco de la programación dominante para el desarrollo de aplicaciones GPU en este campo ..

AMD ha sido el refuerzo más elocuente de la tecnología OpenCL para la computación técnica, pero es la falta de un producto competitivo creado para la gama alta computación de la GPU se ha silenciado el mensaje. Hasta ahora, el uso de OpenCL ha sido en su mayoría relegados a la computación en el lado del cliente, especialmente para las plataformas móviles, que han ido incorporando progresivamente de silicio GPU en sus diseños. Apple, que inicialmente desarrolló OpenCL antes de entregarla al grupo de estándares abiertos de Khronos, fue determinante para que la tecnología fuera de la tierra.

El golpe en OpenCL para los usuarios de HPC ha sido la falta de madurez, que se ha traducido en un bajo rendimiento, en comparación con CUDA. También existe la percepción de que el apoyo de los fabricantes de chips del principio de HPC (Intel, AMD y NVIDIA) sería menos que entusiasta, al menos para sus procesadores de gama alta. En muchos sentidos, que sigue siendo cierto, ya que NVIDIA está dedicando la mayor parte de su atención a su cosecha propia de software CUDA, mientras que Intel parece haberse asentado en sus propios marcos de programación en paralelo, sobre todo Cilk Plus y Threading Building Blocks.

AMD, sin embargo, continúa defendiendo OpenCL, y algunos de su compilador más reciente y las emisiones de la biblioteca han mejorado considerablemente el rendimiento. De hecho, Kyle Spafford, del Grupo de Tecnología del Futuro en el Laboratorio Nacional Oak Ridge (ORNL), ha sido la evaluación comparativa de las dos tecnologías durante algún tiempo y ahora está convencido de que el rendimiento de OpenCL ya está a la par con la de CUDA. Recientemente ha presentado sus conclusiones en el Georgia Tech Taller de Keeneland .

Spafford corrió escalable suite heterogénea ORNL de referencia de Informática (SHOC) que ha sido optimizado tanto para CUDA y OpenCL, y descubrió que OpenCL puede igualar el rendimiento de CUDA en la mayoría de los granos básicos de matemáticas. También encontró que el rendimiento de OpenCL en algunos núcleos, como SGEMM, ha aumentado 10 veces desde 2009. El código de una CUDA que todavía tiene una ventaja de rendimiento significativo es el de la Transformada Rápida de Fourier (FFT). Spafford atribuye un mejor rendimiento de la FFT de CUDA en su uso de una rápida intrínseca, con OpenCL de AMD utilizando un ritmo más lento, la versión más precisa. Si se comparan las implementaciones, la diferencia de rendimiento se va, dice Spafford.

Otros han encontrado un comportamiento similar en las aplicaciones científicas independientes. Un grupo de investigadores de la Dartmouth correr un modelo numérico de las ondas de gravitación con OpenCL y CUDA encontrado resultados similares entre OpenCL y CUDA, en este caso en la GPU Tesla y Cell BE de IBM procesadores. En el resultado del papel , los investigadores concluyen que “una implementación basada en OpenCL ofrece un rendimiento comparable a la que se basa en un SDK nativo en ambos tipos de hardware del acelerador”.

AccelerEyes GPU fabricante de software ha sido testigo de CUDA y el rendimiento de OpenCL igualar. La compañía, que recientemente lanzó OpenCL impulsados ​​por las versiones beta de sus dos productos estrella de software, ArrayFire y la Jacket, ha encontrado que para la mayoría de los códigos del núcleo, las dos tecnologías ya tienen un rendimiento similar. Al igual que ORNL, se encontraron con FFT velocidad sigue siendo mejor en debido a una implementación más rápida de NVIDIA CUDA, pero el compilador OpenCL de AMD y las bibliotecas han mejorado considerablemente, tanto en su alcance y el rendimiento.

Según el CEO de AccelerEyes, John  Melonakos, más de la mitad de sus clientes  desarrolla su aceleración de la GPU de código en sus PCs antes de instalar una estación de trabajo o grupo, por lo que la capacidad de soportar el hardware de NVIDIA no puede ser muy útil. Por ejemplo, los clientes que utilizan MacBooks como plataformas de desarrollo no podía correr CUDA se debe a que Apple no tiene otra opción GPU NVIDIA en sus ordenadores portátiles más modernos. Y puesto que las bibliotecas de AMD OpenCL que AccelerEyes utilizados en sus ofertas de beta funciona muy bien en las CPU de Intel, AMD, y las GPU de NVIDIA, no hay problemas de incompatibilidad de hardware.

Luego están los que sólo sean reacios a adoptar software específicos de los proveedores, tales como los stacks de CUDA. “Hay una clase de personas que quieren hacer absolutamente computación de la GPU, pero son resistentes a cualquier cosa que se proveedor cerrado”, dijo Melonakos HPCwire. Él dice que esto es un grupo que ha saltado en sus ofertas basadas en OpenCL en primer lugar.

Para contrarrestar ese tipo de percepción, NVIDIA ha abierto recientemente el código fuente del compilador CUDA para los desarrolladores de terceras partes. Es significativo, sin embargo, NVIDIA no está poniendo sus tan importantes bibliotecas matemáticas CUDA, al igual que CUBLAS y CUFFT, en el bote de código abierto. De acuerdo con Melonakos, el conjunto de la biblioteca grande y madura es la verdadera fuerza de CUDA en el ámbito de la computación técnica. El código abierto o no, NVIDIA todavía conserva el control de la tecnología de software CUDA, por lo que todavía se percibe como una solución específica del proveedor.

Incluso NVIDIA e Intel están cubriendo sus apuestas con OpenCL, sin embargo, con los dos vendedores que ofrecen ganchos de software para el hardware correspondiente. En este punto, estas empresas están proporcionando este apoyo como un guiño a sus desarrolladores de informática móvil (aunque Intel está trabajando en un puerto de procesador de MIC también). Pero como no hay una cantidad cada vez mayor de la polinización cruzada entre el móvil y HPC en estos días, no está claro cómo los desarrolladores terminan utilizando estas tecnologías.

De hecho, si el espacio móvil se enganche en OpenCL en una gran forma y se convierte en el estándar de bajo nivel de la solución para la computación heterogénea, que podría ayudar a acelerar su adopción en el extremo superior. Una vez que OpenCL alcanza una masa crítica de aceptación en un mercado de gran volumen como el que habrá un rápido aumento de la demanda de los compiladores robustos y bibliotecas. Como Melonakos lo expresó así: “No creo que OpenCL se va.”

Fuente:  HPC Wire

 

Deja un comentario

Powered by WP Symposium - Social Networking for WordPress v12.03.10