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...
| Autor: | |
|---|---|
| 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 |
| 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. |
|---|