OpenCL: libera tu GPU ... ¡y el resto de tu sistema también! - Calendae | Informática, Electrónica, CMS, Ciberseguridad

OpenCL: libera tu GPU … ¡y el resto de tu sistema también!

Hola y mil gracias por leerme. Te escribe Simón Sánchez y esta vez te voy a hablar sobre OpenCL: libera tu GPU … ¡y el resto de tu sistema también!

Para los no iniciados, OpenCL puede parecer solo una herramienta para acceder a las GPU de forma portátil, una alternativa a CUDA que funciona para tarjetas ATI. Esta vista de OpenCL es una gran simplificación. La verdad es que OpenCL ofrece un amplio conjunto de características que proporcionarán la infraestructura para que los desarrolladores de aplicaciones utilicen plenamente un futuro de hardware cada vez más heterogéneo. En este artículo, consideraremos cómo OpenCL puede abordar algunos de los próximos desafíos y qué está haciendo la comunidad OpenCL para garantizar que haya un ecosistema de soporte dinámico a medida que más y más usuarios recurren a OpenCL desde soluciones de bloqueo de proveedores.

A estas alturas, todos hemos oído hablar del muro del poder y sabemos que la única forma de superarlo es el paralelismo. El paralelismo a nivel de datos (piense en las GPU) fue la primera tecnología que dejó su huella en la nueva era de las computadoras. Empleando unidades de trabajo muy uniformes, las implementaciones paralelas a los datos han logrado mejoras dramáticas en el rendimiento de muchos algoritmos científicos, y OpenCL ciertamente tiene soporte para este modelo.

Sin embargo, este no es el final de la historia. A medida que los proveedores de CPU intentan adaptar sus arquitecturas a la nueva realidad paralela (y los proveedores de GPU evolucionan la suya), surgen ideas alternativas sobre cómo exponer y explotar el paralelismo dentro de un programa. Estos proyectos intentan mitigar los límites de rendimiento de los algoritmos en los que la mayor parte del trabajo no encaja perfectamente en unidades de ejecución no divergentes.

Uno de estos enfoques es tomar una arquitectura multinúcleo y escalarla, proporcionando más recursos para cargas de trabajo paralelas. Un ejemplo de esto es la arquitectura Intel Xeon Phi, lanzada en 2012. Compartiendo similitudes con CPU y GPU, el modelo de programación Xeon Phi requiere un poco de ambos. Al igual que una CPU, Xeon Phi prefiere una persistencia algo más prolongada de un objeto de trabajo, de modo que su esquema de almacenamiento en caché pueda funcionar de manera eficiente para ocultar la latencia de acceso a la memoria. Al mismo tiempo, Xeon Phi ofrece muchas más unidades de ejecución que las implementaciones SMP tradicionales diseñadas para manejar. Para muchas aplicaciones, se puede encontrar un buen equilibrio que combine datos y paralelismo de tareas, y afortunadamente para los desarrolladores, Intel ha proporcionado soporte OpenCL para toda la línea de procesadores, incluidos Xeon Phi y gráficos integrados. Como ejemplo de por qué esto es beneficioso, OpenCL no tiene problemas para expresar pilas locales, con o sin acceso a memoria bloqueado, y su interfaz de administración de grupos de trabajo es suficiente para cualquier nivel de ejecución de datos en paralelo. Estas características le permiten integrar sin problemas modelos de programación mixta que reflejan las características híbridas del hardware Xeon Phi.

Una tercera estrategia de hardware que ya se ha implementado ampliamente, pero aún no se ha utilizado por completo (y a menudo ni siquiera se reconoce) es el heterogéneo System-on-a-chip (SoC). Fundada con IBM Cell, ahora extinta, y combinando los llamados núcleos de latencia optimizada (piense en CPU) con núcleos de rendimiento optimizado (GPU), las arquitecturas heterogéneas intentan ofrecer lo mejor de ambos mundos, aunque en partes separadas. del dado. Si está leyendo este artículo en un dispositivo móvil, computadora portátil o computadora de escritorio reciente, es probable que ya tenga un chip heterogéneo a su disposición: Apple A Series, NVIDIA Tegra, AMD Fusion, Qualcomm Snapdragon e Intel Ivybridge son todos. heterogéneo. Es probable que algunos de estos chips lleguen a la próxima generación de supercomputadoras. Si este es el caso, y a menos que esté utilizando explícitamente estos recursos, pueden ser una pérdida de energía para su sistema sin ningún beneficio. OpenCL proporciona al desarrollador todo el potencial de arquitecturas heterogéneas.

Una última estrategia de hardware en evolución que debe mencionarse es el Field Programmable Gate Array (FPGA). Pocas arquitecturas informáticas genéricas pueden competir con la eficiencia energética de un circuito personalizado. Desafortunadamente, muy pocos desarrolladores están dispuestos a invertir el tiempo y el esfuerzo necesarios para aprender VHDL o Verilog para convertir sus ideas en un núcleo funcional. Una nueva aplicación OpenCL busca eliminar esta barrera creando firmware FPGA a partir de kernels escritos en el lenguaje de programación OpenCL C. Altera Corporation (fabricante de la arquitectura Stratix V) ha lanzado Altera SDK para OpenCL. Con este conjunto de herramientas, los desarrolladores pueden generar hardware personalizado adaptado a su aplicación específica. Esto libera al desarrollador de aplicaciones del aburrimiento de un trabajo que es mejor dejar a los ingenieros eléctricos y, al mismo tiempo, abre un fascinante mundo de posibilidades.

Todas las tendencias de hardware que hemos discutido, tomadas en conjunto, presentan desafíos importantes para cualquier cadena de herramientas específica de un proveedor. Considere el modelo de programación para un sistema con un procesador host heterogéneo, mejorado con un acelerador discreto (GPU u otro). El uso eficiente de estos recursos requerirá la capacidad de integrar estrechamente el trabajo en paralelo de datos y el trabajo en paralelo de tareas, junto con el movimiento de datos entre las diversas unidades de cálculo. ¿Realmente queremos confiar en un complicado mosaico de herramientas específicas de proveedores para abordar este desafío? Ahora imagine que también necesita admitir un sistema provisto de manera similar construido a partir de un conjunto diferente de arquitecturas. ¿Cuántas versiones de su código debería escribir? ¿Cuántos años-hombre podría necesitar para tal tarea?

Con OpenCL, implementar tal modelo es simple. Esto se debe a que OpenCL es un reflejo natural de las arquitecturas de hardware competidoras en las que está diseñado para ejecutarse. OpenCL se adapta a cada una de las arquitecturas anteriores y, por diseño, no tiene problemas para acomodarlas todas juntas. Al ser un estándar abierto, los nuevos proveedores pueden participar en el diálogo de OpenCL, lo que garantiza que OpenCL podrá admitir futuros desarrollos de hardware, independientemente de la dirección que tomen. Además, con su soporte para dispositivos personalizados, OpenCL ofrece la flexibilidad de incorporar recursos del sistema que no se ajustan a la noción actual de un dispositivo informático, lo que abre oportunidades para integrar DSP o ASIC desarrollados internamente.

Gran parte del FUD (miedo, incertidumbre y duda) dirigido a OpenCL se ha centrado en el mantra de que OpenCL puede ser portátil pero no portátil. Este es un intento de desviar la discusión del problema real. Claramente, todo el hardware no es el mismo y ningún enfoque único para expresar un algoritmo paralelo puede ser óptimo para la amplia variedad de arquitecturas disponibles actualmente. Ese no es el objetivo de OpenCL. El verdadero poder de OpenCL es que proporciona la infraestructura que nos permite abordar diferentes combinaciones de hardware dentro de un solo marco. OpenCL nos libera del viejo escenario donde los desarrolladores tienen que usar una combinación ad hoc de interfaces para soportar múltiples arquitecturas. Es cierto que es posible que necesitemos escribir una nueva versión de nuestro kernel para obtener el mejor rendimiento en la arquitectura A, pero ¿no es eso lo que realmente queremos? Con OpenCL, los desarrolladores pueden cambiar fácilmente entre diferentes implementaciones de kernel, topologías de ejecución e interpretaciones de modelos de memoria. Esta flexibilidad está en el corazón de la filosofía OpenCL. Entonces, para los detractores de OpenCL: un sapo puede criticar la forma en que un pájaro bate sus alas, pero solo para distraernos del hecho de que el sapo no puede volar.

Una cosa que ha faltado a OpenCL hasta ahora es una organización formal para sus usuarios. Para remediar esto, algunos de los principales partidarios de OpenCL han organizado un nuevo grupo de usuarios. Dado que OpenCL se trata de la portabilidad de la computadora, este nuevo grupo se llama apropiadamente Comportabilidad. Nacida como una empresa sin ánimo de lucro, Comportability es un foro abierto para todo lo relacionado con OpenCL. La inscripción es gratuita. Se invita a las personas a unirse a los debates, cargar software y participar en el taller anual. Las instituciones y los proveedores pueden unirse como miembros con derecho a voto y están invitados a formar capítulos regionales, a los que se alienta a albergar futuras reuniones y seminarios.

los 1er Taller Internacional sobre OpenCL (IWOCL), la Reunión Anual del Grupo de Usuarios de Comportability se llevará a cabo del 13 al 14 de mayo de 2013 en el Technology Square Research Building (TSRB) en el Instituto de Tecnología de Georgia en Atlanta, Georgia. La inscripción para este evento está abierta y el programa está Online.

Puedes compartir en tus redes sociales para que tus colegas lo flipen

??? ? ? ???

Comparte