A Coarse-grained Reconfigurable Array for High-Performance Computing
A Coarse-grained Reconfigurable Array for High-Performance Computing
High-performance computing (HPC) comprises applications which run compute-intensive tasks on vast and at times scattered data and which need to be run on multi-node server systems communicating over high-speed networks to compute results as fast as possible. These systems are hardware-software-codesigned to guarantee a good trade-off between flexibility for different application mappings and high hardware utilization. Yet, the HPC applications are ultimately memory-bound, on the one hand, or communication-bound, on the other hand: The access latencies of memories historically have not decreased as fast as the compute performance of processors has increased, and the latencies of growing networks are inherently bottlenecking due to the physical distance of the nodes.
Designing HPC systems and tuning application mappings towards the best performance comes at the cost of a high power consumption: A huge portion of the total power goes into cooling the central processing units (CPUs). It is crucial to reduce the power consumption of processors to implicitly perform computations more power-efficiently. Hardware accelerators like coarse-grained reconfigurable arrays (CGRAs) are promising in this respect, since they have shown to have a better energy efficiency than traditional processors in the past. CGRAs feature multiple processing elements (PEs) which can be reconfigured at runtime which opens up more freedom for application mappings and opportunities for efficient execution of tasks.
In this work, the High-Performance Reconfigurable Processor (HiPReP) is proposed, a CGRA designed for HPC. Further, a methodology is presented on how to parametrize this CGRA such that it can harness the available bandwidth when running an application, e.g. a dense matrix-matrix multiplication (MMM), and on how to gauge trade-offs of scaling the number of PEs versus scaling the number of HiPReP instances in a system. Each HiPReP instance accesses the memory through a hardware component which we call frontend (FE) and which is connected to a regular level one cache (L1). Since loading and storing data as fast as possible is paramount to reduce idle times, the FE plays an important role for the achieved performance. We show that for the chosen compute system CGRAs with 5x5 PEs are sufficient to utilize the L1's bandwidth when running MMMs, and that beyond that size scaling up the number of HiPRePs scales better. For other applications which will be mapped in the future, 5x5 CGRAs are a minimal setup to explore the design space.
Hochperformantes Rechnen (HPC) umfasst Applikationen, die rechenintensive Aufgaben auf vielen und verteilten Daten ausführen. Diese müssen auf mehreren Knoten von Serversystemen, die über schnelle Netzwerke kommunizieren, ausgeführt werden, um Ergebnisse so schnell wie möglich zu berechnen. Solche Systeme werden im Zusammenspiel mit den Abbildungen der Programme entworfen, um die Flexibilität, verschiedene Applikationen abbilden zu können, gegen Hardwareressourcennutzung abzuwägen. Trotzdem sind HPC-Anwendungen entweder durch die Speicherbandbreite oder durch die Kommunikationsbandbreite des Netzwerks begrenzt: Einerseits sind die Zugriffszeiten auf Speicher in der Vergangenheit langsamer gesunken als die Leistungsfähigkeit von Prozessoren gestiegen ist, andererseits sind die Latenzen von wachsenden Netzwerken automatisch durch die örtlichen Distanzen eingeschränkt.
Der Entwurf von HPC-Systemen und das Abstimmen der Anwendungsabbildungen auf die höchste Rechenleistung gehen auf Kosten der Leistungsaufnahme: Einen Großteil der Leistungsaufnahme macht die Kühlung der Prozessoren (CPUs) aus. Es ist in der Zukunft wichtig, die Rechenleistung leistungseffizienter zu erreichen. Hardware-Beschleuniger wie grobgranulare rekonfigurierbare Architekturen (CGRAs) sind in dieser Hinsicht vielversprechend, da sie in der Vergangenheit eine bessere Energieeffizienz gezeigt haben als herkömmliche CPUs. CGRAs bestehen aus mehreren Prozessorelementen (PEs), die zur Laufzeit rekonfiguriert werden können, wodurch mehr Abbildungsmöglichkeiten von Anwendungen für energieeffiziente Ausführungen geboten werden.
In dieser Arbeit wird der hochperformante rekonfigurierbare Prozessor (HiPReP) vor-gestellt, welcher ein CGRA für HPC ist. Zudem wird eine Methodik präsentiert, um das CGRA so zu parametrieren, dass es die verfügbare Speicherbandbreite während einer Anwendungsausführung - z.B. Matrix-Matrix-Multiplikation (MMM) - nutzen kann, und um die Anzahl der PEs gegen die Anzahl der HiPReP-Instanzen im System abzuwägen. Jede HiPReP-Instanz greift auf den Speicher mittels einer Hardware-Komponente namens Frontend (FE) zu, welche je mit einem Level-1-Cache (L1) verbunden ist. Da das schnelle Laden und Speichern von Daten essentiell ist, um die Wartezeiten zu minimieren, spielt das FE eine wichtige Rolle für die Rechenleistung. Es wird gezeigt, dass für das gewählte System CGRAs mit 5x5 PEs ausreichen, um die Datenbandbreite eines L1-Caches bei Ausführung einer MMM auszunutzen, und dass darüber hinaus sich mehrere HiPReP-Instanzen besser skalieren lassen. Für andere Anwendungen, die zukünftig auf den HiPReP abgebildet werden, ist ein 5x5-HiPReP ein Ausgangspunkt für weitergehende Optimierungen.

