Soporte para co-ejecución eficiente en sistemas heterogéneos.
Efficient co-execution support in heterogeneous systems.
Ver/ Abrir
Identificadores
URI: http://hdl.handle.net/10902/16359Registro completo
Mostrar el registro completo DCAutoría
Pérez Pavón, BorjaFecha
2019-05-31Director/es
Derechos
Atribución-NoComercial-CompartirIgual 3.0 España
Palabras clave
Arquitectura de ordenadores
Ordenadores vectoriales
Computer architecture
Vector computers
Resumen/Abstract
RESUMEN: Las arquitecturas heterogéneas ofrecen capacidades excelentes en términos tanto de rendimiento como de eficiencia energética. Sin embargo, la mayoría de sistemas y modelos de programación actuales consideran que los recursos heterogéneos son entidades totalmente independientes, dejando su gestión en manos del programador. Esto favorece el paralelismo de tareas y paradigmas de programación host-device. Como consecuencia, el programador no dispone de ninguna ayuda que facilite la colaboración de todos los dispositivos disponibles, realizando el cómputo asociado a una sola tarea y aprovechando el paralelismo de datos. Esta forma de operar recibe el nombre de co-ejecución y actualmente requiere que el programador divida manualmente la carga de trabajo, teniendo que encargarse de decisiones complejas como el equilibrio de carga o la distribución de datos. Sin embargo, para que la co-ejecución sea verdaderamente útil, es necesario que no requiera mayor esfuerzo que la utilización de un solo dispositivo. Esta tesis propone técnicas tanto software como hardware que posibilitan una co-ejecución eficiente sin esfuerzo. Estas técnicas incluyen dos nuevos algoritmos de balanceo de carga, una librería de abstracción, una implementación de co-ejecución en un modelo de programación basado en tareas y el diseño de un nuevo dispatcher dar soporte hardware a la co-ejecución.
ABSTRACT: Heterogeneous architectures offer outstanding capabilities in terms of both performance and energy efficiency. However, most current systems and programming models regard heterogeneous resources as independent entities, leaving their management at the hands of the programmer. This favours task parallelism and a host-device approach to programming. A consequence of this is that the programmer is effectively left alone regarding co-execution, which is the computation of all the devices, collaborating on the work associated to a single workload in a data-parallel manner. Achieving it requires a careful and manual division of the workload, which requires the programmer to make complex decisions such as those related to data distribution and load balancing. Nevertheless, for heterogeneous co-execution to be useful, it has to be effortless, requiring an equivalent amount of work to using a single device. This dissertation proposes software and hardware techniques to enable effortless, performant co-execution, including two novel load balancing algorithms, a new abstraction library, an implementation of co-execution in a task-based programming model and a new dispatcher design for hardware supported co-execution.
Colecciones a las que pertenece
- D30 Tesis [31]
- EDUC Tesis [550]