Manycores: Hardware und Low-Level Programmierung Florian Sattler Universität Passau 18. Juni 2014
Übersicht Einführung Neue Architekturen Programmierung Supercomputing Fazit 2 / 29
Top 500 3 / 29
Motivation für Exascale Computing Es gibt bereits Anwendungen wo 50 petaflops an Rechenleistung um Größenordnungen nicht reichen. Fusionsenergie Simulation/Auswertung Erdmodelle Viele Forschungsbereiche benötigen Exascale Performance oder höher 4 / 29
Motivation für Exascale Computing Es gibt bereits Anwendungen wo 50 petaflops an Rechenleistung um Größenordnungen nicht reichen. Fusionsenergie Simulation/Auswertung Erdmodelle Viele Forschungsbereiche benötigen Exascale Performance oder höher 4 / 29
Motivation für Exascale Computing Es gibt bereits Anwendungen wo 50 petaflops an Rechenleistung um Größenordnungen nicht reichen. Fusionsenergie Simulation/Auswertung Erdmodelle Viele Forschungsbereiche benötigen Exascale Performance oder höher 4 / 29
Motivation für Exascale Computing Es gibt bereits Anwendungen wo 50 petaflops an Rechenleistung um Größenordnungen nicht reichen. Fusionsenergie Simulation/Auswertung Erdmodelle Viele Forschungsbereiche benötigen Exascale Performance oder höher 4 / 29
Motivation für Exascale Computing Es gibt bereits Anwendungen wo 50 petaflops an Rechenleistung um Größenordnungen nicht reichen. Fusionsenergie Simulation/Auswertung Erdmodelle Viele Forschungsbereiche benötigen Exascale Performance oder höher 4 / 29
Motivation für Exascale Computing Es gibt bereits Anwendungen wo 50 petaflops an Rechenleistung um Größenordnungen nicht reichen. Fusionsenergie Simulation/Auswertung Erdmodelle Viele Forschungsbereiche benötigen Exascale Performance oder höher 4 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Tianhe-2 Tianhe-2 Peakperformance 54,9 petaflops Linpack Performance 33,8 petaflops Energieverbrauch 17,8MW/24MW Exascale Supercomputer Peakperformance 10 exaflops Energieverbrauch 3294MW/4416MW Energieproblem! 5 / 29
Energieproblem Verbrauch von 4416MW Atomkraftwerk Isar 2 produziert 1410MW 3 Atomkraftwerke ein Raspberry Pi verbraucht nur 3.5 Watt Lösung? 6 / 29
Energieproblem Verbrauch von 4416MW Atomkraftwerk Isar 2 produziert 1410MW 3 Atomkraftwerke ein Raspberry Pi verbraucht nur 3.5 Watt Lösung? 6 / 29
Energieproblem Verbrauch von 4416MW Atomkraftwerk Isar 2 produziert 1410MW 3 Atomkraftwerke ein Raspberry Pi verbraucht nur 3.5 Watt Lösung? 6 / 29
Energieproblem Verbrauch von 4416MW Atomkraftwerk Isar 2 produziert 1410MW 3 Atomkraftwerke ein Raspberry Pi verbraucht nur 3.5 Watt Lösung? 6 / 29
Energieproblem Verbrauch von 4416MW Atomkraftwerk Isar 2 produziert 1410MW 3 Atomkraftwerke ein Raspberry Pi verbraucht nur 3.5 Watt Lösung? 6 / 29
Energieproblem Verbrauch von 4416MW Atomkraftwerk Isar 2 produziert 1410MW 3 Atomkraftwerke ein Raspberry Pi verbraucht nur 3.5 Watt Lösung? 6 / 29
Energieproblem Verbrauch von 4416MW Atomkraftwerk Isar 2 produziert 1410MW 3 Atomkraftwerke ein Raspberry Pi verbraucht nur 3.5 Watt Lösung? 6 / 29
Irdis Pi 64 Pi s 64 700 MHz ARMv6 16GB RAM 224 Watt 7 / 29
Irdis Pi 64 Pi s 64 700 MHz ARMv6 16GB RAM 224 Watt 7 / 29
Irdis Pi 64 Pi s 64 700 MHz ARMv6 16GB RAM 224 Watt 7 / 29
Irdis Pi 64 Pi s 64 700 MHz ARMv6 16GB RAM 224 Watt 7 / 29
Irdis Pi 64 Pi s 64 700 MHz ARMv6 16GB RAM 224 Watt 7 / 29
Benchmark mit verschiedenen Problemgrößen 8 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Vor-/Nachteile Vorteile Nachteile keine Lösung! geringe Anschaffungskosten wenig Leistung wenig Speicher stark Bandbreiten beschränkt GPU kein opencl 9 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
Neue Architekturen MPPA Multi-Purpose Processor Array von Kalray Hauptsitz Paris Gründung 2008 Board: MPPA256 Epiphany von Adapteva Hauptsitz Lexington (Boston) Gründung 2008 Board: Parallella 10 / 29
MPPA I/O Subsysteme 16 Cluster 16 Rechenkerne 1 Systemkern 11 / 29
MPPA I/O Subsysteme 16 Cluster 16 Rechenkerne 1 Systemkern 11 / 29
MPPA I/O Subsysteme 16 Cluster 16 Rechenkerne 1 Systemkern 11 / 29
MPPA I/O Subsysteme 16 Cluster 16 Rechenkerne 1 Systemkern 11 / 29
MPPA I/O Subsysteme 16 Cluster 16 Rechenkerne 1 Systemkern 11 / 29
MPPA verschiedene Varianten mit MPPA 64/256/1024 Energieverbrauch 1,8/5/7 Watt 50 GFLOPS/Watt Steigerung auf 100 GFLOPS/Watt 12 / 29
MPPA verschiedene Varianten mit MPPA 64/256/1024 Energieverbrauch 1,8/5/7 Watt 50 GFLOPS/Watt Steigerung auf 100 GFLOPS/Watt 12 / 29
MPPA verschiedene Varianten mit MPPA 64/256/1024 Energieverbrauch 1,8/5/7 Watt 50 GFLOPS/Watt Steigerung auf 100 GFLOPS/Watt 12 / 29
MPPA verschiedene Varianten mit MPPA 64/256/1024 Energieverbrauch 1,8/5/7 Watt 50 GFLOPS/Watt Steigerung auf 100 GFLOPS/Watt 12 / 29
MPPA verschiedene Varianten mit MPPA 64/256/1024 Energieverbrauch 1,8/5/7 Watt 50 GFLOPS/Watt Steigerung auf 100 GFLOPS/Watt 12 / 29
Epiphany eingesetzt in Parallella Chip mit 16/64 Kernen 50 GFLOPS/Watt 13 / 29
Epiphany eingesetzt in Parallella Chip mit 16/64 Kernen 50 GFLOPS/Watt 13 / 29
Epiphany eingesetzt in Parallella Chip mit 16/64 Kernen 50 GFLOPS/Watt 13 / 29
Epiphany eingesetzt in Parallella Chip mit 16/64 Kernen 50 GFLOPS/Watt 13 / 29
Memory 2 30 32-bit words 4096 Kerne 6-bit column ID 6-bit row ID off-chip RAM 14 / 29
Memory 2 30 32-bit words 4096 Kerne 6-bit column ID 6-bit row ID off-chip RAM 14 / 29
Memory 2 30 32-bit words 4096 Kerne 6-bit column ID 6-bit row ID off-chip RAM 14 / 29
Memory 2 30 32-bit words 4096 Kerne 6-bit column ID 6-bit row ID off-chip RAM 14 / 29
Memory 2 30 32-bit words 4096 Kerne 6-bit column ID 6-bit row ID off-chip RAM 14 / 29
Memory 2 30 32-bit words 4096 Kerne 6-bit column ID 6-bit row ID off-chip RAM 14 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk cmesh (On-chip write) Schreibvorgänge zwischen Mesh Knoten 8-Byte/Cycle in jede Richtung gesamt Durchsatz 62.5 GB/s rmesh (Read request) Leseoperationen 1 alle 8 Cycle in jede Richtung 15 / 29
emesh Netzwerk xmesh (Off-chip write) off-chip Schreiben weitere Boards off-chip I/O 8GB/sec Süd-Nord / Ost-West Aufteilung 16 / 29
emesh Netzwerk xmesh (Off-chip write) off-chip Schreiben weitere Boards off-chip I/O 8GB/sec Süd-Nord / Ost-West Aufteilung 16 / 29
emesh Netzwerk xmesh (Off-chip write) off-chip Schreiben weitere Boards off-chip I/O 8GB/sec Süd-Nord / Ost-West Aufteilung 16 / 29
emesh Netzwerk xmesh (Off-chip write) off-chip Schreiben weitere Boards off-chip I/O 8GB/sec Süd-Nord / Ost-West Aufteilung 16 / 29
emesh Netzwerk xmesh (Off-chip write) off-chip Schreiben weitere Boards off-chip I/O 8GB/sec Süd-Nord / Ost-West Aufteilung 16 / 29
emesh Routing 1 Kern 32,32 schickt Leseanfrage 2 Vergleich: Spalten ID 3 Vergleich: Zeilen ID 4 Kern 39,39 sendet Daten mit cmesh/xmesh 17 / 29
emesh Routing 1 Kern 32,32 schickt Leseanfrage 2 Vergleich: Spalten ID 3 Vergleich: Zeilen ID 4 Kern 39,39 sendet Daten mit cmesh/xmesh 17 / 29
emesh Routing 1 Kern 32,32 schickt Leseanfrage 2 Vergleich: Spalten ID 3 Vergleich: Zeilen ID 4 Kern 39,39 sendet Daten mit cmesh/xmesh 17 / 29
emesh Routing 1 Kern 32,32 schickt Leseanfrage 2 Vergleich: Spalten ID 3 Vergleich: Zeilen ID 4 Kern 39,39 sendet Daten mit cmesh/xmesh 17 / 29
emesh Routing 1 Kern 32,32 schickt Leseanfrage 2 Vergleich: Spalten ID 3 Vergleich: Zeilen ID 4 Kern 39,39 sendet Daten mit cmesh/xmesh 17 / 29
Programmierung MPPA SigmaC IDE basierend auf Eclipse Compiler GDB integriert in Eclipse Spezielle Analyse Tools Debug Board 18 / 29
Programmierung MPPA SigmaC IDE basierend auf Eclipse Compiler GDB integriert in Eclipse Spezielle Analyse Tools Debug Board 18 / 29
Programmierung MPPA SigmaC IDE basierend auf Eclipse Compiler GDB integriert in Eclipse Spezielle Analyse Tools Debug Board 18 / 29
Programmierung MPPA SigmaC IDE basierend auf Eclipse Compiler GDB integriert in Eclipse Spezielle Analyse Tools Debug Board 18 / 29
Programmierung MPPA SigmaC IDE basierend auf Eclipse Compiler GDB integriert in Eclipse Spezielle Analyse Tools Debug Board 18 / 29
Programmierung MPPA SigmaC IDE basierend auf Eclipse Compiler GDB integriert in Eclipse Spezielle Analyse Tools Debug Board 18 / 29
Programmierung MPPA SigmaC IDE basierend auf Eclipse Compiler GDB integriert in Eclipse Spezielle Analyse Tools Debug Board 18 / 29
Programmierung Parallella C Syntax IDE basierend auf Eclipse E-GCC E-GDB Simulator 19 / 29
Programmierung Parallella C Syntax IDE basierend auf Eclipse E-GCC E-GDB Simulator 19 / 29
Programmierung Parallella C Syntax IDE basierend auf Eclipse E-GCC E-GDB Simulator 19 / 29
Programmierung Parallella C Syntax IDE basierend auf Eclipse E-GCC E-GDB Simulator 19 / 29
Programmierung Parallella C Syntax IDE basierend auf Eclipse E-GCC E-GDB Simulator 19 / 29
Programmierung Parallella C Syntax IDE basierend auf Eclipse E-GCC E-GDB Simulator 19 / 29
Matrixmultiplikation C ij = N 1 k=0 (A ik B kj ) Blocked by row and column Matrix A wird nach unten verschoben Matrix B verschoben nach rechts 90% Peakperformance 20 / 29
Matrixmultiplikation C ij = N 1 k=0 (A ik B kj ) Blocked by row and column Matrix A wird nach unten verschoben Matrix B verschoben nach rechts 90% Peakperformance 20 / 29
Matrixmultiplikation C ij = N 1 k=0 (A ik B kj ) Blocked by row and column Matrix A wird nach unten verschoben Matrix B verschoben nach rechts 90% Peakperformance 20 / 29
Matrixmultiplikation C ij = N 1 k=0 (A ik B kj ) Blocked by row and column Matrix A wird nach unten verschoben Matrix B verschoben nach rechts 90% Peakperformance 20 / 29
Matrixmultiplikation C ij = N 1 k=0 (A ik B kj ) Blocked by row and column Matrix A wird nach unten verschoben Matrix B verschoben nach rechts 90% Peakperformance 20 / 29
Matrixmultiplikation C ij = N 1 k=0 (A ik B kj ) Blocked by row and column Matrix A wird nach unten verschoben Matrix B verschoben nach rechts 90% Peakperformance 20 / 29
Matrixmultiplikation Code 1 f o r ( kc = 0; kc < Nside ; kc ++) { 2 matmac(me.banka[me.pingpong] 3, me.bankb[me.pingpong], me.bankc, Score); 4 5 / / Swap A banks h o r i z o n t a l l y 6 src = me. banka [me. pingpong ] ; 7 dst = me. tgta [me. pingpong ] ; 8 i f ( kc < ( Nside 1 ) ) 9 datacopy(&dmadesc[1], dst, src); 10 11 / / Swap B banks v e r t i c a l l y 12 src = me. bankb [me. pingpong ] ; 13 dst = me. tgtb [me. pingpong ] ; 14 i f ( kc < ( Nside 1 ) ) 15 datacopy(&dmadesc[1], dst, src); 16 17 me.pingpong = 1 - me.pingpong; 18 19 / / Sync with a l l other cores 20 ebarrier(barriers, tgtbars); 21 } 21 / 29
Matrixmultiplikation Code 1 f o r ( kc = 0; kc < Nside ; kc ++) { 2 matmac(me.banka[me.pingpong] 3, me.bankb[me.pingpong], me.bankc, Score); 4 5 / / Swap A banks h o r i z o n t a l l y 6 src = me. banka [me. pingpong ] ; 7 dst = me. tgta [me. pingpong ] ; 8 i f ( kc < ( Nside 1 ) ) 9 datacopy(&dmadesc[1], dst, src); 10 11 / / Swap B banks v e r t i c a l l y 12 src = me. bankb [me. pingpong ] ; 13 dst = me. tgtb [me. pingpong ] ; 14 i f ( kc < ( Nside 1 ) ) 15 datacopy(&dmadesc[1], dst, src); 16 17 me.pingpong = 1 - me.pingpong; 18 19 / / Sync with a l l other cores 20 ebarrier(barriers, tgtbars); 21 } 21 / 29
Matrixmultiplikation Code 1 f o r ( kc = 0; kc < Nside ; kc ++) { 2 matmac(me.banka[me.pingpong] 3, me.bankb[me.pingpong], me.bankc, Score); 4 5 / / Swap A banks h o r i z o n t a l l y 6 src = me. banka [me. pingpong ] ; 7 dst = me. tgta [me. pingpong ] ; 8 i f ( kc < ( Nside 1 ) ) 9 datacopy(&dmadesc[1], dst, src); 10 11 / / Swap B banks v e r t i c a l l y 12 src = me. bankb [me. pingpong ] ; 13 dst = me. tgtb [me. pingpong ] ; 14 i f ( kc < ( Nside 1 ) ) 15 datacopy(&dmadesc[1], dst, src); 16 17 me.pingpong = 1 - me.pingpong; 18 19 / / Sync with a l l other cores 20 ebarrier(barriers, tgtbars); 21 } 21 / 29
Matrixmultiplikation Code 1 f o r ( kc = 0; kc < Nside ; kc ++) { 2 matmac(me.banka[me.pingpong] 3, me.bankb[me.pingpong], me.bankc, Score); 4 5 / / Swap A banks h o r i z o n t a l l y 6 src = me. banka [me. pingpong ] ; 7 dst = me. tgta [me. pingpong ] ; 8 i f ( kc < ( Nside 1 ) ) 9 datacopy(&dmadesc[1], dst, src); 10 11 / / Swap B banks v e r t i c a l l y 12 src = me. bankb [me. pingpong ] ; 13 dst = me. tgtb [me. pingpong ] ; 14 i f ( kc < ( Nside 1 ) ) 15 datacopy(&dmadesc[1], dst, src); 16 17 me.pingpong = 1 - me.pingpong; 18 19 / / Sync with a l l other cores 20 ebarrier(barriers, tgtbars); 21 } 21 / 29
Matrixmultiplikation Code 1 f o r ( kc = 0; kc < Nside ; kc ++) { 2 matmac(me.banka[me.pingpong] 3, me.bankb[me.pingpong], me.bankc, Score); 4 5 / / Swap A banks h o r i z o n t a l l y 6 src = me. banka [me. pingpong ] ; 7 dst = me. tgta [me. pingpong ] ; 8 i f ( kc < ( Nside 1 ) ) 9 datacopy(&dmadesc[1], dst, src); 10 11 / / Swap B banks v e r t i c a l l y 12 src = me. bankb [me. pingpong ] ; 13 dst = me. tgtb [me. pingpong ] ; 14 i f ( kc < ( Nside 1 ) ) 15 datacopy(&dmadesc[1], dst, src); 16 17 me.pingpong = 1 - me.pingpong; 18 19 / / Sync with a l l other cores 20 ebarrier(barriers, tgtbars); 21 } 21 / 29
Probleme Struktur des emesh Netzwerks Unterschied zwischen xmesh und cmesh einzelnes emesh maximal 4096 Kerne Initialkosten von MPI bei sehr vielen Kernen zu hoch MPI zu schwer für einzelne Kerne 22 / 29
Probleme Struktur des emesh Netzwerks Unterschied zwischen xmesh und cmesh einzelnes emesh maximal 4096 Kerne Initialkosten von MPI bei sehr vielen Kernen zu hoch MPI zu schwer für einzelne Kerne 22 / 29
Probleme Struktur des emesh Netzwerks Unterschied zwischen xmesh und cmesh einzelnes emesh maximal 4096 Kerne Initialkosten von MPI bei sehr vielen Kernen zu hoch MPI zu schwer für einzelne Kerne 22 / 29
Probleme Struktur des emesh Netzwerks Unterschied zwischen xmesh und cmesh einzelnes emesh maximal 4096 Kerne Initialkosten von MPI bei sehr vielen Kernen zu hoch MPI zu schwer für einzelne Kerne 22 / 29
Probleme Struktur des emesh Netzwerks Unterschied zwischen xmesh und cmesh einzelnes emesh maximal 4096 Kerne Initialkosten von MPI bei sehr vielen Kernen zu hoch MPI zu schwer für einzelne Kerne 22 / 29
Probleme Struktur des emesh Netzwerks Unterschied zwischen xmesh und cmesh einzelnes emesh maximal 4096 Kerne Initialkosten von MPI bei sehr vielen Kernen zu hoch MPI zu schwer für einzelne Kerne 22 / 29
Lösungen effiziente Integration von emesh in libs/apis schlanke Version von MPI (MPI lite) Zwei-Schichten-Modell mit MPI+SubProgramm automatische Code Generierung 23 / 29
Lösungen effiziente Integration von emesh in libs/apis schlanke Version von MPI (MPI lite) Zwei-Schichten-Modell mit MPI+SubProgramm automatische Code Generierung 23 / 29
Lösungen effiziente Integration von emesh in libs/apis schlanke Version von MPI (MPI lite) Zwei-Schichten-Modell mit MPI+SubProgramm automatische Code Generierung 23 / 29
Lösungen effiziente Integration von emesh in libs/apis schlanke Version von MPI (MPI lite) Zwei-Schichten-Modell mit MPI+SubProgramm automatische Code Generierung 23 / 29
Lösungen effiziente Integration von emesh in libs/apis schlanke Version von MPI (MPI lite) Zwei-Schichten-Modell mit MPI+SubProgramm automatische Code Generierung 23 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Exascale Supercomputer ähnlich zu Tianhe-2 10 exaflops 3294MW 2 944 000 Rechenknoten 574 080 000 Kerne bestehend aus Boards 10 exaflops 200MW 6% (800MW 24%) 98 Millionen Boards 6 272 000 000 Kerne 24 / 29
Supercomputing mit den neuen Architekturen Probleme Probleme Platzverbrauch Kühlung Wartung 25 / 29
Supercomputing mit den neuen Architekturen Probleme Probleme Platzverbrauch Kühlung Wartung 25 / 29
Supercomputing mit den neuen Architekturen Probleme Probleme Platzverbrauch Kühlung Wartung 25 / 29
Supercomputing mit den neuen Architekturen Probleme Probleme Platzverbrauch Kühlung Wartung 25 / 29
Supercomputing mit den neuen Architekturen Probleme Probleme Platzverbrauch Kühlung Wartung 25 / 29
Supercomputing mit den neuen Architekturen Probleme Probleme Platzverbrauch Kühlung Wartung 25 / 29
Supercomputing mit den neuen Architekturen Probleme Möglich Lösung: Konstruktion eine PCIe Karte ähnlich zu Xeon Phi Board mit mehreren Chips Würfel mit mehreren Boards 26 / 29
Supercomputing mit den neuen Architekturen Probleme Möglich Lösung: Konstruktion eine PCIe Karte ähnlich zu Xeon Phi Board mit mehreren Chips Würfel mit mehreren Boards 26 / 29
Supercomputing mit den neuen Architekturen Probleme Möglich Lösung: Konstruktion eine PCIe Karte ähnlich zu Xeon Phi Board mit mehreren Chips Würfel mit mehreren Boards 26 / 29
Supercomputing mit den neuen Architekturen Probleme Möglich Lösung: Konstruktion eine PCIe Karte ähnlich zu Xeon Phi Board mit mehreren Chips Würfel mit mehreren Boards 26 / 29
Supercomputing mit den neuen Architekturen Probleme Möglich Lösung: Konstruktion eine PCIe Karte ähnlich zu Xeon Phi Board mit mehreren Chips Würfel mit mehreren Boards 26 / 29
Energieeffizienz Tianhe-2 Piz Daint Xeon Phi Nvidia GT 630(GK208) Epiphany/MPPA Zukunft MPPA 1,9 GFLOPS/Watt 3,1 GFLOPS/Watt 9 GFLOPS/Watt 27,7 GFLOPS/Watt 50 GFLOPS/Watt bis zu 100 GFLOPS/Watt 27 / 29
Energieeffizienz Tianhe-2 Piz Daint Xeon Phi Nvidia GT 630(GK208) Epiphany/MPPA Zukunft MPPA 1,9 GFLOPS/Watt 3,1 GFLOPS/Watt 9 GFLOPS/Watt 27,7 GFLOPS/Watt 50 GFLOPS/Watt bis zu 100 GFLOPS/Watt 27 / 29
Energieeffizienz Tianhe-2 Piz Daint Xeon Phi Nvidia GT 630(GK208) Epiphany/MPPA Zukunft MPPA 1,9 GFLOPS/Watt 3,1 GFLOPS/Watt 9 GFLOPS/Watt 27,7 GFLOPS/Watt 50 GFLOPS/Watt bis zu 100 GFLOPS/Watt 27 / 29
Energieeffizienz Tianhe-2 Piz Daint Xeon Phi Nvidia GT 630(GK208) Epiphany/MPPA Zukunft MPPA 1,9 GFLOPS/Watt 3,1 GFLOPS/Watt 9 GFLOPS/Watt 27,7 GFLOPS/Watt 50 GFLOPS/Watt bis zu 100 GFLOPS/Watt 27 / 29
Energieeffizienz Tianhe-2 Piz Daint Xeon Phi Nvidia GT 630(GK208) Epiphany/MPPA Zukunft MPPA 1,9 GFLOPS/Watt 3,1 GFLOPS/Watt 9 GFLOPS/Watt 27,7 GFLOPS/Watt 50 GFLOPS/Watt bis zu 100 GFLOPS/Watt 27 / 29
Energieeffizienz Tianhe-2 Piz Daint Xeon Phi Nvidia GT 630(GK208) Epiphany/MPPA Zukunft MPPA 1,9 GFLOPS/Watt 3,1 GFLOPS/Watt 9 GFLOPS/Watt 27,7 GFLOPS/Watt 50 GFLOPS/Watt bis zu 100 GFLOPS/Watt 27 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fazit Schritt in die richtige Richtung aber keine finale Lösung Hat: gute Energieeffizienz Braucht: bessere Integration in Software Libraries einfache Programmierkonzepte Codegenerator bessere Umsetzung für Cluster 28 / 29
Fragen? 29 / 29