Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6...

30
Programmierung von Many-Cores Seminar: Software Engineering für Exascale Computing Patrizia Peller April 18, 2013

Transcript of Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6...

Page 1: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Programmierung von Many-Cores Seminar: Software Engineering für Exascale Computing

Patrizia Peller April 18, 2013

Page 2: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Programmierung von Many-Cores

Hardware-Architekturen Anforderungen an Programmiersprachen Parallelisierung in Programmiersprachen Programmierumgebungen und Bibliotheken

Plattform-spezifische Programmierumgebungen

On step higher: Cross-Plattform Entwicklungsumgebungen

Einordnung: welche Sprache für welche Architektur? Aussichten

2

Page 3: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Hardware-Architekturen 1)  Six-Core AMD OpteronTM

2)  Intel Xeon Phi 5110P

3)  NVIDIA® TESLA K20C

4)  Parallella

5)  Kalray

6)  Anforderungen an Programmiersprachen

3

Page 4: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Gegenüberstellung     AMD  Opteron   Intel  Xeon  Phi  

5110P  NVIDIA    Tesla  K20C  

Parallella   Kalray  

#  Kerne   6  -­‐  12   60   2688     16-­‐64   256  –  1024  Kerne  

Leistungs-­‐aufnahme  

40  bis  105  Watt   225  Watt   235  Watt   5  Watt   5  Watt  

Frequenz   1.800  -­‐  2.800  MHz   1.053  GHz   735  –  745  MHz   800  MHz   400  MHz  

Rechenleistung   10  GFLOPS   1  TFLOPS   1,17  –  1,3  TFLOPS   25  bis  90  GFLOPS   230  –  920  GFLOPS  

Architektur   Direct  Connect   Many  Integrated  Cores  

NVIDIA  CUDA   Epiphany   MPPA  

Speicher-­‐verwaltung  

Verteilter  L2,  gemeinsamer  L3  Cache  

Verteilter  L2,  gemeinsamer  L3  Cache  

Shared  Memory   Distributed  Shared  Memory  

Distributed  Memory  

Programmier-­‐sprachen  

 N.A.   Cilk  Plus,  TBB,  OpenMP,  MPI,  DO  CONCURRENT  

CUDA,  OpenACC,  OpenCL,  DirectX,  Fortran  

OpenCL,  Erlang,  Python,  GO  

MPPA  ACCESSCORE  

Große Unterschiede in den technischen Spezifikationen und der Leistung

Hardware-Architekturen

4

Page 5: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Hardware-Architekturen

5

Six-core AMD OpteronTM ¡  Keine Unterstützung zur

Thread-Verwaltung, ¡  Trotzdem gut geeignet für

Programme mit Multithreading

¡  Hardware verwaltet den Arbeitsspeicher selbst

¡  Leistungsfähige, flexible Kerne, dafür weniger

http://www.amd.com/de/Documents/4P_Server_Arch_Compare_44226B.pdf http://www.amd.com/de/products/server/processors/six-core-opteron/

Pages/six-core-opteron.aspx http://www.amd.com/de/Documents/Cores_vs_Threads_Whitepaper.pdf

Page 6: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Intel Xeon Phi 5110P – Many Integrated Cores

6

Hardware-Architekturen

¡  Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für Einsatz als GPU-Arbeitsspeicher

¡  Unterstützt massives Threading (bis 240 Threads)

¡  Arbeitet auf Vektoren -> Einschränkung bei Programmiersprachen http://www.intel.com/content/www/us/en/processors/xeon/xeon-phi-detail.html

http://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-codename-knights-corner

Page 7: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

NVIDIA TESLA K20C – Kepler Architektur

Hardware-Architekturen

7

Shared memory!!!

¡  Sehr hohe Anzahl an Kernen, dafür sehr einfach

¡  Einsatz: rechenintensive Programme mit einfachen arithmetischen Operationen

¡  Anwendungsgebiete z.B. Molekulardynamik, Quantenchemie, numerische Analytik, Physik, Wetter- und Klimavorhersage

https://developer.nvidia.com/what-cuda http://www.nvidia.de/object/why-choose-tesla-de.html

http://www.nvidia.de/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf

Page 8: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Parallella und seine Architektur Epiphany

Hardware-Architekturen

8

¡  distributed shared memory!!!

¡ General Purpose Prozessoren

¡  Hardware-Support für multicore data-sharing

¡ Neutral gegenüber Programmiermodellen

http://www.parallella.org/introduction/ http://www.adapteva.com/wp-content/uploads/2012/12/

epiphany_arch_reference_3.12.12.18.pdf

Page 9: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Kalray – MPPA 256 Cluster

Hardware-Architekturen

9

¡  VLIW-Prozessor mit einfachen Kernen ¡  VLIW: Very Long Instruction Word

¡  Support für spezielle Operationen wie z.B. Bit-Shuffling oder Byte-Swapping ¡  Spezialisiert auf kryptographische

Operationen

¡  Daten laufen durch Splitter, jeder Task erhält einen Teil ¡  CPU verwaltet die Threads wie bei

GPUs

http://www.kalray.eu/

Page 10: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

1)  Energieeffizienz §  Künftig weniger Threads, dafür mehr Kerne =>

erfordert mehr Parallelität

2)  Unterschied zwischen CPUs und GPUs verschwimmt

3)  Portabilität von Programmen zwischen Plattformen

§  high-level Programmiersprachen für Entwickler wünschenswert -> höhere Performanz, gute Portabilität

§  ! Trade-Off zwischen Performanz und Parallelität

Anforderungen an Programmiersprachen

Hardware-Architekturen

10

Page 11: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Parallelisierung in Programmiersprachen 1)  X10 - Task-basierter Lösungsansatz

2)  Go: Communicating Sequential Processes

3)  Scala: Parallelisierung mit dem Actor-Modell

4)  Parallelisierungstechniken

11

Page 12: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Task-basiertes Programmieren ¡  Entwickler muss parallelisierbare Befehle selbst identifizieren und

kennzeichnen

¡  Run-time System übernimmt eigentliches Scheduling auf vorhandener Hardware ¡  Für den Programmierer transparent

¡  Mit work-stealing-Algorithmus (garantiert Ausführung in maximal doppelter Zeit als optimal)

¡  Implizit Verwendung von gemeinsamem Speicher

Parallelisierung in Programmiersprachen

12

Page 13: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

X10 – Task-basierter Lösungsansatz ¡ Objektorientiert, compiliert zu Java-Bytecode

¡  Beruht auf dem PGAS Modell: partitioned global address space

¡  Umgebung besteht aus mehreren places (Kern/Prozessor mit eigenem Speicher)

¡ Objekte in einem place bieten nur in diesem place Lese- und Schreibrechte ¡  Activities (~Task) müssen zuerst auf diesen place verschoben werden

¡ Container wie z.B. Arrays können über mehrere places verteilt sein => erleichtert Parallelisierung

Parallelisierung in Programmiersprachen

13

Programming Many-Core Chips, Vajda András, 2011, Springer Verlag, Kapitel 8 bis 10

Page 14: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

CSP Modell ¡  Prozesse sind statisch definiert, spezieller Mechanismus zum

Kennzeichnen parallel ausführbarer sequentieller Prozesse

¡  Kommunikation zw. Prozessen nur über Nachrichten ¡  Nur wenn der Sender den Empfänger explizit nennt und umgekehrt

und der Empfänger bereit ist, sonst Verzögerung ¡  Mehrere Nachrichten: eine wird ausgewählt -> nicht-deterministisch ¡  Nachrichten steuern den Kontrollfluss im Programm!

¡  Share-nothing-Prinzip: kein gemeinsamer Speicher, nur Kommunikation

Ø Small-scale Anwendung in sicherheitskritischen Systemen, aber nicht geeignet für komplexere Anforderungen

Parallelisierung in Programmiersprachen

14

Page 15: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Go: Communicating Sequential Processes ¡  Imperative Sprache wie Java / C++

¡  Implementiert CSP Modell, ermöglicht aber gemeinsamen Speicher

¡  Parallelität über: ¡  Communication channels: Kommunikation zwischen Prozessen,

Versand von Referenzen auf Daten und Channels

¡  Prinzip: „Share memory by communicating“

¡  Goroutines: werden von anderen Prozessen ausgelöst und können mit anderen Prozessen kommunizieren

Parallelisierung in Programmiersprachen

15

Programming Many-Core Chips, Vajda András

Page 16: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Actor-Modell ¡ Actor: ¡  Asynchrone Kommunikation mit jedem Actor möglich

¡  Führt Operationen je nach eingehender Nachricht und internem Zustand aus

¡  kann mit (beliebig vielen) Nachrichten antworten

¡  Kann neue Actors erzeugen -> dynamisch

¡  Zustellungsreihenfolge der Nachrichten nicht total ¡  Events sind dagegen total geordnet!

¡  Keine zentrale Einheit, die alleinigen Überblick über das gesamte System hat -> verteilt

Parallelisierung in Programmiersprachen

16

Page 17: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Scala: Parallelisierung mit dem Actor-Modell ¡  Blend aus objektorientierter und funktioneller Sprache

¡ Compiled zu Java-Bytecode und in JVM ausgeführt ¡  für unterschiedliche Plattformen geeignet ¡  Actors werden auf Java-Thread gemapped und von der JVM

gescheduled

¡  Synchrone und asynchrone Nachrichten möglich (synchron: Sender wird blockiert bis die reply des Empfängers da ist

Parallelisierung in Programmiersprachen

17

Programming Many-Core Chips; Vajda András

Page 18: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Parallelisierungstechniken ¡  Schleifenparallelisierung: ¡  Intel TBB: parallel_for, parallel_do, parallel_reduce

¡  OpenMP: #pragma omp parallel for

¡  SPAP: forall

¡ Compiler-Direktiven ¡  OpenMP: #pragma omp <Anweisung>

¡  OpenACC: !$acc <Anweisung>, #pragma acc <Anweisung>

¡  Spezielle Umgebungsvariablen z.B. in OpenMP

Parallelisierung in Programmiersprachen

18

Programming Many-Core Chips, Vajda András Quellen der folgenden folgenden Programmiersprachen

Page 19: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Parallelisierungstechniken ¡  Zusätzliche Schlüsselwörter ¡  Intel Cilk: cilk, spawn, sync

¡  X10: async, finish, atomic oder clocked

¡  Implementierung spezieller Klassen + Overriding von Methoden ¡  Scala: Klasse Actor, Methode Actor.act()

¡  Intel TBB: Klasse Task, Methode Task.execute()

¡  Microsoft TPL: Klasse Task

Parallelisierung in Programmiersprachen

19

Page 20: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Programmierumgebungen und Bibliotheken ¡  Standardisierte Entwicklungsumgebungen von Betriebssystem-

und Hardware-Herstellern 1)  Intel Cilk

2)  Apple: Grand Central Dispatch

3)  Microsoft Task Parallel Library

Einsetzbar, wenn Hardware / OS / Applikationen bekannt ⇒ hoher Parallelisierungsgrad erreichbar ⇒ Weniger sinnvoll, wenn Programm auf unterschiedlichen Plattformen laufen muss

20

Page 21: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Programmierumgebungen und Bibliotheken ¡ One step higher: Cross-Plattform Entwicklungsumgebungen

1)  OpenMP

2)  OpenHMPP

3)  OpenCL

4)  SPAP

Einsatzbereiche: ⇒ Programme, die auf jeder CPU und/oder GPU

laufen müssen ⇒ Bsp: AES-Verschlüsselung, JPEG-Encoding

21

Page 22: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Intel Cilk ¡  Task-basiert:

¡  Threads werden mit Kontext initiiert und in einer Queue verwaltet, von der Prozessoren stehlen können (work-stealing)

¡  Resultat: DAG (directed acyclic graph) mit G = (V, E): V = Menge aller Knoten (hier Threads) E = Menge aller Kanten (hier Kontext des Parent-Threads) ¡  Dynamisch aufbaubar!

Plattform-spezifische Programmierumgebungen

22

Programming Many-Core Chips, Vajda András

¡  Beispiel: cilk unsigned int fibonacci (unsigned int num) { if (num < 2) return num; else { unsigned int f1, f2;

f1 = spawn fibonacci(num – 1); f2 = spawn fibonacci(num – 2);

sync;

return f1 + f2; } }

Page 23: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Apple Grand Central Dispatch ¡  Basiert auf Compiler-

Erweiterungen wie ¡  Blocks: ähnlich wie private

Funktionen

int(hitchhiker)(int) =

^(int n){return n*42}

¡ Ausführung dieser Blocks kann auf mehrere Queues verteilt werden

Plattform-spezifische Programmierumgebungen

23

Programming Many-Core Chips, Vajda András

Page 24: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Microsoft Task Parallel Library ¡  Teil des .NET Frameworks seit Version 4.0

¡  Scheduler arbeitet auf Thread-Pool, Thread local queues und mit „work-stealing“ ¡  Besonderheit: In-lining von Tasks

¡  Tasks können auch abgebrochen werden!

¡  Explizite Synchronisation erforderlich

Plattform-spezifische Programmierumgebungen

24

Programming Many-Core Chips, Vajda András

Task 1

Task 2

Task 3

Task 4

Task 5

Wartet auf

Wird vorgezogen

Page 25: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

OpenMP ¡  Task-basiert und data-parallel

¡  Parallelisierung mit Hilfe von: ¡  Synchronization primitives: Scheduling nur an bestimmten Punkten

¡  Data-Sharing Attributes: shared(x,y,z,n) ó private(i)

¡  Verschachtelte Parallelisierung: Verschachtelung von Tasks

¡  Thread-Pool-Dimensionierung und –Management

¡  Runtime-System muss Scheduling der Tasks und Zuweisung zu Prozessoren übernehmen

Ø Besonders geeignet für CPUs

One step higher: Cross-Plattform Entwicklungsumgebungen

25

Programming Many-Core Chips, Vajda András

Page 26: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

OpenHMPP ¡  Hauptsächlich für GPUs

¡ Arbeitet mit Compiler-Direktiven ¡  Direktiven: beschreiben remote procedure calls auf accelerators

¡  Entwickler muss Hardware (und damit Scheduling) selbst verwalten

¡  Fokus auf Portabilität

26

http://www.caps-entreprise.com/openhmpp-directives/ One step higher: Cross-Plattform Entwicklungsumgebungen

Page 27: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

OpenCL ¡  Task = Kernel mit genau einem Arbeitspaket

¡  Kernel kann nicht als Host-Funktion dienen

¡  Programmausführung auf command queues

¡  Hardware zuständig für Scheduling der Queues auf OpenCL devices ¡  Devices bestehen aus mehreren Recheneinheiten ¡  Nur für GPUs, die Tasks selbst verwalten

¡  Asynchron: in-order (seriell) oder out-of-order Ausführung der Befehle

Ø dynamisches task-paralleles Programmieren kaum möglich

One step higher: Cross-Plattform Entwicklungsumgebungen

27

Programming Many-Core Chips, Vajda András

Page 28: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

SPAP ¡  Programme auf CPUs und GPUs verwendbar

¡  Definiert eigene Container wie z.B. Lists: auto pos_i = new int<>;

¡  Zwei Parallelisierungsarten: 1.  Innerhalb eines Prozessors: push_back() 2.  Zwischen Prozessoren: distribute()

¡  SPAP Befehle werden automatisch durch die effizienteste Implementierung des Prozessors ersetzt

¡  Scheduling: Teile von Tasks werden an Prozessoren vergeben, sobald diese frei sind ¡  Größe der Teile bestimmt durch Kapazität des Prozessors oder Entwickler

One step higher: Cross-Plattform Entwicklungsumgebungen

28

SPAP: A Programming Language for Heterogenous Many-Core Systems.Qiming Hou, Kun Zhou, Baining Guo. Graphical

and Parallel Systems Lab, Zhejiang University. 2010

Page 29: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Einordnung: Welche Sprache für welche Architektur?

29

Page 30: Seminar: Software Engineering für Exascale …...Intel Xeon Phi 5110P – Many Integrated Cores 6 Hardware-Architekturen ! Gemeinsamer Speicher ist GDDR5 Speicher => optimiert für

Aussichten Automatisierung

Immer noch direkte Anweisungen erforderlich, wo Parallelisierung in einem Programm möglich ist

Higher level

High-level Programmiersprachen mit Parallelisierungsmechanismen versehen

Neue Technologien

NVIDIA Volta (GPU mit bis zu 1TB/s Bandbreite, vermutlich 2016): neue Technologie mit Stacked DRAM Devise: weg von Threads hin zu Cores

30