Planificación Dinámica de Tareas en Aceleradores - Lázaro Muñoz, Antonio José (Uma Editorial, 2019)
Las arquitecturas de computación de alto rendimiento (HPC) se han convertido en una herramienta clave para la investigación y desarrollo de aplicaciones en diversos campos científicos y técnicos. La incorporación de unidades de procesamiento especializadas, también llamadas aceleradores, conectadas mediante buses, como el bus PCIe, han incrementado el rendimiento conseguido por este tipo de arquitecturas. Las plataformas constituidas mediante la combinación de CPUs y aceleradores se denominan heterogéneas ya que incluyen arquitecturas con distintos conjuntos de instrucciones. En la actualidad son cada vez más habituales los sistemas de computación que usan diferentes clases de procesadores (normalmente CPUs y GPUs). Esta incorporación de distintos procesadores permite mejorar la flexibilidad y eficiencia del sistema para la computación de tareas particulares. Aunque la capacidad de procesamiento de propósito general de las GPUs permite realizar de forma eficiente cálculos matemáticos, las CPUs modernas son también capaces de alcanzar un rendimiento computacional similar aprovechando sus capacidades de paralelismo a nivel de instrucción y baja latencia. Es por ello que la gestión de estas plataformas heterogéneas requiere de sistemas de planificación que identifiquen cuáles tareas son más adecuadas para cada procesador. La ejecución concurrente de varias aplicaciones puede dar lugar al envío de varios kernels al acelerador. El soporte hardware para la ejecución concurrente de kernels varía de un acelerador a otro. Por ejemplo, en el caso de NVIDIA se denomina Hyper-Q a un conjunto de hasta 32 conexiones simultáneas, gestionadas por hardware, que permiten lanzar tareas independientes, mientras que en el caso de AMD se usan hasta 8 Asynchronous Compute Engines (ACEs) que pueden gestionar hasta 8 colas hardware cada uno de ellos.
Todos estos mecanismos se encargan de planificar las distintas tareas pero ninguno de ellos tienen en cuenta las transferencias de datos necesarias para completar las tareas. El rendimiento que se puede conseguir por la ejecución concurrente de un grupo de tareas es muy dependiente del orden de lanzamiento de las mismas. Una tarea habitualmente está compuesta por algunas (o ninguna) transferencias host to device (HtD), seguidas de uno o más comandos de ejecución, kernels, y por último algunas (o ninguna) transferencias device to host (DtH}). El envío de estas tareas a la GPU o al acelerador se realiza por medio de colas de comandos (o streams en terminología NVIDIA CUDA). De forma general, para conseguir la ejecución concurrente de tareas en un acelerador, estas deben lanzarse por distintas colas de comandos. En esta tesis se aborda el problema de planificar un conjunto de tareas en un entorno HPC con aceleradores conectados mediante buses PCIe que son usados concurrentemente por diferentes aplicaciones. Concretamente, nos hemos planteado estudiar cómo se ejecuta un grupo de tareas en un acelerador, y de qué forma podemos mejorar la planificación de esas tareas para disminuir el tiempo total de ejecución y aumentar la ocupación de los recursos hardware. Para ello nos hemos marcado los siguientes objetivos: 1. Obtener un modelo de ejecución de tareas que permita simular con exactitud los procesos de transferencias de datos y ejecución de kernels. 2. Diseñar un sistema de ejecución de tareas que permita explotar las posibilidades de concurrencia entre comandos pertenecientes a tareas distintas. 3. Proponer métodos que permitan encontrar, en tiempo de ejecución, cuál es el orden de planificación más adecuado para un grupo de tareas arbitrario. 4. Generalizar todas las propuestas para que sean viables tanto sobre arquitecturas distintas (NVIDIA, AMD e Intel) como sobre entornos diferentes (CUDA y OpenCL). 5. Validar todas las propuestas usando tareas reales y con cargas de trabajo heterogéneas que permitan representar cualquier combinación de grupos de tareas. Fecha de lectura de Tesis Doctoral: 8 de marzo de 2019.
Keywords: Ingeniería de ordenadores - Tesis doctorales; Arquitectura de ordenadores - Tesis doctorales; Ordenadores - Organización - Tesis doctorales; HyperQ; Planficación de Tareas; CUDA Streams; Colas de Comandos; Ejecución Concurrente