Nuevos grados de paralelismo, viejos planes de programación - Calendae | Informática, Electrónica, CMS, Ciberseguridad

Nuevos grados de paralelismo, viejos planes de programación

Hola y mil gracias por leerme. Te escribe Simón Sánchez y en el día de hoy vamos a hablar sobre Nuevos grados de paralelismo, viejos planes de programación

Aprovechar las capacidades del hardware HPC ahora es más una cuestión de impulsar niveles más profundos de paralelismo en lugar de agregar más núcleos o overclocking. Esto significa que es el momento adecuado para una revolución en la programación. La pregunta es si esa revolución debe ser la que prenda fuego al paisaje o la que gestione las cosas «diplomáticamente» con la infraestructura existente.

Mientras que algunos abogan por un enfoque de extraer y reemplazar para repensar el código para la nueva era de la capacidad informática, otros, incluido el director de software de Intel, James Reinders, abogan por enfoques que combinen lo antiguo y lo nuevo, que preserven el ‘orden de los modelos de programación existentes al tiempo que permite grandes avances para el paralelismo.

Con ese fin, Reinders describió la última versión de Intel de Parallel Studio XE 2015 para nosotros esta semana, señalando la adición de nuevas capacidades de programación vectorial explícita, así como las muchas características dentro de OpenMP 4.0, que es una parte significativa de la nueva versión.

No es difícil imaginar los argumentos a favor de mantener un modelo de programación consistente para un mundo de muchos núcleos, pero pocos esperan que la pendiente sea fácil de escalar. En el corazón del enfoque de Intel para combinar lo antiguo y lo nuevo se encuentran algunas características clave dentro de OpenMP 4.0, que según Reinders todavía constituyen un «encanto oculto» que aún no ha sido explorado por completo por el mundo de HPC. Más específicamente, señala que tres elementos clave para aprovechar las nuevas capacidades de hardware (tareas, vectorización y descarga) no solo están presentes en OpenMP 4.0, sino que trabajan juntos al unísono y representan un cambio de juego en la forma en que veremos las posibilidades de preservar modelos de programación y bases para la futura generación de códigos.

«La pregunta es, ¿podemos mantener los desafíos limitados de escalar entre núcleos y vectorización para evolucionar en esta nueva era? ¿Podemos en cambio convertir ese conjunto de desafíos en un problema de programación que se resolverá contra el aprendizaje de lenguajes exóticos o su abandono? ¿La sólida base de código que tenemos? ”, preguntó Reinders. En respuesta a esto, señaló un nuevo trabajo que su equipo en Intel, así como socios de todo el mundo, están haciendo para mejorar esta capacidad a través de OpenMP 4.0. además de sus otras bibliotecas y herramientas matemáticas específicas de Intel.

El problema en este momento con OpenMP 4.0 son solo las capacidades para lograr el nuevo paralelismo / objetivos del entorno de programación existente. Sigue siendo una cuestión de conocimiento, capacitación y ejemplos del mundo real que muestran cómo los tres objetivos de asignación de tareas, vectorización y descarga funcionan dentro de la misma caja con esta nueva versión. Reinders dice que las preguntas más frecuentes que recibe ahora giran en torno a lo que está dentro del estándar en general: todavía está en una fase de «patear los neumáticos» que espera que la comunidad pueda superar, especialmente en esta era de potencial. Paralelismo de 244 vías con el Xeon Phi.

Dice que algunos ejemplos específicos de hechizos ocultos de OpenMP 4.0 están contenidos en la nueva directiva Collapse, que esencialmente permite que el compilador maneje la tarea en los núcleos además de la vectorización al mismo tiempo. En otro escenario, sería posible descargar y tener un bucle que se ocupa de la tarea y la vectorización. En otras palabras, los usuarios están haciendo cosas complicadas porque necesitan gestionar estos aspectos de las mejoras de rendimiento con enfoques individuales en lugar de abordar potencialmente los tres al mismo tiempo. La ventaja de esto es profunda, argumentó Reinders, pero dijo que todavía se pierde en la abrumadora fase de prueba inicial en la que muchos están trabajando ahora.

La principal adición al lanzamiento es la programación vectorial explícita, que según Reinders es de creciente importancia. Esta es una característica importante porque la vectorización ofrecerá algunas mejoras de rendimiento profundas para el código HPC, lo que también aumenta la eficiencia general, ya que puede calcular más rápido con la CPU configurada en un estado de menor energía. «La pregunta en estos días es cómo comenzar a obtener códigos para aprovechar al máximo las instrucciones vectoriales en los conjuntos de instrucciones modernos. Los lenguajes como C y Fortran no se escribieron con eso en mente, por lo que ha habido muchos trucos para sugerir al compilador. vectorizando en los años que no son tan distintos a lo que estaban haciendo para conseguir más paralelismo en los 80 y 90 «.

Ahora, en lugar de ir y venir con el compilador para que se auto-vectorice, el objetivo es extender los lenguajes para que todavía se vean como C y Fortran y hacerle saber al compilador que está listo para vectorizar un bucle incluso si hay algunos problemas incrustados en el propio idioma. En OpenMP 4.0, esto se logra a través de Pragma OMP SIMD, que está diseñado para minimizar los cambios de código durante la vectorización del código. Se puede usar para vectorizar bucles que el compilador normalmente no vectorizaría automáticamente sin todos los trucos. El siguiente gráfico destaca el cambio de código mínimo necesario con el aumento de rendimiento asociado.

«Si piensas en SSE, que presentamos hace más de una década, podría hacer 2 números de doble precisión a la vez o cuatro sencillos, y eso fue genial, dijo Reinders.» Luego viene AVX, que podría hacer 8 operaciones de punto flotante. precisión simple o doble 4, pero ahora estamos viendo Phi con AVX 512 y usted puede hacer 16 cálculos de punto flotante de precisión simple o doble 8. Es una diferencia asombrosa.

En otras palabras, el hardware sigue encontrando formas de hacer más, pero la diferencia entre no vectorizar y no hacerlo puede ser de 16 a 1 con el Phi, por ejemplo. «He estado enseñando vectorización durante una década; una cosa es entusiasmar a la gente acerca de duplicar el rendimiento del código, pero cuando es 16x es una gran diferencia, demasiado para ignorar».

Para aquellos que esperan ver cómo se ven estas mejoras de rendimiento para otro código, consulte el cuadro a continuación o encuentre más detalles sobre las nuevas actualizaciones en Parallel Studio aquí: https://software.intel.com/en-us/intel-parallel – estudio-xe /

Puedes compartir en una historia de tu Instagram para que tus colegas lo consulten

??? ? ? ???

Comparte