[ca] El model d'execució de tasques és àmpliament utilitzat en l'enginyeria informàtica, ajudant els programadors a dissenyar, desenvolupar i comprendre sistemes de programari. OpenMP és el model de programació estàndard per paral·lelitzar algoritmes seqüencials en màquines de memòria compartida. Juntament amb la paral·lelització de tasques, OpenMP és capaç de paral·lelitzar convenientment aplicacions no estructurades i carregar les tasques en acceleradors com a target task. Tanmateix, la sobrecàrrega (i.e., overhead) de temps d'execució que implica el model de tasques d'OpenMP és una preocupació important per als usuaris que desenvolupen programes de tasques amb OpenMP. Aquest manuscrit se centra en la millora del model de tasques d'OpenMP. Més concretament, la primera contribució d'aquesta tesi consisteix a analitzar la sobrecàrrega de rendiment i els "bottlenecks" de les implementacions de tasques principals i proposar una solució en l'especificació d'OpenMP per abordar-la. Com a segona contribució, vam implementar la solució proposada, la directiva taskgraph, en el compilador LLVM. Juntament amb la implementació, vam avaluar el rendiment de la nostra solució per garantir que resol els problemes de rendiment. Finalment, vam explorar la possibilitat de millorar el mecanisme de offloading d'OpenMP aprofitant CUDA Graph i taskgraph. En fer-ho, també vam millorar la interoperabilitat d'OpenMP. Amb aquestes contribucions, millorem el model de tasques tant en l'especificació actual d'OpenMP com en la implementació. Esperem que aquest treball promogui l'ús de tasques d'OpenMP en general.

[es] El modelo de ejecución de tareas es ampliamente utilizado en la ingeniería informática, ayudando a los programadores a diseñar, desarrollar y comprender sistemas de software. OpenMP es el modelo de programación estándar para paralelizar algoritmos secuenciales en máquinas de memoria compartida. Junto con la paralelización de tareas, OpenMP es capaz de paralelizar convenientemente aplicaciones no estructuradas y cargar las tareas en aceleradores como un target task. Sin embargo, la sobrecarga (i.e., overhead) de tiempo de ejecución que incurre el modelo de tareas de OpenMP es una preocupación importante para los usuarios que desarrollan programas de tareas en OpenMP. Este manuscrito se centra en la mejora del modelo de tareas de OpenMP. Más concretamente, la primera contribución de esta tesis consiste en analizar la sobrecarga de rendimiento y los "bottlenecks" de las implementaciones de tareas principales y proponer una solución en la especificación de OpenMP para abordarla. Como segunda contribución, implementamos la solución propuesta, la directiva taskgraph, en el compilador LLVM. Junto con la implementación, evaluamos el rendimiento de nuestra solución para garantizar que resuelve los problemas de rendimiento. Finalmente, exploramos la posibilidad de mejorar el mecanismo de offloading de OpenMP aprovechando CUDA Graph y taskgraph. Al hacerlo, también mejoramos la interoperabilidad de OpenMP. Con estas contribuciones, mejoramos el modelo de tareas tanto en la especificación actual de OpenMP como en la implementación. Esperamos que este trabajo Promueva el uso de tareas de OpenMP en general.