[ca] Els sistemes heterogenis s'han popularitzat, ja que permeten incrementar la potència de càlcul sense implicar un augment del consum energètic. Aquests sistemes van des de plataformes encastades i dispositius mòbils, fins a servidors i clústers d'altes prestacions. En tots ells, la gestió dels coprocessadors segueix el patró primari-secundari on la unitat de còmput general (CPU, per les seves sigles en anglès) dirigeix la resta d'elements. Aquesta gestió limita les possibilitats dels sistemes i limita les parts de les aplicacions que poden ser executades en els acceleradors. Aquesta tesi presenta diferents propostes per millorar l'ús dels coprocessadors dins dels models de programació paral·lels basats en tasques. Aquests models de programació són una eina molt potent que permet programar fàcilment aplicacions pels sistemes heterogenis. La primera proposta millora els models de programació basats en tasques mitjançant aproximacions asíncrones, concurrents i parametritzables. Les millores són a tots els nivells, des del model de programació fins a les comunicacions a baix nivell entre les llibreries i els coprocessadors. Els resultats de l'avaluació mostren que les millores augmenten el rendiment de les aplicacions perquè permeten adaptar-les fàcilment a les plataformes d'execució. La segona proposta afegeix suport per la creació de tasques i la seva sincronització dins dels coprocessadors. Les tasques enviades als coprocessadors poden crear tasques filles pel mateix coprocessador o per altres elements del sistema. Això flexibilitza i facilita la programació d'aplicacions. L'avaluació mostra l'eficiència de la proposta respecte a la latència i el consum d'energia. Els resultats revelen que les aplicacions poden incrementar el seu rendiment i optimitzar el seu consum energètic creant les tasques directament a dins dels coprocessadors. La millora es deu a la baixa latència de la gestió de tasques dins dels coprocessadors que també suposa una reducció de les comunicacions entre la CPU i el coprocessador. La tercera proposta amplia les capacitats dels models de programació basats en tasques introduint conceptes de sistemes recurrents. La sintaxi bàsica d'una tasca s'amplia amb noves clàusules per distingir les recurrents i proporcionar al runtime la informació necessària. L'avaluació de la proposta mosta una millora en la programabilitat de les aplicacions gràcies a la nova sintaxi. Aquesta permet la creació de sistemes recurrents amb menys codi i amb una precisió major. La gestió directa de les repeticions i períodes de les tasques recurrents dins dels coprocessadors resulta en una latència mínima que permet qualsevol granularitat de tasques.

[en] Heterogeneous platforms had become popular to increase the computational power of the systems within a constrained power budget. They are present in several systems, from embedded platforms and mobile devices to high-end servers and clusters. However, the co-processors are managed following a master-slave model where the general-purpose CPU drives the rest of elements. This management limits the system possibilities as not all application parts are suitable to be executed in an accelerator. This thesis presents different proposals to enhance the usage of co-processors in task-based parallel programming models, which are a powerful tool to easily program applications for heterogeneous platforms. The first proposal enhances the task-based systems with an asynchronous, concurrent, and parameterizable behavior. The improvements go across the full-stack, from the programming model level down to the low-level communications used between the libraries and the co-processors. The evaluation shows that the implemented improvements boost the applications' performance as they can be easily tuned for the running platform. The second proposal adds support for task spawn and synchronization in co-processors. The offloaded tasks can create child tasks that target other architectures or remain inside the co-processor. This allows the programmers to implement applications easily and effectively. The evaluation shows the efficiency of the proposal implementation in terms of latency and power consumption. The results show that applications can increase their performance and optimize their power consumption just moving the task spawn from the host threads to the co-processor. This is thanks to the low-latency task management inside the co-processors, which also reduces the communications between the host and the co-processor. The third proposal extends task-based programming models with concepts of recurrent workloads. The regular task syntax has been extended with new clauses to label the recurrent tasks and provide the needed information to the runtime. The evaluation shows an application programmability increase thanks to the new syntax, which allows the specification of recurrent systems with much less code and better accuracy. Also, the direct management of task repetitions and periods in the co-processors allows an almost zero-latency management that is able to manage any task granularity.