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.