El presente proyecto se enmarca en el ámbito de la Computacion de Altas Prestaciones (CAP), de las nuevas arquitecturas que se utilizan tanto en supercomputadores como en dispositivos móviles (smartphones, tablets, etc.) y de cómo explotarlas desde el punto vista de la programabilidad y de la eficiencia energetica. Las arquitecturas de los modernos computadores se vuelven más complejas conforme sus diseñadores dan respuesta a restricciones impuestas por la tecnología de dispositivos electrónicos. Las plataformas escalables heterogéneas que han sido posibles gracias a la combinación de arquitecturas multinúcleo y aceleradores hardware (p.ej. GPUs) se posicionan claramente como alternativas de futuro. No obstante, esta tendencia en la escalabilidad de la arquitectura se produce al precio de la portabilidad, la productividad y el consumo de energía. Hacer un uso eficiente de este tipo de plataformas implica el uso de diferentes modelos de programación (p. ej. MPI, OpenMP, OpenACC, SYCL, OpenCL, CUDA, RenderScript, etc.), asumiendo además que las herramientas disponibles para analizar la energía consumida por aplicaciones críticas son aún primitivas, observándose una notable ausencia de estándares. En estos momentos, la comunidad CAP está reformulando el diseño del modelo conjunto de programación con la esperanza de solventar este desafío. Simultáneamente, los propios fabricantes de computadores aportarían elementos al hardware del dispositivo para facilitar el análisis y la monitorización de la energía consumida. En este proyecto pretendemos abordar problemas presentes en este nuevo escenario. Analizaremos las nuevas especificaciones y estándares que entran en escena y que potencialmente permitirían aliviar el problema de la programabilidad y la portabilidad del código generado. Estudiaremos los problemas derivados del consumo energético y de la ausencia de herramientas y estándares para su análisis. Nos centraremos en los siguientes objetivos generales: a) Desarrollo de propuestas y modelos de programación que faciliten la programabilidad en entornos heterogéneos y su aplicación a aplicaciones de interés científico o del sector productivo. b) Análisis, diseño y construcción de herramientas que permitan estudiar, monitorizar y construir modelos analíticos del consumo de energía de aplicaciones que hacen uso de sistemas heterogéneos. Conceptualmente los dispositivos móviles disponen de una arquitectura de características similares a la de un supercomputador, sistemas heterogéneos que combinan procesadores multinúcleo con algún tipo de GPU, por lo que las problemáticas asociadas a la programabilidad, portabilidad y consumo de energía se comparten. No obstante, el conjunto de restricciones inherentes a los dispositivos móviles hacen que las soluciones encontradas no puedan ser directamente trasladadas desde un supercomputador a un dispositivo móvil. Pretendemos abordar ambos tipos de contextos, lo que implica la búsqueda y experimentación de soluciones para un conjunto amplio de retos que, hasta la fecha, no han sido resueltos satisfactoriamente.
This project is conceived within the scope of High Performance Computing (HPC), and more precisely in the field of the emerging architectures used both in supercomputers as in mobile devices (smartphones, tablets, etc.), and also in the context of how these architectures will be exploited from the perspective of programmability and energy efficiency. The architectures of modern computers have become more complex as their designers provide solutions to the constraints imposed by the technology of electronic devices. The heterogeneous scalable platforms that have been possible by the combination of multicore architectures and graphical accelerators (i.e. GPUs) are clearly stated as an alternative for the future. Nevertheless, this trend is achieved at the cost of the portability, productivity and energy consumption. Making an efficient use of these platforms involves the management of several different programming models (i.e. MPI, OpenMP, OpenACC, OpenCL, SYCL, CUDA, RenderSCript, etc.), assuming also that the tools available to analyze the energy consumed by critical applications are still primitives, and all of this in the context a noticeable absence of standards. Currently, the HPC community is rethinking the whole programming model with the hope to solve this challenge. At the same time, the computer manufacturers would provide components to the device hardware to enable the analysis and monitoring of the energy consumption. In this project we intend to address problems arising in this new scenario. We will analyze those new specifications and standards coming into the scene that would potentially alleviate the problems associated to the programmability and portability of the generated code. We will study the problems derived from the energy consumption and from the absence of standards tools for its analysis. We will focus on the following general objectives: a) Development of proposals and programming models to ease the programmability in heterogeneous systems and applying them to scientific problems or to problems coming from the productive sector. b) Analysis, design and building of tools that allow to study, monitoring and building of analytical models for the energy consumption of applications that use heterogeneous systems. Conceptually, the mobile devices are provided with an architecture of similar features to a supercomputer, an heterogeneous system that combines multicore processors with some kind of GPU, so the problems associated to programmability, portability and energy consumption also appear. However, the particular constraints inherent to mobile devices make that the solutions found can not be directly brought from a supercomputer to a mobile device. We intend to broach both contexts, and that implies the searching and experimentation of solutions for a wide set of challenges that have not been solved up to now.