Plantilla parallel_for heterogénea implementada en INTEL ONEAPI - Domínguez Berdún, Juan Pedro (My University, 2021)
Este trabajo consiste en el desarrollo e implementación de un template de alto nivel, basado en la librería oneTBB de Intel, que permita la ejecución de bucles paralelos de forma heterogénea (Heterogeneous Parallel For). El template se apoya en un planificador llamado LogFit que permite el reparto automático de la carga entre los cores de CPU y la GPU. Se proporciona una implementación basada en oneTBB 2020 que usa las clases Flow Graph con soporte de nodos OpenCL, y otra basada en oneAPI/SYCL y oneTBB 2021 que permite mantener en el mismo fuente el código de GPU y el de CPU. Este nuevo template permite la ejecución de forma fácil y eficiente de bucles paralelos sobre plataformas heterogéneas CPU GPU, simplemente proporcionándole el rango de iteraciones del bucle, la función a ejecutar en CPU (en caso de ser este el dispositivo elegido para ejecutar un subrango de las mismas) y el kernel (en lenguaje OpenCL o en SYCL) a ejecutar en la GPU (en caso de ser esta la elegida). Además de la implementación del template y la comprobación de su correcto funcionamiento, se ha realizado una comparación de rendimientos entre distintas implementaciones de dos kernels computacionales. Además del rendimiento se ha evaluado tanto la sobrecarga de la nueva abstracción y la reducción del esfuerzo de programación.
INTEL ONEAPI implementation of a heterogeneous parallel_for template
Keywords: Programación en paralelo (Informática); Ordenadores paralelos; Arquitectura de ordenadores; Informática - Trabajos Fin de Grado; Grado en Ingeniería Informática - Trabajos Fin de Grado; C++; TBB; OpenCL; Computación paralela; Computación heterogénea; GPU; oneAPI; DPC++; SYCL