Support for scientific libraries and asynchronous operations in heterogeneous programming

  1. Rodríguez Gutiez, Eduardo
Dirixida por:
  1. Arturo González Escribano Director
  2. Yuri Torres de la Sierra Co-director

Universidade de defensa: Universidad de Valladolid

Fecha de defensa: 23 de marzo de 2021

Tribunal:
  1. Tomás F. Pena Presidente
  2. Francisco José Andújar Muñoz Secretario/a
  3. Dalvan Jair Griebler Vogal

Tipo: Tese

Resumo

El trabajo presentado en esta tesis está enfocado en un área de estudio denominada computación paralela. Un sistema paralelo contiene múltiples dispositivos o unidades de cálculo que pueden operar de forma simultánea. Estos sistemas permiten obtener mejor velocidad de procesamiento a la hora de resolver problemas complejos o de utilizar grandes conjuntos de datos. Esto se consigue descomponiendo el problema o los datos en trozos más pequeños y ejecutándolos simultáneamente, utilizando, idealmente, todas las unidades de cálculo disponibles en el sistema. En un sistema paralelo, tal como un servidor, un clúster, o un supercomputador, pueden coexistir dispositivos y unidades de cálculo con diferentes arquitecturas y características. Estos sistemas mixtos se denominan sistemas heterogéneos. La programación productiva y eficiente de estos sistemas continúa siendo un problema, dado que cada arquitectura, a menudo, requiere el uso de mecanismos de programación específicos o de bajo nivel por parte de programadores especializados. El mantenimiento, extensión y portabilidad de estos programas es una tarea compleja. Se están investigando enfoques de alto nivel que sean portables sin comprometer el rendimiento. Una solución parcial consiste en el uso de bibliotecas especializadas, que los fabricantes desarrollan específicamente para sus arquitecturas, y para dominios o ámbitos específicos, tales como el álgebra lineal (p. ej. BLAS) o las Transformadas Rápidas de Fourier (tal como FFTW). Otro enfoque, más genérico, consiste en utilizar código altamente abstracto para orquestar el flujo de ejecución de diferentes dispositivos, en combinación con un conjunto de implementaciones de los mismos algoritmos, cada una de ellas optimizada específicamente para una única arquitectura. Un sistema de tiempo de ejecución puede seleccionar y lanzar automáticamente el más apropiado para cada dispositivo de destino. Un proyecto que utiliza esta idea es el modelo de Controlador. La primera parte de esta tesis propone un mecanismo portable para el modelo de Controlador que abstrae y generaliza las diferentes interfaces de las bibliotecas específicas de fabricante. Proporciona una única biblioteca de núcleos de función que pueden ser lanzados desde el código principal del programa mediante una interfaz común, mezclando bibliotecas especializadas con implementaciones definidas por el usuario de los mismos u otros algoritmos. Internamente, las bibliotecas más apropiadas son seleccionadas y ejecutadas, en base al tipo de arquitectura del dispositivo de destino. Este enfoque obtiene tanto portabilidad como eficiencia. La segunda parte propone estrategias, que se aplican al modelo de Controlador, para implementar operaciones asíncronas, que puedan solapar automáticamente los cálculos ejecutados tanto en el sistema anfitrión como en los dispositivos con las transferencias de datos entre ellos. La propuesta utiliza un sencillo análisis de dependencias en tiempo de ejecución entre las diferentes fases de la aplicación para introducir de forma transparente la asincronía sin requerir esfuerzo alguno por parte del programador, optimizando y mejorando el rendimiento. Como caso de estudio, se implementa y verifica en el modelo de Controlador extendiendo su soporte a coprocesadores Xeon Phi. Esta tesis presenta avances el camino hacia la obtención de modelos y herramientas de programación más productivos y eficientes para sistemas heterogéneos. Propone soluciones para implementar, de forma portable, tanto soporte para bibliotecas de cálculo científico, como para introducir operaciones asíncronas en tiempo de ejecución.