High-performant and easy-to-use solutions for complex parallel problems

  1. Álvarez Martínez, Millán
Dirigida por:
  1. Basilio B. Fraguela Director/a
  2. José Carlos Cabaleiro Domínguez Director

Universidad de defensa: Universidade da Coruña

Fecha de defensa: 21 de junio de 2024

Tribunal:
  1. Javier Díaz Bruguera Presidente/a
  2. Margarita Amor Secretario/a
  3. Diego R. Llanos Vocal

Tipo: Tesis

Resumen

In the multicore architectures and distributed systems available today, exploitingapplication parallelism has become a necessity to achieve high-performance levels.Being able to take advantage of all the resources of these systems through parallelprogramming is not trivial, and commonly requires great eort on the part ofthe programmer and a high level of knowledge of the technology and systems used.Although there is multiple research in the eld of parallel application development,many of the current solutions have signicant limitations in terms of their applicability,performance and/or usability. This Thesis introduces new tools to support thedevelopment of parallel applications in the form of software libraries with the aim ofreducing their development and maintenance costs. These tools provide ecient solutionsto complex problems, internally making use of advanced parallel techniquesto achieve high performance, while remaining user-friendly. The rst two proposalsare parallel skeleton libraries that aim to solve divide-and-conquer problems, especiallythose with large imbalances and high levels of recursion. The rst does itfor shared memory systems, while the second does it for hybrid distributed-sharedmemory systems. Finally, a new thread-level speculative parallelization model andits implementation in a library are presented. This strategy makes use of speculativeparallel execution techniques to allow the parallelization of almost any loop,even those with dependencies that are initially dicult to parallelize, with hardlyany modications to the original code. The language used for the implementationsis C++. This widely used language provides an excellent performance level while allowing general programming through templates and other abstractions, which areperfect for developing advanced libraries with great applicability.