Schwerpunktseminar technisch wissenschaftliche Anwendungen Blue Gene/L Fachbereich Mathematik, Naturwissenschaften und Informatik Fachhochschule Gießen-Friedberg Sven Wagner Matrikelnummer 712880 September 2007 Prof. Dr. Kneisel Inhaltsverzeichnis 1 Einleitung 4 1.1 Geschichte des Blue Gene Projekts . . . . . . . . . . . . . . . . . . . . . 5 1.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Hardware 8 2.1 Architektur von Blue Gene/L . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Blue Gene/L Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Der Blue Gene Compute ASIC . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3.1 PowerPC 440 FPU . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.2 Speicher Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Packaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.4.1 Karten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Netzwerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.5.1 Torus Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5.2 Global Collective Network . . . . . . . . . . . . . . . . . . . . . . 24 2.5.3 Barrier Netzwerk und Interrupt Netzwerk . . . . . . . . . . . . . 25 2.5.4 Kontrollnetzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4 2.5 3 Software 29 3.1 Betriebssystem Architektur . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2 Parallelprogrammierung MPI . . . . . . . . . . . . . . . . . . . . . . . . 31 4 Zusammenfassung 33 2 Abbildungsverzeichnis 1.1 Effizienz Power vs GFlops [2] . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1 Blue Gene/L Packaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2 Link Chip mit 6 Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3 Blue Gene Compute ASIC [1] . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Blue Gene/L compute (BLC) chip Architektur[1] . . . . . . . . . . . . . 15 2.5 PowerPC Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6 Blue Gene/L Speicherarchitektur im Rechen ASIC [3] . . . . . . . . . . . 17 2.7 Rechen Karte [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.8 Knoten Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.9 Midplane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.10 Service Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.11 Link Karte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.12 Blue Gene/L Kontroll System . . . . . . . . . . . . . . . . . . . . . . . . 26 2.13 Typische multi Midplane Kontroll System Konfiguration . . . . . . . . . 28 3 1 Einleitung Blue Gene ist ein Projekt von IBM, dass sich mit Supercomputer befasst. Blue Gene/L repäsentiert eine neue Komplexitätsebene von paralleler System Software mit speziellen Schwierigkeiten in den Gebieten der Skalierbarkeit, Instandhaltung und Verwendbarkeit. Derzeit gibt es vier aktuelle Projekte unter dem Namen Blue Gene, die derzeit weiterentwickelt werden. Dieses Dokument bezieht sich auf das Projekt Blue Gene/L, wobei L für Linux steht. Es wird gezeigt wie der Supercomputer aufgebaut ist und welche Funktionen gegeben sind. Ausserdem wird erläutert welche Software zum Einsatz kommt und welchen Nutzen die Anwendung der Software hat. Da Blue Gene/L eine sehr komplexe Architektur und eine äußerst spezielle Anwendung findet kann in den folgenden Kapitel nur eine bestimmte Auswahl des ganzen Projektes beschrieben werden. Blue Gene/L in dem Lawrence Livermore National Laboratory beinhaltet 64 Racks mit insgesamt 65536 high performance Rechen Knoten. Jeder Rechen Knoten enthält zwei eingebettete 32bit PowerPC Prozessoren. Weiterhin wird der gleiche Chip für die maximale Anzahl von 1024 I/O Knoten benutzt. Ein drei dimensionales Torus Netzwerk und ein gemeinsames Tree Netzwerk verbindet alle Knoten miteinander. Das ganze System beinhaltet 33 Terra Byte Hauptspeicher. Dies wurde entwickelt um eine Spitzenleistung von 300 TFlops zu erreichen. Blue Gene/L kann so benutzt werden, dass der erste Prozessor eines Knotens für Berrechnungen eingesetzt wird und der zweite Prozessor für die Kommunikation. Es ist aber auch möglich beide Prozessoren für Berrechnungen zu benutzen. Blue Gene/L ist ein Supercomputer der von IBM in Zusammenarbeit mit dem Lawrence Livermore National Laboratory (LLNL) entwickelt wurde um zum Beispiel komplexe biologische Prozesse zu berrechnen oder auch die Grenzen des Supercomputings 4 1 Einleitung zu erforschen. Blue Gene/C (inzwischen umbenannt in Cyclops64) ist ein Schwesterprojekt von BlueGene/L und dient als Earth Simluator. Die Architektur unterscheidet sich von Blue Gene/L durch einen andere Netzwerkstruktur. Ausserdem arbeitet jeder 64-bit Cyclops64 Chip mit einer Frquenz von 500 MHz und beinhaltet 80 Prozessoren. Blue Gene/P erstmals vorgestellt im Juni 2007 auf der International Supercomuting Conference in Dresden ist die zweite Generation des Blue Gene Projektes. Blue Gene/P wurde entickelt um erstmals ein PFlops (Peta Flops = 1015 ) im Durchschnitt zu erreichen. Vier 850 MHz PowerPC 450 Prozessoren sind in jedem Blue Gene Chip enthalten. Das ergibt 294412 Prozessoren in einem 72 rack System gespannt in einem high-speed, optischen Netzwerk. Blue Gene/P kann bis zu 884736 Prozessoren in einem 216 rack skaliert werden um die gewünschten drei PFlops zu erreichen. Blue Gene/Q soll bis etwa 2010-2012 10 PFlops erreichen. Das Projekt soll die BlueGene/L und /P Architekur mit einer höheren Frequenz pro Performance/Watt erweitern. Blue Gene/Q hat die gleiche Anzahl von Knoten aber mehrere Kerne pro Knoten. 1.1 Geschichte des Blue Gene Projekts Im Dezember 1999 kündigte IBM an 100 Millionen US Dollar in ein Projekt zu investieren, einen parallel Computer zu entwickeln, der es ermöglicht biomolekulare Phänomene, wie zum Beispiel Proteinfaltung zu erforschen. Das Projekt hatte 2 Ziele: Zum einen sollen die Mechanismen der Proteinfaltung per Simulation verstanden werden und zum anderen sollten neue Ideen für parallel arbeitende Architekturen und Software erforscht werden. Dabei wurde stets darauf geachtet die Kosten für den Betrieb geringer zu halten als bisher bei anderen Supercomputer erreicht wurde. 5 1 Einleitung Im November 2001 trat das Lawrence Livermore National Laboratory dem Projekt bei und wurde ein Forschungspartner des Blue Gene Projektes. Im November 2004 wurde in Pittsburgh auf der Supercomputer Conference Blue Gene/L zum ersten Mal als schnellster Supercomputer der Welt gekürt. Der damalige von IBM entwickelte Supercomputer führte die 24. TOP500 (www.top500.org) Liste mit 32768 Prozessoren und einer durchschnittlichen Leistung von 70720 GFlops ( ein Giga floating point operations per second ) beim Linpack Benchmark an. Linpack ist ein Benchmark-Programm, das die Geschwindigkeit eines Computers durch das Lösen von linearen Gleichungssystemen misst. Der aktuell schnellste Supercomputer Blue Gene/L mit dem Standort im Lawrence Livermore National Laboratory hat derzeit 131072 Prozessoren und schafft beim Benchmark 280600 GFlops. 1.2 Motivation Ziel des Projektes Blue Gene/L ist es ein gutes Kosten-Performance Verhältnis für ein breites Spektrum von Anwendungen zu erreichen. Ebenso soll ein gutes Performance/Power Verhältnis erreicht werden. Im Gegensatz zu anderen Supercomputer sind die Kosten pro Flop wesentlich teurer als bei Blue Gene/L. Die Abbildung 1.1 zeigt die Effizienz durch das Verhältnis von verbrauchter Leistung in Watt und der Performance Leistung pro Giga Flops. Das Blue Gene/L Team versuchte nicht eine Maschine zu entwickeln die alle Anwendungsbereiche abdeckt, viel wichtiger war es eine Architektur zu bauen, die Kosteneffektiv für eine breite Anwendung ist. 6 1 Einleitung Abbildung 1.1: Effizienz Power vs GFlops [2] 7 2 Hardware Dieses Kapitel gibt einen Überblick über die Hardware von Blue Gene/L. Im ersten Abschnitt dieses Kapitels wird der ASIC und seine Komponenten genauer beschrieben. Danach erfolgt eine genaue Erläuterung des Packaging Modells von Blue Gene/L. Zum Abschluss des Kapitels wird verdeutlicht welche Netzwerkstruktur vorhanden ist. Abbildung 2.1: Blue Gene/L Packaging 8 2 Hardware 2.1 Architektur von Blue Gene/L Die Architektur wurde so entwickelt, um ein außergewöhnliches Verhältnis der cost / performance, performance / power und performance / volume zu erreichen. Die Vorgehensweise richtete sich nach eine sehr hohen Integration, die ein einfaches Packaging und Design ermöglichen soll. Dieses Ziel richtete sich nach bereits speziell eingesetzten Maschinen wie QCDSP, die schon erfolgreich ein hervorragendes cost/performance Verhältnis erreicht hat. Ebenfalls wurden Annäherungsversuche an die Maschinen QCDSP und QCDOC in den Bereichen von floating-point, network und memory performance gemacht. Um eine höhere Integration zu erreichen wurde das System einem SoC ASIC angepasst. Warum diese Art von Entwicklung gewählt wurde lag in dem SoC Design, dass eben eine hohe Integration erreicht sowie ein geringer Verbrauch und niedrige Entwicklungskosten. Alleine der Verbrauch um ein Rack zu kühlen liegt etwa bei 20kW. Die Entwickler von Blue Gene fanden heraus, dass eine niedrige Frequenz des PowerPC Kerns das performance/watt Verhältnis wesentlich verbessert als bei Frequenzen, die 2 bis 10 mal höher sind. Blue Gene/L ist ein skalierbarer Supercomputer der bis zu 65536 Knoten fassen kann. Die kleinste (sichtbare) Einheit ist ein Knoten, der einen ASIC mit je zwei Prozessoren beinhaltet. Eine Rechen Karte umfasst zwei ASIC’s und die dazugehörigen SDRAM Modulen. Die Rechen Karten sind auf einer Knoten Karte gesteckt, dass jeweils 32 solcher Rechen Karten umfasst. Ein Rack kann 32 Knoten Karten (node cards) enthalten. Zu Blue Gene/L in Livermore gehören 64 solcher Racks. Die Abbildung 2.1 soll nochmal die Abhängigkeiten verdeutlichen. Ein Knoten wurde in der IBM CMOS 8SFG Technologie produziert. Jeder Rechen Knoten ist sehr einfach aufgebaut: Ein ASIC (Application Specific Integrated Circuit) enthält zwei Prozessoren und hat als Arbeitsspeicher neun DDR SDRAM Module. Jede Knoten Karte ist mit zwei BLC (Blue Gene/L Compute) ASIC’s und 18 SDRAM bestückt. 9 2 Hardware Component Description No. per rack Compute card Two compute ASICs, DRAM 512 Node card 16 compute cards, two I/O cards 32 I/O card Two compute ASICs, DRAM, Gigabit Ethernet Link card Six-port ASICs 8 Service card One to twenty clock fan-out, 2 2 to 64,selectable two Gbit Ethernet to 22 Fast Ethernet fan-out, miscellaneous rack functions, 2.5/3.3-V persistent dc Midplane 16 node cards 2 Fan unit Three fans, local control 20 Power system ac/dc 1 Compute rack With fans, ac/dc power 1 Tabelle 2.1: Major Blue Gene/L rack components [2] Die Knoten können mit 5 Netzwerken verbunden sein. Das wichtigste ist das Torus Netzwerk. Ein Torus ist ein geometrisches Gebilde, das in sich geschlossen ist. Das heisst es gibt kein Anfang und kein Ende. Jeder Knoten ist also mit jedem anderen Knoten, wenn auch indirekt, verbunden. Ein Knoten hat 6 Nachbarknoten mit denen er direkt kommunizieren kann. Blue Gene/L hat ein drei dimensionales 64x32x32 Torus Netzwerk. Die Zahlen geben an wieviele Knoten in x,y und z Richtung vorhanden sind. Es gibt virtuell gesehen keine asymetrie in der Verbindung. Jeder Knoten kommuniziert mit seinem Nachbar Knoten die physikalisch auf der gleichen Knoten Karte sind. Die Verbindungen auf der Knoten Karte haben die gleiche Bandbreite und Zugriffszeit wie mit Rechen Knoten die auf benachbarten Knoten Karten sind. Dies erlaubt ein einfaches Programmiermodell, da es keine Endpunkte in einem Torus gibt. 10 2 Hardware Englische Bezeichnung Deutsche Bezeichnung Compute card Rechen Karte Node card Knoten Karte I/O card I/O Karte (Ein/Ausgabe Karte) Link card Link Karte Service card Service Karte Midplane Midplane (Mittelebene) Fan unit Lüfter Einheit Power system Energieversorgung Compute rack Rack Tabelle 2.2: Übersetzung 2.2 Blue Gene/L Knoten Der Blue Gene Compute (BLC) ASIC, der das Herz eines Blue Gene/L Knotens bildet, ist ein System On Chip (SoC) produziert in der Cu11 (130 nm CMOS) Technologie. Dieser ASIC integriert alle Funktionen eines Rechners und reduziert dabei die Grösse und den Verbrauch wesentlich für einen Knoten. Der ASIC enthält zwei eingebettet PowerPC 440 (PPC440) Kerne. Ein floating-point Kern für jeden Prozessor, eingebetter DRAM, einen integrierten DDR Speicher Controller, ein Gigabit Ethernet Adapter und alle für das Torus Netzwerk benötigte „durchreiche“ Buffer. Der gleiche BLC ASIC wird für die Rechenknoten und I/O Knoten benutzt, wobei nur der I/O Knoten dazu verwendet wird die Verbindung zum Gigabit Ethernet und Dateisystem zu ermöglichen. Die beiden PPC440s sind vollständig symetrisch in Design, Performance und im Zugriff auf alle Chip Ressourcen. Es gibt keine andere Hardware um beide Prozessoren für Nachrichtenaustausch oder auch die Weitergabe von Nachrichten an benachbarte Knoten zu verwenden. Für bestimmte Anwendungen wird der eine Prozessor dazu benutzt Nachrichten zu bearbeiten und der andere zum Berechnen oder Ausführen der Anwendung. 11 2 Hardware Diesen Modus nennt man co-prozessor mode. Ein anderer Modus in dem ein Knoten benutzt werden kann ist dass beide Prozessoren für die Anwendung verwendet werden. Diesen Modus nennt man virtual node mode. Ein Link Knoten enthält ebenfalls den gleichen ASIC. Link Knoten dienen zwei Funktionen: Die Link Knoten sind dafür zuständig Signale von Rack zu Rack über ein Kabel weiterzureichen. Dabei werden die Signale verstärkt und aufbereitet. Die zweite Funktion ist die Signale innerhalb des ASICs umzuleiten. Damit ist es möglich das System logisch zu partitionieren. Die Kommunikation zwischen den weiter entfernten Knoten wird nicht per Software gemacht sondern „auf dem Sprung“ von der Hardware. Der Link Chip hat sechs Ports wie auf der Abbildung 2.2 zu sehen. Port A und B sind direkt mit den Knoten der Midplanes verbunden. Ein Midplane ist eine Einheit in einem Rack mit 16 Knoten Karten (siehe Tabelle 2.1) Die anderen vier Ports sind mit dem Kabel verbunden, dass auf Abbildung 2.11 zu sehen ist. Die Logik in so einem Link Chip unterstützt eine frei wählbare Verbindung von einem Port zu einem beliebigen anderen Port. Dieses Routing wird einmal programmiert und ist solange verwendbar bis eine andere Verwendung vorgesehen ist.[6] 12 2 Hardware Abbildung 2.2: Link Chip mit 6 Ports 2.3 Der Blue Gene Compute ASIC Der BLC ASIC beinhaltet alle Komponenten, die nötig sind diesen Chip als SoC zu bezeichnen. Zwei Prozessor Kerne PowerPC 440 FPU, Ethernet Schnittstelle, SRAM und DRAM. Zur Architektur gehörend haben die beiden Mikroprozessoren, jeder mit einem FPU Co Prozessor, einer kompletten L1/L2/L3 Speicher Hierarchie, eine Schnittstelle zu externem double-data-rate (DDR) DRAM, und 5 verschiedene Kommunikationsschnittstellen. Der Chip arbeitet bis zu 700 MHz, in kritischen Ausnahmefällen sogar bis zu 1,4 GHz. Abbildung 2.3 zeigt eine Übersicht über die Plazierung der einzelnen Komponenten auf dem ASIC. Die beiden PowerPC 440 Prozessoren (PU0 und PU1) und die dazugehörigen Floating Pount Units (FPU0 und FPU1), Netzwerk Schnittstellen Controller (collective, torus, JTAG und Eth), und die Speicher Hierachie (L1 cache in den Prozessor Einheiten, L2 und L3). Die vier grösseren Arrays in den Gebieten von L3 sind die 4 MB des eingebetteten DRAMs. 13 2 Hardware Abbildung 2.3: Blue Gene Compute ASIC [1] Ein Blockdiagramm des BLC ASIC ist in Abbildung 2.4 zu sehen. Die grünen Blöcke im Diagramm sind Kerne, die in der Standard IBM ASIC Bibliothek verfügbar sind, also gewöhnlich von internen und externen Kunden bereits verwendet wurden. Die Rechtecke, die als „Double-hummer FPU“ bezeichnet sind sind neue Kerne. Die doublehummer FPU beinhalten zwei gekoppelte Standard floatingpoint units (FPUs), die eine Spitzenleistung von vier Gleitkommaoperationen pro Prozessorzyklus erreichen. Die anderen Blöcke sind neu entwickelt worden. 14 2 Hardware Abbildung 2.4: Blue Gene/L compute (BLC) chip Architektur[1] 2.3.1 PowerPC 440 FPU Die PowerPC 440 floating-point Unit, mit einer arithmetik-spezifischen Erweiterung, ist im ASIC eingebettet um von dem PowerPC 440 Prozessorkern benutzt zu werden. Der FPU Kern implementiert den floating-point Befehlssatz der PowerPC Architektur. Die floating-point Befehlserweiterungen wurden entwickelt um spezielle Matrizenberechnungen durchführen zu können. Die erweiterten FPU Befehle dienen dazu um primär SIMD (single-instruction multiple-data) Operationen ausführen zu können. Hierzu werden zwei 15 2 Hardware Pipelines und zusätzliche floating-pount Register benötigt. Das heisst es ist möglich auf jedem Prozessor das gleiche Programm mit unterschiedlichen Eingabedaten ausführen zu können. Abbildung 2.5: PowerPC Core 2.3.2 Speicher Hierarchie Ein Ziel der Entwicklung des ASIC war es ein hohe Bandbreite und eine geringe Latenzzeit zu erreichen. Die Lösung des SoC war ein gut gewählter Weg zu diesem Ziel. Jeder PPC440 Prozessor hat einen unabhängigen 16 Byte Lese und Schreib Datenbus und einen unabhängign 16 Byte Befehlsbus. Die Bandbreite des zweiten und dritten Level Cache und des externen Speichers ist angepasst an die maximale Bandbreite des PPC440 Prozessors. Dieses flache Speichersystem ist ideal für Speicher intensive Anwendungen. 16 2 Hardware Der first-level Cache L1 ist im PPC440 Kern integriert. Der second-level Cache L2 ist sehr klein und wird grundsätzlich als Prefetcher zum Schreiben in den L1 Cache genutzt. Für sequentiellen Zugriff hat der L2 Cache einen so schnellen Zugriff auf jeden Level in der Speicher Hiearchie wie der Prozessor verarbeiten kann. Der L2 Cache ist relativ klein (2 KB). Der third-level Cache L3 ist gross und ist zuständig um ein hohe Bandbreite zu ermöglichen mit einer geringen Latenzzeit. L3 wird geteilt benutzt für Befehle und Daten. Der Hauptspeicher ist extern in DRAM Speicherbausteinen. Abbildung 2.6 zeigt die Architektur eines ASIC auf einer Rechen Karte. Abbildung 2.6: Blue Gene/L Speicherarchitektur im Rechen ASIC [3] 2.4 Packaging Als IBM 1999 mit der Entwicklung von Blue Gene/L begann war es Ziel einen massiv parallel Supersomputer zu entwickeln, der skalierbar und somit an die Anwendung angepasst werden kann. Das derzeit grösste System im Lawrence Livermore National Laboratory (LLNL) kann mit 65536 Knoten in 64 Racks kann so angepasst werden, dass verschiedene einzelne Programme laufen können. Jeder Knoten enthält einen ASIC und 17 2 Hardware den dazugehörigen Hauptspeicher. Die Knoten sind verbunden mit fünf Netzwerken: einem drei dimensionalen Torus Netzwerk, dem global collective network, einem globalen Barrier und Interrupt Netzwerk, einem Ein und Ausgabe Netzwerk welches Gigabit Ethernet benutzt und zuletzt ein Service Netzwerk. Die Verarbeitung in den Netzwerken erfolgt durch einen zusätzlichen Link ASIC, einem field-programmable gate array (FPGA) und anderen speziellen Komponenten, die in diesem Abschnitt beschrieben werden. Ein Blue Gene/L System kann so konfiguriert werden um einfache Anwendungen auszuführen. Die gängige Methode ist es das System in kleinere System zu partitionieren. Zum Beispiel wurde im Watson Research Center ein 20 Rack System so unterteilt, dass vier Reihen mit vier Racks verwendet werden und die restlichen 4 Racks im Standby Betrieb laufen und im Ausfall sofort eingesetzt werden können. Blue Gene/L beinhaltet zwei Host Computer um die Maschine zu kontrollieren und Anwendungen zu starten, Ein/Ausgabe Racks für redundante Bereiche für unabhängige Festplattenspeicher (RAID) sowie Verteiler Racks mit einem Gigabit Ethernet um die Rechen Racks, I/O Racks und die Host Rechner zu verbinden. 2.4.1 Karten Ein System kann logisch per Software partitioniert werden. Um ein Skalierbarkeit des Systems zu ermöglichen wurde die Hardware in einzelne Komponenten unterteilt. Dieser Abschnitt zeigt alle Hardwarekomponenten in einem Blue Gene System und beschreibt diese. In Bezug auf die Hardware ist das System in folgende Teile unterteilt: Rechenkarte Die kleinste Komponente ist der ASIC, der sich auf der Rechenkarte (compute card) befindet. Auf dieser Karte sind jeweils zwei ASIC und neun DRAMs als externen Hauptspeicher, die zu den zwei Prozessoren auf dem ASIC gehören. Ein Rechenkarte beinhaltet 18 2 Hardware somit zwei Knoten. Ein Knoten ist ein ASIC plus 512 MB Speicher, die in neun Speichermodulen auf der Karte angeordnet sind. Abbildung 2.7: Rechen Karte [5] Knotenkarte Eine Knotenkarte unterstützt 16 Rechenkarten mit Energie, Clock und diversen Kontrollfunktionen. Ausserdem werden alle 32 Knoten auf einer Knotenkarte (x,y,z = 4*4*2) zusammengefasst. Jede Knotenkarte kann optional zwei zusätzliche Karten beinhalten: die I/O Karten. 19 2 Hardware Abbildung 2.8: Knoten Karte I/O Karte Die I/O Karte ist ähnlich wie eine Rechenkarte, allerdings kann jede I/O Karte zwei Kanäle zu einem Gigabit Ethernet anbieten. Eine I/O Karte ist somit die Schnittstelle für die Rechenkarte zu externen Speichermedien wie Datenserver oder Datenbanken. Eine I/O Karte arbeitet mit dem gleichen ASIC wie eine Rechenkarte. Midplane Die sogenannte Midplane besteht aus 16 Knotenkarten (x,y,z = 8*8*8). Es handelt sich bei der Midplane nur um einen Bereich der verschiedene Karten enthält, die Midplane selbst ist also keine physikalische Karte. Die Midplanes sind über Link Karten mitein- 20 2 Hardware ander verbunden. Midplanes sind in einem Rack vertikal angeordnet. Zwei Midplanes an der Frontseite eines Racks und zwei Midplanes an der Rückseite eines Racks. Die Midplanes sind übereinander angeordnet. Neber den 16 Knotenkarten beinhaltet jede Midplane vier Link Karten. Letztendlich beinhaltet jede Midplane noch eine Service Karte. Abbildung 2.9: Midplane Service Karte Die Service Karte bietet die Funktion der System Clock, diverse Kontrollfunktionen für das Rack und bietet individuelle Fast Ethernet Verbindungen von den vier Link Karten und den 16 Knoten Karten zu einem einzigen Gigabit Ethernet. Ein zusätzliches Gigabit Ethernet verbindet die Midplanes über die Service karte mit einem Kontrollrechner. Auf der Service Karte befindet sich ein Kontroll-FPGA, der das Fast Ethernet von jeder Link Karte und Knoten Karte in ein anderes Bussystem, wie I2C oder JTAG konvertiert. I2C und JTAG sind zusätzliche Bussysteme für Geräte mit verschiedenen Sensoren sowie 21 2 Hardware zur Unterstützung der Initilialsierung des Systems oder auch Monitoring, Debug und anderen Funktionen. Abbildung 2.10: Service Karte Link Karten Link Karten sind dafür zuständig die Midplanes mit dem Torus Netzwerk, Global Collective Netzwerk und dem Barriere Netzwerk zu verbinden. Link Karten sind notwendig um Signale zwischenzuspeichern und über kabel an andere Midplanes weiterzusenden. Um diesen Service anbieten zu können wurde ein Link ASIC entwickelt. Jeder der sechs Ausgänge ist an ein Kabel angeschlossen. Die Kanäle sind so installiert, dass sie zwei verschiedene Wege benutzten können um die Midplane zu verlassen. Diese Art der Verbindung zwischen den einzelnen Komponenten bietet die Möglichkeit das System in eine variable Art von kleineren Systemen zu unterteilen und unbenutzte Racks zu überbrücken. In den Link Karten sind die Ports so verschaltewt, dass es möglich ist eine beliebige Verteilung der Signale vorzunehmen. 22 2 Hardware Abbildung 2.11: Link Karte 2.5 Netzwerke Einer der wichtigsten Funktionen eines massiv parallelen Supercomputer ist das Netzwerk, dass alle Prozessoren miteinander verbindet. Dieses Netzwerk erlaubt es das ganze System als eine grosse zusammenhängende Instanz zu sehen. In Blue Gene/L ist das primäre Netzwerk für das point-to-point Messaging ein drei dimensionales Torus Netzwerk. Für den Datenaustausch zwischen den Knoten und anderen Systemen wie Datei Server oder Datenbanken ausserhalb des Blue Gene/L Systems dient das Global Collective Network. Das Global Collective Network ist ein Gigabit Ethernet verbunden mit den I/O Karten, die jeweils mehrere Rechen Karten bzw Knoten mit der Aussenwelt verbindet. Das globale Barriernetzwerk schützt das Systeme bei Fehlern und regelt das Abschalten 23 2 Hardware des Racks. Das Kontrollnetzwerk überwacht das System. Dazu gehören diverse Temperaturüberwachungen der ASICs, Spannungsversorgung, Kühlung uvm.. Ein Serviceknoten übernimmt die eigentliche Überwachung über eine Service Karte auf einem seperaten Rechner. Dazu gehört auch die Initialisierung und das Debuggen der Anlage. Dieses Kapitel zeigt wie die verschiedenen Netzwerke im Blue Gene/L System aufgebaut sind und welche Funktion dahinter steht. 2.5.1 Torus Netzwerk Die Knoten in einem Torus Netzwerk sind in einem 3D Würfel Gitter angeordnet und jeder Knoten ist verbunden zu seinen sechs nächsten Nachbarn. Ein Torus wurde von den Entwicklern gewählt weil es eine hohe Bandbreite bietet während die Konstruktion des Netzwerkes keine Enden bietet. Dies bietet eine Kosten Effektive Verbindung, die skalierbar ist und direkt anwendbar auf viele wissenschaftliche und datenintensive Probleme. Ein Torus kann ohne lange Kabel realisiert werden indem man jedes Rack mit seinem nächst nähsten Nachbarn entlang der x,y und z Richtung verbindet. Stelle man sich vor man hat sechs Racks in einer Dimension, so würden die Racks in der Reihenfolge 1, 3, 5, 6, 4, 2, 1 verkabelt werden. Der Netzwerk Switch ist integriert in den gleichen Chip der die Berrechnungen durchführt. Es wird kein anderer Switch und Adapter Karten benötigt wie es in anderen Supercomputer der Fall ist. Vorgänger wie der Cray T3E haben ebenfalls ein Torus Netzwerk verwendet. Das Torus Netzwerk benutzt das dynamische (adaptive) und deterministische Routing mit virtuellem Zwischenspeichern und der cutthrough Einsatzmöglichkeit. Der Nachrichtenaustausch basiert auf Hardware Packeten mit einer variablen Länge. Dieses Feature bietet eine exzellente Kommunikationseigenschaft für viele verschiedene Entwürfe in den meisten speziellen Anwendungsgebieten.[4] 2.5.2 Global Collective Network Das Global Collective Network bietet eine high-performance Broadcast Funktion. Das Netzwerk bietet eine Latenzzeit von etwa 2,5 micro Sekunden für ein 65536 Knoten System wie es in Livermore anzutreffen ist. Zusätzlich bietet das Netzwerk point-to- 24 2 Hardware point messaging was genutzt wird um die Kommunikation zwischen den I/O Knoten und den Rechenknoten zu realisieren. Das collective Netzwerk dient zwei Zwecken. Es ist dafür entwickelt MPI Funktionen effizient zu unterstützen. Der Hauptzweck ist aber die Kommunikation zwischen den I/O Knoten und den Rechenknoten. Das Netzwerk unterstützt point-to-point Nachrichten mit einer definierten Länge von 256 Bytes. Davon werden vier Bits pro CPU Zyklus verarbeitet (350 MB/s). Die Zuverlässigkeit ist dem des Torus Netzwerkes. Die 256 Byte sind reine Nutzdaten. Dazu kommen 10 Byte bei jedem Packet für Kontroll und Verbindungssicherheit. Daraus erfolgt eine Effizienz von 96% (256 Byte / 266 Byte). Die ALU in der collective network Hardware kann eingehende und lokale Packete kombinieren indem bitweise und Integer Operationen genutzt werden und die Resulatet dann ins Netzwerk eingespeist werden. Dieser Mechanismus kann genutzt werden um MPI Sammel Funktionen zu implementieren. Sammelfunktionen wie zum Beispiel Broadcast werden umgestzt indem jeder Knoten die Daten im Netzwerk bearbeitet und das Ergebnis wieder ins Netzwerk einspeist. Da die ALU nur Integer Operationen durchführen kann werden floating-point MPI Reduzierungen in zwei Phasen umgesetzt: In der ersten Phase wird der Exponent berrechnet und in der zweiten Phase die Mantisse. Die Streckenplanung der Packete im global collective network basiert auf Packet Klassen. Die Konfiguration des Netzwerkes ist ein globale Operation die eine Konfiguration aller Knoten in einer Job Partition benötigt. 2.5.3 Barrier Netzwerk und Interrupt Netzwerk Das globale Interruptnetzwerk bietet konfigurierbare OR Verbindungen um eine komplette Abdeckung des Systems in 1,5 micro Sekunden zu erfüllen. Um Anwendungen auf grössere Prozessoren und Knoten zu skalieren muss die Latenz Charakteristik auf globale Operatione deutlich verbessert werden. Dazu wurde ein unabhängiges Barrier Netzwerk entwickelt um diesen architektonische Sachverhalt anzugehen. Das Netzwerk beinhaltet vier unabhängige Kanäle und ist gewissermassen ein globales OR über alle 25 2 Hardware Knoten. Individuelle Signale sind kombiniert in Hardware und verbreiten sich bis zur phyiskalischen Spitze der vereinigten Baumstruktur. Das resultierende Signal ist dann ein Broadcast über diesen Baum. Ein globales AND kann über eine invertierte Logik benutzt werden. Das AND wird als globale Abdeckung benutzt während das OR als globales Interrupt benutzt wird, wenn eine komplette Maschine oder Partition so schnell wie möglich für diagnostische Zwecke gestoppt werden muss. Das Barrier Netzwerk ist optimiert für eine geringe Latenzzeit kleiner als 1,5 micro Sekunden bei einem System mit 65536 Knoten. In dieser Zeit soll es möglich sein alle Knoten im System anzusprechen. Das Netzwerk kann auch in der gleichen Midplane partitioniert werden, abgegrenzt zu den anderen Netzwerken wie das drei dimensionale Torus Netzwerk oder das Global Collective Network. 2.5.4 Kontrollnetzwerk Abbildung 2.12: Blue Gene/L Kontroll System 26 2 Hardware Ein abgestimmtes Überwachungssystem für Blue Gene/L ist über einen Service Knoten realisiert: das Kontrollnetzwerk. Geräteinformationen wir Kühlerdrehzahlen, Spannungsversorgung kann direkt über das Kontrollnetzwerk überwacht werden. Die Rechen und I/O Karten nutzen ein Kommunikationsprotokoll um Ereignisse, die von einem Service Knoten protokolliert oder aktiviert werden können. In Abbildung 2.13 ist zu sehen wie die Servie Karten in einem Rack auf verschiedene Midplanes verteilt ist. Jede Service Karte ist über eine Ethernetverbindung mit einem Host verbunden. Dieser Ansatz ermöglicht eine von anderen Netzwerken separate und komplette Überwachung. Das Kontrollnetzwerk ist als ein Fast Ethernet mit einem FPGA (in Abbildung 2.12 zu sehen) als Controller realisiert. Dieser Control FPGA (CFPGA) konvertiert JTAG, dass in den Knoten Karten verwendet wird, in andere benutzte Bussysteme wie I2C. Ist zum Beispiel ein ASIC auf einer Rechenkarte überhitzt so wird ein Signal über die Hardware an den FPGA gesendet und dieser leitet die Fehlermeldung an das Kontrollnetzwerk weiter. 27 2 Hardware Abbildung 2.13: Typische multi Midplane Kontroll System Konfiguration 28 3 Software Die System Software für Blue Gene/L ist eine Kombination von Standard und Kundenspezifischen Lösungen. Die Software Architektur für die Maschine ist eingeteilt in drei funktionale Gebiete, die hierarisch angeordnet ist: ein Kern für Berrechnungen, eine Verwaltungs und Kontroll Infrastruktur und eine Service Infrastruktur. Die I/O Knoten ( Teil der Kontroll Infrasturktur) führt eine Version eines Linux Kernels aus und ist die primäre off-load Maschine für die meisten Systemdienste. Kein User Code wird direkt auf den I/O Knoten ausgeführt. Die Rechenknoten im dazugehörigen Berrechnungskern führen einen single User, single Prozess minimalistischen gebräuchlichen Kernel aus und sind dafür zuständig User Anwndungen effizient auszuführen. Der Blue Gene/L Komplex beinhaltet die Service Infrastruktur die sich zusammensetzt aus kommerziellen verfügbaren Systemen, die zu dem restlichen System über ein Ethernet verbunden ist. Die Sicht des Anwenders über das System ist eine flache, ringförmige, 64k Knoten System. Die Sicht des Systems von Blue Gene/L ist hierarich: Die Maschine sieht aus wie ein 1024 Knoten Linux Cluster, wobei jeder Knoten als 64-way Multiprozessor anzusehen ist. Skalierbare Software, die eine effiziente Ausführung von parallelen Anwendungen unterstützt ist ein wesentlicher Teil der Blue Gene/L Architektur. Eine Blue Gene/L Anwendung ist aufgebaut aus einer Sammlung von Rechenprozessen. Die Ausführung dieser Prozesse erfolgt auf einem Rechen Knoten als ein Teil des Systems. I/O Knoten bieten zusätzliche Service für die Ausführung von Anwendungen. In diesem Abschnitt wird beschrieben welche Software im System Blue Gene/L benutzt wird. Das L von Blue Gene/L bedeutet Linux. 29 3 Software 3.1 Betriebssystem Architektur Ziel der Entwickler war es eine Umgebung zu entwickeln, die einfach stukturiert ist und eine hohe Anwendungsperformance bietet. Die Anwendungen finden sich in einem Unix ähnlichen System wieder. Die Betriebssystem Funktionalität wurde zwischen den Rechen und I/O Knoten getrennt. Jeder Rechen Knoten ist zuständig für die Ausführung eines einzelnen Anwendungsprozesses. Die I/O Knoten bieten eine phyiskalische Schnittstelle zum Datei System. Die I/O Knoten sind ebenso zuständig Prozesse laufen zu lassen die es ermöglichen das Blue Gene/L System zu kontrollieren, booten, debuggen oder Jobs auszuführen. Dieser Ansatz ermöglicht es die Rechenknoten sehr einfach zu halten. Das Betriebssystem auf den Rechen Knoten, auch Blue Gene/L Ccompute Node Kernel (CNK) genannt, ist ein einfaches, single-user Betriebssystem, dass die Ausführung von dual-threaded Anwendungen unterstützt. Jeder Thread eines Rechen Prozesses ist gebunden an einen Prozessor im Rechen Knoten. Der CNK ergänzt sich zu einer userlevel Run Time Bibliothek, die dem Prozess direkten Zugriff auf das Torus und Tree Netzwerk ermöglicht. Der Kernel und die Run Time Bibliothek implementieren die Knoten zu Knoten Kommunikation über das Torus Netzwerk und die Knoten zu I/O Knoten Kommunikation durch das Tree Netzwerk. Die Rechen Knoten zu Rechen Knoten Kommunikation ist gedacht für den Austausch von Daten, die durch die Anwendung enstehen. Die Rechen Knoten zu I/O Knoten Kommunikation ist in erster Linie dafür gedacht den Rechen Prozess in den I/O Knoten auszudehnen, sodass der I/O Knoten diverse Funktionen für diesen Knoten ausführen kann. Der Blue Gene/L Compute Kernel bietet eine einzelne und statische virtuelle Adressierung um einen Rechenprozess auszuführen. Dadurch ist es nicht nötig einen Kontextwechsel vorzunehmen. Seitenabrufe werden somit nicht unterstützt. Daraus erfolgt eine volle Auslastung der Ressourcen auf einer Rechen Karte. Auf I/O Knoten läuft ein Linux Betriebssystem. Dieses System unterstützt die Ausführung mehrerer Prozesse. Auf den I/O Knoten wird nur System Software ausgeführt, 30 3 Software keine Anwendungen. Der Zweck der I/O Knoten ist während der Ausführung von Anwendungen auf den Rechenknoten diese mit Service zu unterstützten die nicht auf den Rechen Knoten vorhanden sind. I/O Knoten bieten ein aktuelles Datei System für die laufenden Anwendungen an. Sie bieten ebenfalls Socket Verbindungen zu Prozessen in anderen Systemen. Wenn ein Rechenprozess in einem Rechen Knoten eine I/O Operation ausführen möchte, zum Beispiel ein Lesen oder Schreiben, wird diese I/O Operation in das Tree Netzwerk durch einen I/O Knoten durchgereicht. Der Rückgabewert erreicht dann den Rechen Knoten wieder über den I/O Knoten. Der I/O Knoten bietet also Prozesse zur Identifzierung, Bestätigung und ein Logging für den Rechen Knoten. I/O Knoten bieten Möglichkeiten zum Debuggen der Benutzeranwendung. Debugger die auf den I/O Knoten laufen können die Anwendungen und Prozesse auf den Rechen Knoten debuggen. In diesem Fall erfolgt die Weiterleitung in die entgegengestzte Richtung. Debug Operation die auf einem I/O Knoten ausgeführt werden sind abhängig von der aktuellen Anwendung im Rechen Knoten. Das Ergebnis wird dann wieder zurück zum I/O Knoten gesendet. 3.2 Parallelprogrammierung MPI Zur parallelen Ausführung der Anwendungen auf den Prozessoren kommt hinzu, dass es auch möglich ist gleichzeitig Nachrichten zwischen den einzelnen Prozessen auszutauschen. Hierzu wurde der Standard MPI verwendet. Dieser Standard bietet eine Schnittstelle, sprich eine Sammlung von Operationen, um Parallelprogrammierung duchführen zu können. Eine MPI-Applikation besteht in der Regel aus mehreren miteinander kommunizierenden Prozessen, die alle zu Beginn der Programmausführung parallel gestartet werden. Alle diese Prozesse arbeiten dann gemeinsam an einem Problem und nutzen zum Datenaustausch Nachrichten, welche explizit von einem zum anderen Prozess geschickt werden. Ein Vorteil dieses Prinzips ist es, dass der Nachrichtenaustausch auch über Rechnergrenzen hinweg funktioniert. 31 3 Software Blue Gene/L bietet mit der speziell angepassten MPICH2 Bibiliothek die Möglichkeit Punkt zu Punkt Kommunikation durchzuführen. Dazu gibt es Funktionen wie MPI_SEND und MPI_RECV mit denen es möglich ist Nachrichten direkt an einen bestimmten Prozess zu senden oder von einem Prozess zu empfangen. Die Rechen Knoten sind wie in den bisherigen Kapitel beschrieben an das global collective network angeschlossen. Hier ist es möglich mit MPI_GATHER und MPI_SCATTER Nachrichten zu verteilen bzw. einzusammeln. Das heisst jeder Prozess kann Daten von einem anderen Prozess verarbeiten und nach einer gewissen Zeit werden die Ergebnisse wieder eingesammelt. Da das Tree Netzwerk die Broadcast Funktion bietet ist es auch möglich per MPI_BCAST von einem Prozess aus an alle anderen Prozesse in einer bestimmten Gruppe Daten zu senden. MPI bietet viele Möglichkeiten Prozesse parallel kommunizieren zu lassen. Dieser Abschnitt gab einen kurzen Einblick in die Funktionen von MPI. Mit dem MPI Prozess Managment ist es zusätzlich möglich Prozesse zu starten und zu beenden. MPICH2 beinhaltet eine Vielzahl an den Prozess Manager angepasst für gängige Cluster Systeme mit universellen Arbeitsbereichen. Der Blue Gene/L Prozess Manager verfügt über eine komplette Verwendung der hierarisch aufgebauten System Managment Software, die in den I/O Knoten über einen speziellen Dämon gestartet und beendet werden kann. Die Blue Gene/L System Managment Software ist explizit entwickelt worden um Probleme der Skalierbarkeit im Moment des Startens, Synchronisieren und Beenden der maximal 65536 MPI Prozessen zu behandeln. 32 4 Zusammenfassung Das Blue Gene/L System wie es im Lawrence Livermore National Laboratory aufgebaut ist zeigt, dass Blue Gene zu dem derzeit erfolgreichsten Supercomputer der Welt gehört. Das 1999 von IBM gestartete Projekt ist bis zur heutigen Zeit sehr erfolgreich. Der Einsatz von Blue Gene/L in den grossen amerikanischen Forschungslabors zeigt welche komplexen Anwendungen auf dem Supercomputer laufen. Dazu gehören Simulationen im Bereich der Chemie, Physik, Biologie und anderen naturwissenschaftlichen Gebieten. Das Verhältnis von erbrachter Leistung (im Tera Flops Bereich) zu verbrauchter Energie (mit mehreren Mega Watt wie in Livermore) bei Blue Gene/L ist verglichen mit anderen Supercomputer, zum Beispiel von der Firma Cray oder Intel, effektiver und hat somit einen höheren Wirkungsgrad. Durch die Verwendung von vielen Prozessoren mit einer geringen Verlustleistung konnte ein System erschaffen werden das gut skalierbar und die gewünschte Anwendung flexibel angepasst werden kann. Die Hardware ist speziell an ein möglichst breite Anwendung angepasst, aber auch einfach und gut strukturiert aufgebaut. Das Packaging Modell von Blue Gene/L ist übersichtlich und einfach gehalten. Durch Vorgänger im Bereich des Supercomputing konnten Erfahrungen in die Entwicklung der Hardware übernommen werden. So wurde zur Kommunikation zwischen den Komponenten bereits etablierte Netzwerke wie das Torus Netzwerk integriert werden. Dadurch erreichte man eine hohe Bandbreite und eine sichere Verbindung zwischen den Knoten im System. Die Hardware ist so konzepiert, dass jeder Bereich für eine bestimmte Aufgabe optimiert ist. Die Rechen Knoten für die Anwendungen, die I/O Knoten für die Ein und Ausgabe Kommunikation zwischen externen Speichermedien und den Rechen Knoten. Die Kontrolle über das System ist 33 4 Zusammenfassung über eine Ethernetverbindung dezentral möglich. Die Netzwerke bieten einen schnellen Datenaustausch und sind an das System angepasst. Die Software ist an die Hardware von Blue Gene/L angepasst. Die Betriebssysteme erfüllen ihren Zweck für die gewünschte Anwendung. Soll auf der Hardware nur System Funktionen ausgeführt werden so bietet das Betriebssystem nur diese gewünschten Operationen. Die Software die auf den Rechen Knoten ausgeführt wird ist für die Parallelprogrammierung optimiert. Alle Funktionen die von den Rechen Knoten benötigt werden sind somit vorhanden. Durch die Hierarchie im Softwarebereich ist eine schnelle Ausführung der Anwendung möglich. Eine Verwaltung von merheren tausend Prozessen kann einfach über externe Hostrechner gestartet und diagnostiziert werden. Blue Gene/L ist in sich stimmig und genau aufeinander abgestimmt. Ausfälle sind selten und der Wirkungsgrad des Systems somit sehr hoch. Abschliessend lässt sich sagen, dass das beschriebene Thema dieser Arbeit interessant war und ein guten Einblick in die komplexe Welt des Supercomuting und High Performance Computing geboten hat. 34 Literaturverzeichnis [1] A. A. Bright et al. Creating the Blue Gene/L Supercomputer from Low Power Systemon-a-Chip ASICs. Digest of Technical Papers, 2005 IEEE International Solid-State Circuits Conference, 2005. [2] A. Gara et al. Overview of the blue gene/l system architecture. IBM J. RES. & DEV. VOL. 49 NO. 2/3, 2005. [3] M. Ohmacht et al. Blue gene/l compute chip: Memory and ethernet subsystem. IBM J. RES. & DEV. VOL. 49 NO. 2/3, 2005. [4] N. R. Adiga et al. Blue gene/l torus interconnection network. IBM J. RES. & DEV. VOL. 49 NO. 2/3, 2005. [5] P. Coteus et al. Packaging the blue gene/l supercomputer. IBM J. RES. & DEV. VOL. 49 NO. 2/3, 2005. [6] Prof. Dr. Wolfgang Karl Universität Karlsruhe (TH). Rechnerstrukturen Vorlesung im Sommersemester 2007, 2007. Wikipedia http://www.wikipedia.org IBM Journal of Research and Development Vol. 49, No. 2/3, 2005 Blue Gene http://researchweb.watson.ibm.com/journal/rd49-23.html 35 Literaturverzeichnis Linux Devices http://linuxdevices.com/articles/AT7249538153.html Dr. Burkhard Steinmacher-Burow (Mitarbeiter am Blue Gene Projekt) http://www.desy.de/dvsem/WS0405/steinmacherBurow-20050221.pdf 36 Eidesstattliche Erklärung Hiermit versichere ich, die vorliegende Arbeit selbstständig und unter ausschließlicher Verwendung der angegebenen Literatur und Hilfsmittel erstellt zu haben. Giessen, 4. September 2007 Sven Wagner 37