Hardware knob coordination in multi-threaded systems
Authors:   , Ortega Carrasco Cristobal 
Published: September 2024

(English) Every new generation of high performance computing (HPC) processors brings higher complexity to boost performance:
the increasing number of cores within the processor itself, cores with the ability to run multiple threads (i.e. Simultaneous Multithreading or SMT), increased available memory bandwidth, and multiple architectural improvements. On top of this, HPC systems are typically composed of multiple sockets with Non-Uniform Memory Access (NUMA) to increase the number of available processors in the system. As a result, the application running on the different processors experience contention in the acceess to shared resources, which might lead to individual application's performance degradation.

Modern HPC systems include hardware knobs to adapt architectural parameters to the workload demands with the goal of improving performance, energy, or power consumption. However, a default hardware knob configuration is set by the hardware designers and the responsibility of finding the best hardware knob configuration is left to the user, which is an overwhelming process due to the large search space and the different resource demands of applications. In addition, setting a hardware knob independently of others can result in suboptimal configurations and sometimes to conflicting decisions that jeopardize system power-performance efficiency.

Furthermore, the number and heterogeneity of compute devices, even within a single compute node, has been steadily on the rise. Conflicting decisions can appear when incorporating multiple diverse accelerators within a node to provide efficient performance growth through specialization (e.g. graphics processing unit or GPU), since complex heterogeneous systems with multiple discrete accelerators cannot afford to fully power all the devices simultaneously.

In a HPC system, the number of discrete devices that can run simultaneously at their highest frequency is limited by the globally-imposed power cap. Current systems incorporate a centralized power management unit that statically controls the distribution of power among the devices within the node. However, such static distribution policies are unaware of the dynamic utilization profile across the devices, which leads to power allocations that end up degrading system throughput performance. The problem is particularly acute in the presence of heterogeneity since type-specific performance-boost capabilities cannot be leveraged via utilization-agnostic static power allocations.

The main goal of this Thesis is to leverage runtime system data to intelligently coordinate hardware knobs while taking into account interactions between each other at application level, hardware level, and system level. This Thesis proposes multiple methods to dynamically coordinate multiple hardware knobs to maximize system power-performance efficiency.

At application level, we propose an infrastructure for shared memory parallel programming models that configures the different hardware knobs available in the architecture. During execution time, the best hardware configuration is discovered for different regions of the application. This Thesis proposes two mechanisms to discover the best hardware knob configuration: (1) libPRISM: an exploration-based approach useful for reduced search spaces that needs almost no previous knowledge of the system, and (2) MARK: an intelligent approach based on machine learning (ML) to search large design spaces.

At hardware level, this Thesis demonstrates that a hardware knob can benefit from fine-grained coordination between its own possible configurations.

At system level, this Thesis proposes a hardware/software power distribution mechanism that maximizes the performance of power-constrained heterogeneous systems by leveraging system information to distribute power among all the devices.

This thesis demonstrates that fine-grained hardware coordination is needed at different levels to maximize energy-efficiency.
(Català) Cada nova generació de processadors de computació d'altes prestacions (HPC per les sigles en anglès) està afegint major complexitat per incrementar el seu rendiment: un nombre més gran de nuclis dins del processador, nuclis que poden executar
multiples fils (i.e. Simultaneous Multithreading or SMT), l'ample de banda amb la memòria disponible, i múltiples millores arquitecturals. A més d'això, els sistemes d'HPC generalment es componen de diversos sòcols amb accés a memòria no uniforme (NUMA) per augmentar el nombre de processadors disponibles al sistema. Com a resultat, els recursos compartits del processador experimenten contenció, cosa que podria provocar una degradació del rendiment.

Els sistemes moderns de HPC inclouen botons hardware per adaptar paràmetres arquitecturals a les demandes de la càrrega de treball amb l'objectiu de millorar el rendiment, l'energia o el consum de potència. No obstant això, els dissenyadors estableixen una configuració daquests botons hardware predeterminada i la responsabilitat de trobar la millor configuració hardware recau en lusuari, la qual cosa és un procés aclaparador a causa del gran espai de cerca i les diferents demandes de recursos de les aplicacions. A més, establir un botó hardware independentment d'altres pot resultar en configuracions de baix rendiment i, de vegades, en decisions contradictòries que posen en perill l'eficiència del rendiment energètic del sistema.

A més, poden sorgir decisions conflictives quan s'hi incorporen múltiples acceleradors diversos dins d'un node per proporcionar un creixement de rendiment eficient a través de l'especialització (per exemple, unitat de processament de gràfics o GPU per les sigles en anglès), ja que els sistemes heterogenis complexos amb múltiples acceleradors discrets no es poden permetre alimentar completament tots els dispositius simultàniament.

En un sistema d'HPC, la quantitat de dispositius discrets que poden funcionar simultàniament a la freqüència més alta està limitada pel límit de potència imposat globalment. Els sistemes actuals incorporen una unitat d'administració de potencia centralitzada que controla estàticament la distribució de potencia entre els dispositius dins del node.
Aquestes polítiques de distribució estàtica desconeixen el perfil d'ús dinàmic en els dispositius, la qual cosa condueix a assignacions de potencia que acaben degradant el rendiment del sistema.

L'objectiu principal d'aquesta tesi és aprofitar informació generada en temps d'execució per coordinar de manera intel·ligent els botons hardware tenint en compte les interaccions entre ells a nivell d'aplicació, nivell de hardware, i nivell de sistema.
Aquesta tesi proposa múltiples mètodes per coordinar dinàmicament múltiples botons hardware per maximitzar l'eficiència del rendiment energètic del sistema.

A nivell d'aplicació, proposem una infraestructura per a models de programació paral·lela de memòria compartida que configura els diferents botons hardware disponibles. Durant el temps d'execució, es descobreix la millor configuració hardware per a diferents regions de gra fi de l'aplicació. Aquesta tesi proposa dos mecanismes per descobrir la millor configuració hardware: (1) libPRISM: un enfocament basat en exploració, útil per a espais de cerca reduïts que gairebé no necessiten coneixement previ del sistema; i (2) MARK: un enfocament intel·ligent basat en aprenentatge automàtic.

A nivell de hardware, aquesta tesi demostra que un botó hardware pot beneficiar-se d'una coordinació de gra fi entre les seves pròpies configuracions possibles.

A nivell de sistema, aquesta tesi proposa un mecanisme de hardware/software de distribució de potencia que maximitza el rendiment de sistemes heterogenis amb restriccions de potència aprofitant la informació del sistema per distribuir potència entre tots els dispositius.

Aquesta tesi demostra que es necessita una coordinació de maquinari detallada a diferents nivells per maximitzar l'eficiència energètica.