GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed...

31
GoBack

Transcript of GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed...

Page 1: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

GoBack

Page 2: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

- p. 1/18

�� ��� � ��� �� � �� � � ��� � �� � � � � � �

� � � � � � ���� �� �� � �� � � � � ��� �� � � � � � ��� � � �

Tobias GradlTechnische Universität München

Lehrstuhl für Informatik mit Schwerpunkt Wissenschaftliches Rechnen

Page 3: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

Positiv-Beispiel

- p. 2/18

� � � � �

l GrundlagenF Distributed memory und MPIF Shared memory und OpenMPF SMP-Cluster und Hybride Programmierung

l Vergleich der Paradigmen anhand von Ax = b

l Positiv-Beispiel: Vacancy-Tracking

Page 4: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

Positiv-Beispiel

- p. 2/18

� � � � �

l GrundlagenF Distributed memory und MPIF Shared memory und OpenMPF SMP-Cluster und Hybride Programmierung

l Vergleich der Paradigmen anhand von Ax = b

l Positiv-Beispiel: Vacancy-Tracking

Page 5: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

Positiv-Beispiel

- p. 2/18

� � � � �

l GrundlagenF Distributed memory und MPIF Shared memory und OpenMPF SMP-Cluster und Hybride Programmierung

l Vergleich der Paradigmen anhand von Ax = b

l Positiv-Beispiel: Vacancy-Tracking

Page 6: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 3/18

��� �� � � � � � � �� � � � ��

CPU

RAM

CPU

RAM

Netzwerk

MPI: FunktionsbibliothekMPI_Send(), MPI_Recv(),MPI_Barrier(), etc.

Umsetzung in Ax = b:x-Werte senden u. empfangenfor (i = s; i ≤ e; i++){

Zeile Ai multiplizieren}

Page 7: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 3/18

��� �� � � � � � � �� � � � ��

CPU

RAM

CPU

RAM

Netzwerk

MPI: FunktionsbibliothekMPI_Send(), MPI_Recv(),MPI_Barrier(), etc.

Umsetzung in Ax = b:x-Werte senden u. empfangenfor (i = s; i ≤ e; i++){

Zeile Ai multiplizieren}

Page 8: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 3/18

��� �� � � � � � � �� � � � ��

CPU

RAM

CPU

RAM

Netzwerk

MPI: FunktionsbibliothekMPI_Send(), MPI_Recv(),MPI_Barrier(), etc.

Umsetzung in Ax = b:x-Werte senden u. empfangenfor (i = s; i ≤ e; i++){

Zeile Ai multiplizieren}

Page 9: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 4/18

� � � � � � � � �� � � � � � �

CPU CPU

RAM

Bus

OpenMP: Compiler-Erweiterung#pragma omp ...

Umsetzung in Ax = b:#pragma omp parallel forfor (i = 0; i < n; i++){

Zeile Ai multiplizieren}

Page 10: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 4/18

� � � � � � � � �� � � � � � �

CPU CPU

RAM

Bus

OpenMP: Compiler-Erweiterung#pragma omp ...

Umsetzung in Ax = b:#pragma omp parallel forfor (i = 0; i < n; i++){

Zeile Ai multiplizieren}

Page 11: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 4/18

� � � � � � � � �� � � � � � �

CPU CPU

RAM

Bus

OpenMP: Compiler-Erweiterung#pragma omp ...

Umsetzung in Ax = b:#pragma omp parallel forfor (i = 0; i < n; i++){

Zeile Ai multiplizieren}

Page 12: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 5/18

� � � � ��� � � � � � � � �� � � � � � � � � ��� �� � �CPU CPU

Bus

RAM

Netzwerk

CPU CPU

RAM

Bus

Kno

ten

Kno

ten

Kombination von MPI und OpenMP

Umsetzung in Ax = b:x-Werte senden u. empfangen#pragma omp parallel forfor (i = s1; i < s2; i++){

Zeile Ai multiplizieren}

Page 13: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 5/18

� � � � ��� � � � � � � � �� � � � � � � � � ��� �� � �CPU CPU

Bus

RAM

Netzwerk

CPU CPU

RAM

Bus

Kno

ten

Kno

ten

Kombination von MPI und OpenMP

Umsetzung in Ax = b:x-Werte senden u. empfangen#pragma omp parallel forfor (i = s1; i < s2; i++){

Zeile Ai multiplizieren}

Page 14: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagenv Distributed

memory und MPIv Shared memory

und OpenMPv SMP-Cluster und

HybrideProgrammierung

Ax = b

Positiv-Beispiel

- p. 5/18

� � � � ��� � � � � � � � �� � � � � � � � � ��� �� � �CPU CPU

Bus

RAM

Netzwerk

CPU CPU

RAM

Bus

Kno

ten

Kno

ten

Kombination von MPI und OpenMP

Umsetzung in Ax = b:x-Werte senden u. empfangen#pragma omp parallel forfor (i = s1; i < s2; i++){

Zeile Ai multiplizieren}

Page 15: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 6/18

Ax = b

� � � ��� � � �� � � � �� �� � �� �

Größere Partitionen, keine MPI-Nachrichten innerhalb einesKnotens⇒ weniger Zeitbedarf für Kommunikation.

Gleicher Rechenaufwand, weniger Kommunikationsaufwand⇒ Hybrid ist schneller

Page 16: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 6/18

Ax = b

� � � ��� � � �� � � � �� �� � �� �

Größere Partitionen, keine MPI-Nachrichten innerhalb einesKnotens⇒ weniger Zeitbedarf für Kommunikation.

Gleicher Rechenaufwand, weniger Kommunikationsaufwand⇒ Hybrid ist schneller

Page 17: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 6/18

Ax = b

� � � ��� � � �� � � � �� �� � �� �

Größere Partitionen, keine MPI-Nachrichten innerhalb einesKnotens⇒ weniger Zeitbedarf für Kommunikation.

Gleicher Rechenaufwand, weniger Kommunikationsaufwand⇒ Hybrid ist schneller

Page 18: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 7/18

! �� �#" � � $ ��� � �� �� n � � �% � �� � � �

nn = 2, np = 16

10−4

10−3

10−2

10−1

100

101 102 103 104 105 106 107 108

t

nr

MPIhybrid

Page 19: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 8/18

! �� �#" � � $ ��� � �� �� ncpu

� � �% � �� � � �

nr = 216.000

0

0.02

0.04

0.06

0.08

0.1

0.12

0.14

48 40 32 24 16 8 1

t

ncpu

MPIhybrid

Page 20: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 9/18

�� � � ��� �� � � �� � &(' )

nn = 2, np = 16

10−6

10−5

10−4

10−3

10−2

10−1

100

101 102 103 104 105 106 107 108

t

nr

comp+commcopy sbuf

call MPIcomp

Page 21: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 10/18

� � � � �� � � � � �� � � � � �10−6

10−5

10−4

10−3

10−2

10−1

100

101 102 103 104 105 106 107 108

t

nr

comp (MPI)comp (hyb)

Page 22: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 11/18

� � � � �� � � � � �� � � � � �10−5

10−4

10−3

10−2

10−1

101 102 103 104 105 106 107 108

t

nr

Cache−Größe

comp(hyb) − comp(MPI)OpenMP−Overhead

Page 23: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 12/18

� � � � �� � ��� � � �� � � � � � * �

10−6

10−5

10−4

10−3

10−2

101 102 103 104 105 106 107 108

t

nr

copy sbuf (MPI)copy sbuf (hyb)

Page 24: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 13/18

� � � � �� �� � � � �� �10−4

10−3

10−2

101 102 103 104 105 106 107 108

t

nr

call MPI (MPI)call MPI (hyb)

Page 25: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 14/18

� � � � �� �� � � � �� � 0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

t(np)

/ t(n

p,m

ax)

np / np,max

SeaborgInfinicluster

Page 26: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 15/18

�� � � ��� �� � � �� � &(+ )

nr = 216.000

0

0.02

0.04

0.06

0.08

0.1

0.12

0.14

48 40 32 24 16 8 1

comp+commcopy sbuf

call MPIcomp

Page 27: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 16/18

� � � � �� � � � � �� � � � � � 0.06

0.07

0.08

0.09

0.1

0.11

0.12

0.13

0.14

0.15

48 40 32 24 16 8 1

t(com

p) ⋅

n cpu

ncpu

comp (MPI)comp (hyb)

Page 28: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

vAx = btheoretischschneller in hybrid

v Laufzeit-Beispielev MPI-Timings im

Detail (1)v Vergleich:

Multiplikationv Vergleich:

Kopieren inSendepuffer

v Vergleich:MPI-Aufruf

v MPI-Timings imDetail (2)

v Vergleich:Multiplikation

v Vergleich:MPI-Aufruf

Positiv-Beispiel

- p. 17/18

� � � � �� �� � � � �� �

nr = 1.728.000

0

0.0005

0.001

0.0015

0.002

0.0025

48 40 32 24 16 8 1

t(cal

l_m

pi)

ncpu

call MPI (MPI)call MPI (hyb)

Page 29: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

Positiv-Beispielv Array-

Transposition

- p. 18/18

� � �� � � �� � � � � � � � �

1234

5678

9

BC

A1 2 34 5 67 8 9A CB

Algorithmus: Vacancy-Tracking

1. lokales Vacancy-Tracking2. globaler Datenaustausch3. lokales Vacancy-Tracking

Größere Partitionen in Hybrid⇒weniger, aber längere Zyklen⇒bessere Cache-Effizienz

Page 30: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

Positiv-Beispielv Array-

Transposition

- p. 18/18

� � �� � � �� � � � � � � � �

1234

5678

9

BC

A1 2 34 5 67 8 9A CB

Algorithmus: Vacancy-Tracking

1. lokales Vacancy-Tracking2. globaler Datenaustausch3. lokales Vacancy-Tracking

Größere Partitionen in Hybrid⇒weniger, aber längere Zyklen⇒bessere Cache-Effizienz

Page 31: GoBack - in.tum.de · Grundlagen Ax = b Positiv-Beispiel - p. 2/18 l Grundlagen F Distributed memory und MPI F Shared memory und OpenMP F SMP-Cluster und Hybride Programmierung

Grundlagen

Ax = b

Positiv-Beispielv Array-

Transposition

- p. 18/18

� � �� � � �� � � � � � � � �

1234

5678

9

BC

A1 2 34 5 67 8 9A CB

Algorithmus: Vacancy-Tracking

1. lokales Vacancy-Tracking2. globaler Datenaustausch3. lokales Vacancy-Tracking

Größere Partitionen in Hybrid⇒weniger, aber längere Zyklen⇒bessere Cache-Effizienz