Tesis "Plataforma de cómputo heterogéneo flexible y de propósito general"
Sustentante: Erick Elizondo Rodríguez
Director: Dr. José Juan García Hernández, Cinvestav Unidad Tamaulipas
Sinodales: Dr. Gregorio Toscano Pulido, Cinvestav Unidad Tamaulipas; Dr. Mario Garza Fabre, Cinvestav Unidad Tamaulipas; Dr. José Juan García Hernández, Cinvestav Unidad Tamaulipas.
Resumen:
El cómputo heterogéneo es una alternativa atractiva para la aceleración de algoritmos, mediante el uso simultáneo de dispositivos de cómputo diversos (como CPUs, GPUs o FPGAs). Sin embargo, la codificación y el despliegue de algoritmos en un entorno heterogéneo es un proceso complejo, que requiere de conocimientos específicos para lograr una implementación efectiva. En este proyecto de investigación se desarrolla una plataforma conformada por componentes de hardware y software, con el objetivo de simplificar el proceso de ejecución de algoritmos bajo el enfoque de cómputo heterogéneo, desde el punto de vista de un usuario. La plataforma permite la generación automática del código fuente paralelo para OpenCL utilizando el compilador PPCG como analizador de código, el cual es adaptado para hacer uso de un conjunto variable de dispositivos de cómputo. Con la plataforma, el proceso de codificación de un algoritmo en un entorno heterogéneo se reduce a ingresar su código fuente secuencial con requerimientos mínimos de formato, a partir del cual y de manera automática se genera un programa paralelo ejecutable en OpenCL. Para la validación del correcto funcionamiento y generalidad de la plataforma se realizaron varios experimentos usando como datos de entrada los códigos fuente de los algoritmos de la suite Polybench/C en su versión 3.2, verificando su correcta ejecución y analizando su rendimiento comparado con implementaciones secuenciales. Los resultados experimentales demuestran que la plataforma permite una flexibilidad y generalidad en el cómputo heterogéneo al generar soluciones heterogéneas correctas para todo código fuente secuencial ingresado, donde se obtienen resultados de ejecución correctos en todo caso, sin importar la cantidad y/o tipo de dispositivos empleados. Al mismo tiempo, se observa que con la plataforma se obtienen aceleraciones considerables, las cuales son de 50x en promedio con respecto a las versiones secuenciales de los algoritmos, llegando a obtener una aceleración de 278.95x en el mejor de los casos.