Design and implementation of role-shifting threads in the LLVM runtime

Efficiency is a must in the HPC world. Supercomputers are extensively used in public research institutions, and the CPU time is limited and should be used responsibly. Users can improve their applications to that end, but tools and programming models must continue improving accordingly. Nowadays, su...

Descripción completa

Detalles Bibliográficos
Autor: Criado Ledesma, Joel
Tipo de recurso: tesis de maestría
Fecha de publicación:2022
País:España
Institución:Universitat Politècnica de Catalunya (UPC)
Repositorio:UPCommons. Portal del coneixement obert de la UPC
Idioma:inglés
OAI Identifier:oai:upcommons.upc.edu:2117/376133
Acceso en línea:https://hdl.handle.net/2117/376133
Access Level:acceso abierto
Palabra clave:High performance computing
OpenMP (Application program interface)
OpenMP
LLVM
Clang
Runtime
Paral·lelisme
Tasking
Free agents
MPI
Balanceig dinàmic de càrrega
Computació d'Altes Prestacions
Dynamic load balancing
High Performance Computing
Càlcul intensiu (Informàtica)
Àrees temàtiques de la UPC::Informàtica
Descripción
Sumario:Efficiency is a must in the HPC world. Supercomputers are extensively used in public research institutions, and the CPU time is limited and should be used responsibly. Users can improve their applications to that end, but tools and programming models must continue improving accordingly. Nowadays, supercomputers are heterogeneous machines and keep increasing the number of cores. Making all the software stack, from applications to runtimes, more malleable and flexible should be one of the community goals. It is not only necessary for the heterogeneity of the resources, but it will also help deal with system noise, load imbalances, communication inefficiencies, and dynamic workloads. This thesis presents the role-shifting threads, an evolution of the current OpenMP threads designed to improve the malleability and flexibility of the model. Depending on their roles, when not required in a parallel region, the threads may be used for other purposes. The free agent role has been added to the model, aiming to execute explicit tasks outside parallel regions. In addition, the Clang compiler has been modified to comply with the additions to the runtime. Furthermore, the role-shifting model has been integrated with the Dynamic Load Balance (DLB) library, used to dynamically solve imbalances in MPI+OpenMP applications. All software is released open-source. The utility of the role-shifting threads, and the free agent role, is demonstrated with three real-world scientific applications, one of them with a coupling case. Speedups from 1.192x to 2.44x are reached with the new runtime compared to a vanilla run, demonstrating the potential of this new model.