Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Einführung in Optimierungsprobleme auf modernen Rechnerarchitekturen Anton Peißinger Fakultät für Informatik Technische Universität München.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Einführung in Optimierungsprobleme auf modernen Rechnerarchitekturen Anton Peißinger Fakultät für Informatik Technische Universität München."—  Präsentation transkript:

1 1 Einführung in Optimierungsprobleme auf modernen Rechnerarchitekturen Anton Peißinger Fakultät für Informatik Technische Universität München

2 2 Überblick n Warum Optimierung n Überblick über verschiedene Architekturen u Sequentielle Rechner F RISC F Vektorrechner u Parallele Rechner F Multiprozessor F Multicomputer n Sequentielle Programmoptimierung u Superskalarität u Effiziente Ausnutzung des Cache n Optimierung paralleler Programme n Zusammenfassung, Ausblick

3 3 Warum Optimierung Ein einführendes Beispiel: Matrixmultiplikation 2 Matrizen mit jeweils Elementen Ohne Optimierung: Dauer 481,95 sec  8 min Mit Optimierung (Blocking und Loop unrolling) Dauer 326,94 sec  5,5 min  Durch Ausnutzung der architekturspezifischen Besonderheiten Beschleunigung der Software

4 4 RISC Architektur n Cache n Mehrere funktionale Einheiten n Pipelining  Ausführen mehrerer Befehle in einem Zyklus

5 5 Vektorarchitektur n Besteht aus Pipeline-Skalareinheit ergänzt um Vektoreinheit n Speicherung der Daten in Form von Vektoren n Vektoroperationen zwischen den Vektorregistern durchgeführt n Performancegewinn nur durch Vektoroperationen

6 6 Multiprozessortechnologie n Geringe Anzahl von Prozessoren n Jeder Prozessor besitzt eigenen Cache n Prozessoren teilen sich einen Speicher (shared memory) n Bei Bedarf Synchronisation

7 7 Multicomputerarchitektur n PE´s sind gewöhnliche Mikroprozessoren n Jeder Prozessor führt sequentiellen Code aus n Austausch von Informationen durch Nachrichten über Netzwerk

8 8 Superskalarität n Ausnutzung mehrerer Fließkommaeinheiten des Prozessors n Transformation, Veränderung von Schleifen n Nutzung der Pipeline (Softwarepipelining)

9 9 Beispiel zur Superskalarität Addition zweier Vektoren do i=1, n y(i)=y(i)+a*x(i) enddo  zwei Fließkommaoperationen in 7 Zyklen do i=1, n-1, 2 y(i+0)=y(i+0)+a*x(i+0) y(i+1)=y(i+1)+a*x(i+1) enddo do i=i, n y(i+0)=y(i+0)+a*x(i+0) enddo  vier Fließkommaoperationen in 8 Zyklen

10 10 Maschinencode zum Beispiel Ohne Optimierung Cycle 0:ld xx++ Cycle 1:ld y Cycle 2: Cycle 3:madd Cycle 4: Cycle 5: Cycle 6:st ybry++ Mit Optimierung Cycle 0:ld x Cycle 1:ld x1 Cycle 2:ld y0x+=4 Cycle 3:ld y1madd0 Cycle 4:madd1 Cycle 5: Cycle 6:st y0 Cycle 7:st y1y+=4 br

11 11 Speicherproblematik n Hauptspeicher zu langsam Beispiel: RISC CPU - bis zu vier Fließkommaoperationen pro Zyklus - Hauptspeicher: 0.2 Fließkommaoperanden pro Zyklus Latenzzeit größer als 60 Zyklen  effiziente Ausnutzung der Speicherhierarchie

12 12 Speicherhierarchie Beispiel: DEC PWS 600 A21164 CPU Register 1. Level Cache 3. Level Cache 2. Level Cache Hauptspeicher Swap Space KapazitätBandbreiteLatenzzeit 256 Byte28800 MB/s1.7 ns 8 KByte19200 MB/s1.7 ns 96 KByte9600 MB/s5.0 ns 2 MByte970 MB/s23.3 ns 1536 MByte1070 MB/s105.0 ns

13 13 Effiziente Ausnutzung des Cache n Prefetching n Reuse n Blocking Beispiel Matrixmultiplikation: for i=1 to n do for j=1 to n do for k=1 to n do C[i,j]=C[i,j]+A[i,k]*B[k,j] endfor =  k k j j ii CAB

14 14 Beispiel Matrixmultiplikation Mit Cache-Optimierung: for i=1 to n do for k=1 to n do for j=1 to n do C[i,j]=C[i,j]+A[i,k]*B[k,j] endfor =  k kj jii CAB

15 15 Optimierung paralleler Programme n Shared Memory: u Engstelle ist Hauptspeicher, bzw. Bus  Cache-Optimierung, wie bei RISC n Distributed Memory: u Erweiterung der Speicherhierarchie u Benötigte Daten befinden sich im direkt zugänglichen Speicher  Reduzierung der Netzwerkommunikation u Neuberechnung oft schneller als Übermittlung (Beispiel IBM SP2)

16 16 Beispiel zur parallelen Optimierung Matrixmultiplikation: - Parallelisierung der innersten Schleife for i=1 to n do for k=1 to n do doall j=1 to n do C[i,j]=C[i,j]+A[i,k]*B[k,j] enddoall endfor =  k k ii CAB

17 17 Beispiel zur parallelen Optimierung Matrixmultiplikation: - Parallelisierung der äußersten Schleife doall i=1 to n do for k=1 to n do for j=1 to n do C[i,j]=C[i,j]+A[i,k]*B[k,j] endfor enddoall =  CAB

18 18 „Grober“ Parallelismus „Feiner“ Parallelismus n Grober Parallelismus u Prozessor längere Zeit beschäftigt u aber: Datenlokalität nicht gesichert n Feiner Parallelismus u kurze Rechenzeiten der Prozessoren u aber: Erhöhung der Kommunikation

19 19 Zusammenfassung, Ausblick n Optimierung doch sinnvoll n Besonderheiten der Rechnerarchitektur müssen bekannt sein n Softwareentwickler müssen die meisten Optimierungen noch selbst durchführen  Integration verschiedener Optimierungsmöglichkeiten in den Compiler wäre wünschenswert

20 20 Literatur [1]Wm. A. Wulf and Sally A. McKee, Hitting the Memory Wall: Implications of the Obvious, Computer Science Report No. CS-94-48, University of Virginia, 1994 [2]S. Goedecker, Achieving high performance in numerical computations on RISC workstations and parallel systems, Max-Planck Institue for Solid State Research, Stuttgart, 1997 [3]John L. Hennessy, Computer Architecture. A quantitative Approach, Morgan Kaufmann Publishers, Inc., San Mateo, 1990


Herunterladen ppt "1 Einführung in Optimierungsprobleme auf modernen Rechnerarchitekturen Anton Peißinger Fakultät für Informatik Technische Universität München."

Ähnliche Präsentationen


Google-Anzeigen