Generación automática de códigos masivamente paralelos a partir de ExaSlang
Autores: Kuckuk, Sebastian; Köstler, Harald
Idioma: Inglés
Editor: MDPI
Año: 2016
Acceso abierto
Artículo científico
2016
Generación automática de códigos masivamente paralelos a partir de ExaSlang
Categoría
Ingeniería y Tecnología
Subcategoría
Ingeniería de Sistemas
Palabras clave
Lenguajes específicos de dominio
Marcos de generación de código
Paralelización
Partición de problemas
Paralelismo
Marco ExaStencils
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 22
Citaciones: Sin citaciones
Los lenguajes específicos de dominio (DSLs) tienen el potencial de proporcionar una interfaz intuitiva para especificar problemas y soluciones para expertos en el dominio. Basado en esto, los marcos de generación de código pueden producir código fuente compilable. Sin embargo, además de optimizar el rendimiento de ejecución, la paralelización es clave para empujar los límites en el tamaño del problema y un ingrediente esencial para el rendimiento exascala. Discutimos conceptos necesarios para la introducción de tales capacidades en los generadores de código. En particular, se detallan aquellos para la partición del problema a resolver y el acceso a los datos particionados. Además, se discuten posibles enfoques para exponer el paralelismo a los usuarios a través de un DSL dado. Además, presentamos la implementación de estos conceptos en el marco de ExaStencils. En su alcance, se desarrolla un marco de generación de código para solucionadores geométricos multigrid altamente optimizados y masivamente paralelos. Utiliza especificaciones de su DSL externo de múltiples capas ExaSlang como entrada. Basándonos en una versión general para generar código paralelo, desarrollamos e implementamos extensiones y optimizaciones ampliamente aplicables. Finalmente, se realiza un estudio de rendimiento de las aplicaciones generadas en la supercomputadora JuQueen.
Descripción
Los lenguajes específicos de dominio (DSLs) tienen el potencial de proporcionar una interfaz intuitiva para especificar problemas y soluciones para expertos en el dominio. Basado en esto, los marcos de generación de código pueden producir código fuente compilable. Sin embargo, además de optimizar el rendimiento de ejecución, la paralelización es clave para empujar los límites en el tamaño del problema y un ingrediente esencial para el rendimiento exascala. Discutimos conceptos necesarios para la introducción de tales capacidades en los generadores de código. En particular, se detallan aquellos para la partición del problema a resolver y el acceso a los datos particionados. Además, se discuten posibles enfoques para exponer el paralelismo a los usuarios a través de un DSL dado. Además, presentamos la implementación de estos conceptos en el marco de ExaStencils. En su alcance, se desarrolla un marco de generación de código para solucionadores geométricos multigrid altamente optimizados y masivamente paralelos. Utiliza especificaciones de su DSL externo de múltiples capas ExaSlang como entrada. Basándonos en una versión general para generar código paralelo, desarrollamos e implementamos extensiones y optimizaciones ampliamente aplicables. Finalmente, se realiza un estudio de rendimiento de las aplicaciones generadas en la supercomputadora JuQueen.