[en] Nowadays, the use of high-performance coprocessors in general purpose computing systems is commonplace, as reected by the TOP500 list of the world's most powerful supercomputers. Programming these coprocessors eficiently presents a series of challenges, one of them is memory management. Coprocessors have their own memory space, and data transfers between the host machine and the coprocessor are costly. In this context, numerous proposals for alleviating this problem arise, some of them native, such as CUDA's asynchronous data transfers or unified memory, and third party tools as well, which often aim to ease the use of these native resources for the programmer. In this work, a comparison is made between two of these solutions: The programming model "Controllers", developed by the Trasgo group, and the OmpSs model, from the Barcelona Supercomputing Center. Though not their only aim, both present the programmer with an automatic system for introducing eficient data transfers. For this comparison, an OmpSs implementation of the Controllers benchmarks used by the Trasgo group was made. The eficiency of these applications was later determined experimentally. The results show that OmpSs is, in most cases, less eficient than Controllers, although in different magnitude depending on the application and machine used. This work also describes the GPU implementation of the Cholesky factorization, one of the prime examples used by the Barcelona Supercomputing Center in their OmpSs demonstrations, in view of a future Controllers version based on it.

[es] En la actualidad, es frecuente el uso de coprocesadores de alto rendimiento en sistemas de cómputo de propósito general, tal y como reeja la lista TOP500 de los mayores supercomputadores del mundo. Estos sistemas presentan una serie de desafios a la hora de desarrollar aplicaciones haciendo uso de estos dispositivos de forma eficiente, uno de ellos es la gestión de memoria. Los coprocesadores tienen su propio espacio de memoria, separado de la memoria de la máquina donde están instalados, y las transferencias de datos entre ambos son costosas. En este contexto, surgen diversas propuestas para aliviar este problema, algunas de ellas nativas, como las transferencias de memoria asíncronas o la memoria unficada de CUDA, y otras de terceros que en muchos casos pretenden facilitar al programador el uso de estos recursos nativos del modelo de programación. En este trabajo se realiza una comparativa entre dos de estas soluciones: El modelo Controllers del grupo de investigación Trasgo, y el modelo OmpSs, del Centro de Supercomputación de Barcelona. Aunque no es su única función, ambos ofrecen al desarrollador un sistema automático para introducir transferencias de memoria eficientes. Para realizar esta comparativa se ha realizado la implementación en OmpSs de las aplicaciones de prueba usadas por el grupo Trasgo en la librería Controllers, y se ha hecho un estudio experimental de la eficiencia de estas implementaciones. Los resultados muestran que no hay un claro vencedor, con diferencias en función de la aplicación, la máquina y la carga computacional de los casos de prueba. Sin embargo, sí se han detectado ciertos patrones. Este trabajo también describe la implementación para GPU de la factorización de Cholesky, uno de los ejemplos más usados por el Centro de Supercomputación de Barcelona en sus demostraciones de OmpSs, en vistas a una futura implementación y comparativa con Controllers.