A highly optimized skeleton for unbalanced and deep divide‑and‑conquer algorithms on multi‑core clusters

Efficiently implementing the divide-and-conquer pattern of parallelism in distributed memory systems is very relevant, given its ubiquity, and difficult, given its recursive nature and the need to exchange tasks and data among the processors. This task is noticeably further complicated in the presen...

Descripción completa

Detalles Bibliográficos
Autores: Martínez, Millán A., Fraguela, Basilio B., Cabaleiro Domínguez, José Carlos
Tipo de recurso: artículo
Fecha de publicación:2022
País:España
Institución:Universidad de Santiago de Compostela (USC)
Repositorio:Minerva. Repositorio Institucional de la Universidad de Santiago de Compostela
Idioma:inglés
OAI Identifier:oai:minerva.usc.gal:10347/42112
Acceso en línea:https://hdl.handle.net/10347/42112
Access Level:acceso abierto
Palabra clave:Algorithmic skeletons
Divide-and-conquer
Template metaprogramming
Load balancing
Multi-core clusters
Hybrid parallelism
Descripción
Sumario:Efficiently implementing the divide-and-conquer pattern of parallelism in distributed memory systems is very relevant, given its ubiquity, and difficult, given its recursive nature and the need to exchange tasks and data among the processors. This task is noticeably further complicated in the presence of multi-core systems, where hybrid parallelism must be exploited to attain the best performance, and when unbalanced and deep workloads are considered, as additional measures must be taken to load balance and avoid deep recursion problems. In this manuscript a parallel skeleton that fulfills all these requirements while providing high levels of usability is presented. In fact, the evaluation shows that our proposal is on average 415.32% faster than MPI codes and 229.18% faster than MPI + OpenMP benchmarks, while offering an average improvement in the programmability metrics of 131.04% over MPI alternatives and 155.18% over MPI + OpenMP solutions.