GoBack
- p. 1/18
�� ��� � ��� �� � �� � � ��� � �� � � � � � �
� � � � � � ���� �� �� � �� � � � � ��� �� � � � � � ��� � � �
Tobias GradlTechnische Universität München
Lehrstuhl für Informatik mit Schwerpunkt Wissenschaftliches Rechnen
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
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
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
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}
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}
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}
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}
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}
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}
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}
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}
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}
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
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
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
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
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
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
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)
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
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)
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)
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
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
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)
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)
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
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
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