NVIDIA apunta a la era de la informática GPU posterior a CUDA - Calendae | Informática, Electrónica, CMS, Ciberseguridad

NVIDIA apunta a la era de la informática GPU posterior a CUDA

Hola y mil gracias por leerme. Te escribe Simón Sánchez y en el día de hoy hablaremos sobre NVIDIA apunta a la era de la informática GPU posterior a CUDA

Perdido en la flotilla de noticias de proveedores en la Supercomputing Conference (SC11) en Seattle el mes pasado estaba el anuncio de un nuevo estándar de programación paralela basado en directivas para aceleradores. Denominado OpenACC, el estándar abierto está destinado a llevar la computación GPU al ámbito del programador promedio, haciendo que el código resultante sea portátil para otros aceleradores e incluso CPU multinúcleo.

Por razones obvias, NVIDIA promueve y respalda en gran medida OpenACC, pero son The Portland Group (PGI) y Cray quienes lideran los primeros esfuerzos para comercializar la tecnología. PGI ya ha implementado un conjunto muy similar de directivas de aceleración, que se han convertido en parte de la base del estándar OpenACC. Cray está desarrollando su propio compilador OpenACC y se espera que sus clientes XK6, como el Oak Ridge National Lab y el Swiss National Supercomputing Center, se encuentren entre los primeros superordenadores en usuarios de la tecnología.

En pocas palabras, las directivas OpenACC funcionan de manera muy parecida a las directivas OpenMP, pero son específicamente aplicables a código paralelo de gran cantidad de datos. Se pueden insertar en programas estándar C, C ++ y Fortran para indicar al compilador que paralelice ciertas secciones de código. El compilador se encarga de la logística de mover datos de un lado a otro entre la CPU y la GPU (o lo que sea) y mapear el cálculo al procesador apropiado.

La idea es permitir que los desarrolladores realicen cambios relativamente pequeños en el código existente (o nuevo) para exponer regiones paralelas para la aceleración. Dado que las directivas están diseñadas para aplicarse a un procesador paralelo genérico, el mismo código se puede ejecutar en una CPU multinúcleo, GPU o cualquier otro tipo de hardware paralelo compatible con el compilador. Esta independencia del hardware es particularmente importante para la comunidad de HPC, que se muestra reacia a adoptar entornos de programación no portátiles específicos del proveedor.

Desde la perspectiva de NVIDIA, el objetivo principal es llevar la computación GPU a la era posterior a CUDA. CUDA C y Fortran son los lenguajes de programación más utilizados para la programación de GPU en la actualidad, pero la tecnología subyacente es propiedad de NVIDIA y ofrece un modelo de software de procesamiento de GPU de nivel relativamente bajo. En consecuencia, el uso de CUDA hoy en día tiende a limitarse a tipos de ciencias de la computación más que al programador o investigador promedio.

OpenCL, que es compatible con NVIDIA, AMD y muchos otros, también proporciona un marco de programación paralelo para GPU y otros aceleradores y, a diferencia de CUDA, es un estándar abierto genuino (bajo la dirección de Khronos Group, la misma organización que nosotros trajo OpenGL). Pero al igual que CUDA, OpenCL es de nivel relativamente bajo, lo que requiere una comprensión bastante profunda del funcionamiento interno del procesador de destino. Por lo tanto, al igual que CUDA, el uso de OpenCL se limita principalmente a los informáticos.

NVIDIA estima que hay más de 100.000 programadores de CUDA en el planeta y muchos menos desarrolladores de OpenCL, pero ven una audiencia potencial mucho mayor si pueden hacer que la programación de GPU sea más abierta y fácil de desarrollar. Básicamente, creen que OpenACC podrá hacer que la tecnología de GPU sea accesible para millones de científicos e investigadores a quienes no les importa incursionar en las complejidades de bajo nivel de las arquitecturas de procesador y las comunicaciones de chip a chip.

Steve Scott, director de tecnología de la unidad de negocios Tesla de NVIDIA, resume el objetivo de OpenACC de la siguiente manera: «Lo que nos gustaría hacer en este momento es aumentar sustancialmente la amplitud de aplicabilidad y la cantidad de personas que utilizan GPU».

Según Scott, la naturaleza de alto nivel de OpenACC no tendrá un impacto significativo en el rendimiento de la ejecución. Durante su anterior puesto de CTO en Cray, se encontró con códigos basados ​​en directivas de aceleración que estaban obteniendo entre el 5 y el 10 por ciento del rendimiento de CUDA codificado a mano. Según él, era bastante típico. Algunas aplicaciones, dice Scott, funcionaban incluso mejor que sus alternativas CUDA, gracias a la capacidad del compilador para optimizar cierto código más allá de lo que los simples mortales podrían lograr. En cualquier caso, OpenACC está diseñado para ser interoperable con CUDA, por lo que los núcleos ajustados manualmente pueden funcionar perfectamente con código basado en directivas si es necesario.

Además de PGI y Cray, CAPS Enterprise, un desarrollador francés de herramientas de software multinúcleo, también se ha inscrito para respaldar las nuevas directivas. Se espera que los tres proveedores tengan compiladores con soporte OpenACC listos en el primer semestre de 2012. Entre los partidarios de OpenACC se encuentran principalmente Intel y AMD, aunque ambos tienen procesadores (x86 multinúcleo, APU y GPU AMD e Intel MIC) sin duda metas capaces. Sin embargo, esto no evitaría necesariamente que PGI, CAPS o Cray construyan compiladores habilitados para OpenACC para hardware Intel y AMD.

PGI y NVIDIA están ejecutando una prueba gratuita de 30 días para los desarrolladores interesados ​​en poner a prueba el compilador de la directiva de aceleración actual. La afirmación es que la tecnología duplicará al menos el rendimiento de la aplicación con menos de 4 semanas de compromiso del desarrollador. Cientos de investigadores ya se han inscrito para la prueba, y esta semana NVIDIA informó algunos primeros resultados. Al menos un desarrollador pudo obtener un aumento de rendimiento de 5 veces en su aplicación después de solo un día de modificación de código.

Pero el verdadero propósito de los partidarios de OpenACC es que las directivas se incorporen al estándar OpenMP. Dado que OpenACC se derivó del trabajo realizado dentro del Grupo de trabajo del acelerador de OpenMP, es obvio que esto sucederá. Si bien no hay un cronograma para cuando la tecnología se incorporará a OpenMP, es muy probable que coincida con el lanzamiento de OpenMP 4.0, que se espera que se lance en 2012.

Recuerda compartir en una historia de tu Instagram para que tus amigos lo vean

??? ? ? ???

Comparte