Grundlagen der Informatik III Wintersemester 2010/2011 12. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la $a0,msg li $v0,4 syscall jr $ra 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 1
Inhalt 1. Literatur 2. Gleitkommarechnung in IA32 3. Leistungsbewertung II 4. Zusammenfassung und Ausblick 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 2
Literatur [Fey10] Fey, Dietmar: Grid-Computing - Eine Basistechnologie für Computional Science. Springer, 2010. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 3
Gleitkommarechnung in IA32 Bisher wurden alle Rechnungen in Integerarithmetik durchgeführt (Datentyp long) Kurze Einführung in Gleitkommarechnung in IA32 Im Prinzip ist die Gleitkommarechnung vollständig in Integerarithmetik abzubilden. Wird bei vielen einfachen Prozessoren (z. B. Softcore-Prozessoren NIOS II) gemacht Wegen der Bedeutung haben heute Prozessoren von Intel, AMD, IBM alle dedizierte Gleitkommaeinheiten (FPUs Floating Point Units) Im Folgenden eine kurze Einführung in die x87 FPU eines IA32 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 4
Übersicht über die Register beim IA32 General Purpose Register (%eax,...) 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 5
Übersicht über die FPU Register beim IA32 FPU Register 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 6
Übersicht über die FPU Register beim IA32 Acht Gleitkomma-Datenregister Control Register Status Register Tag Register Opcode Register (11 Bits) FPU Instruction Pointer Register FPU Daten (Operanden) Pointer Register Im Folgenden genauere Beschreibung... 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 7
Übersicht über die FPU Register beim IA32 Gleitkomma-Datenregister 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 8
Übersicht über die FPU Register beim IA32 Organisation des FPU Stacks, Registernummer des obersten Elements wird in dem Statusregister gespeichert 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 9
Erstes Assemblerprogramm mit Gleitkommazahlen. data i n t o u t :. s t r i n g " Ergebnis %f \ n " a :. f l o a t 2.4 b :. f l o a t 3.1. t e x t. g l o b l main main : f l d a fmul b subl $8, %esp f s t p l (%esp ) pushl $ i n t o u t c a l l p r i n t f # E x i t movl $1, %eax i n t $0x80 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 10
Zweites Assemblerprogramm mit Gleitkommazahlen Berechnet wird der folgende Ausdruck: (5.6 x 2.4) + (3.8 x 10.3) 1. data 2 i n t o u t :. s t r i n g " Ergebnis %f \ n " 3 value1 :. f l o a t 5.6 4 value2 :. f l o a t 2.4 5 value3 :. f l o a t 3.8 6 value4 :. f l o a t 10.3 7... 8 main : 9 f l d value1 10 fmul value2 11 f l d value3 12 fmul value4 13 fadd %s t ( 1 ) 14... 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 11
Aufbau des FPU Stacks beim zweiten Assemblerprogramm Stack 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 12
FPU Status Register beim IA32 Übersicht der Status Bits, Speicherung des obersten Stackelements 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 13
FPU Tag Register beim IA32 Informationen über die FPU Registerinhalte 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 14
FPU Transportbefehle beim IA32 Transportbefehle 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 15
Grundlegende FPU Befehle beim IA32 Grundlegende FPU Befehle sind in jedem Prozessor enthalten Beim IA32 gibt es z. B. FADD/FADDP Add floating point FSUB/FSUBP Subtract floating point FMUL/FMULP Multiply floating point FDIV/FDIVP Divide floating point FABS Absolute value FSQRT Square root Unterschied FADD und FADDP FADD m32fp: Add m32fp to ST(0) and store result in ST(0) FADD m64fp: Add m64fp to ST(0) and store result in ST(0) FADD ST(0), ST(i): Add ST(0) to ST(i) and store result in ST(0) FADDP: Add ST(0) to ST(1), store result in ST(1), and pop the register stack 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 16
Weitere FPU Befehle beim IA32 Trigonometrische Funktionen FSIN FCOS FPTAN Logarithmus FYL2X F2XM1 Übersicht: Intel 64 and IA-32 Architectures Software Deverloper s Manual, Kapitel 8 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 17
Leistungsbewertung II Nach dem Einschub zu den Gleitkommazahlen Zusammenfassung: Leistungsmaße von Prozessoren sind 1. Taktfrequenz 2. CPI Rate (Clock Cycles per Instruction) 3. MIPS Rate (Million Instructions per Second) 4. MFLOPS (Million Floating-point Operations per Second) Zur Erinnerung: Die Kriterien stellen ein Leistungsmaß für den Prozessor dar, lassen aber nur bedingt Aussagen über die Leistungsfähigkeit des Rechnersystems zu. Die Leistung des Systems hängt sowohl von der umgebenden Hardware, als auch von dem komplexen Zusammenspiel von Hardware und Software, insbesondere dem Betriebssystem, ab. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 18
Leistungsbewertung II Benchmarks Benchmarks sind repräsentative Programme, die auf den zu vergleichenden Rechnern ausgeführt werden Es gilt der Rechner als der Leistungsfähigste, bei dem die Benchmark-Programme am schnellsten ausgeführt werden. Aber: In der Praxis wurden häufig Compiler oder auch Instruktionssätze so optimiert, dass gängige Benchmarks besonders schnell abliefen Vier Typen von Benchmarks Reale Programme: Verwendung häufiger Anwendungen wie C-Compiler, Textprozessoren (L A T E X), SPICE usw. Kernels: Kurze kritische Auszüge aus realen Programmen, die isoliert zur Ausführung gebracht werden Toy Benchmarks: Kleine, einfach zu schreibende Programme, die leicht zur Ausführung gebracht werden können (z. B. Quicksort) Synthetische Benchmarks: Speziell entwickelte Programme, die die Leistungsfähigkeit einzelner Instruktionen oder einzelner Komponenten der zu vergleichenden CPUs aufdecken sollen (z. B. Dhrystone) 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 19
Leistungsbewertung II Benchmarks Standard-Benchmark Suites: SPEC Standard Performance Evaluation Corporation www.spec.org gegründet 1989 durch mehrere Rechnerhersteller (Apollo/HP, DEC, MIPS, Sun Microsystems) Beschaffen eines Satzes von zunächst realen Programmen, die auf allen Rechnern lauffähig sind und in ihrer Gesamtheit zur Messung der Prozessorleistung herangezogen werden. Die SPEC-Benchmark-Suite durchlief mehrere Generationen, in denen die einzelnen Programme jeweils den aktuellen Eigenschaften der Rechner/Prozessoren und der Systemsoftware angepasst wurden. Anpassungen z. B. x87 MMX, SSE 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 20
Leistungsbewertung II Benchmarks SPEC Benchmarks CPU89 10 Programme liefern eine einzelne Zahl (SPECmarks) CPU92 SPECInt92 (6 integer Programme) and SPECfp92 (14 floating point Programme) CPU95 neue Programme: SPECint95 (8 Integer Programme) und SPECfp95 (10 Floating Point Programme) CPU2000 CINT2000 11 integer (gzip, gcc, crafty, perl,...) CFP2000 14 floating-point (swim, mesa, art,...) Alle Ergebnisse gemessen relativ zu Basisrechner Sun 300 MHz 256Mb-RAM Ultra5_10; diese hat Score 100 CPU2006 (immernoch aktuell) CINT2006 Benchmark für Integer-Performanz CFP2006 Benchmark für Gleitpunkt-Performanz 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 21
Leistungsbewertung II Benchmarks SPEC Benchmarks sind nicht nur für Prozessoren erhältlich Grafikkarten MPI 1 /OpenMP Mailserver Java (für virtuelle Maschinen)... Die Benchmarks sind kostenpflichtig Allerdings einige freie Tests verfügbar (z. B. gzip und bzip). z. B. von Intel (Link) LINPACK: ursprünglich nur numerische Programmbibliothek zum Lösen von linearen Gleichungssystemen LINPACK wird zur Leistungsmessung von Supercomputern eingesetzt aber auch verfügbar für: Linux, Windows, Mac OS Steht im SVN 1 Message Passing Interface 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 22
Leistungsbewertung II Benchmarks Ausführung auf Notebook (vier Kerne, 2 GHz) Ergebnis CPU frequency: 1.995 GHz Number of CPUs: 4 Number of threads: 4 Performance Summary (GFlops) Size Average Maximal 15000 21.7752 21.7752 14000 25.4207 25.6804 13000 25.3818 25.4019 12000 25.0435 25.4617 11000 25.4458 25.6519 10000 25.4523 25.4710 8000 24.2956 24.3837 6000 23.0570 24.0496 1000 16.5292 17.3094 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 23
Leistungsbewertung II Benchmarks Ausführung auf Workstation (zwei Kerne, 3.2 GHz) Ergebnis CPU frequency: 3.167 GHz Number of CPUs: 2 Number of threads: 2 Performance Summary (GFlops) Size Average Maximal 15000 21.0097 21.0097 14000 20.8929 20.9319 13000 20.9694 21.0791 12000 20.9824 20.9901 11000 20.8284 20.8591 10000 20.5977 20.6629 8000 20.3380 20.3435 6000 19.7895 19.8172 1000 16.7573 16.8860 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 24
Leistungsbewertung II Benchmarks Außerdem verfügbar unter Linux: cat /proc/cpuinfo Angaben von Taktfrequenz Cache-Größe Floating Point Unit (vorhanden) BogoMips BogoMips 2 unwissenschaftliches Maß für die CPU-Geschwindigkeit Wert wird beim Booten ermittelt, um interne Warteschleifen zu kalibrieren Mit BogoMips können keine Leistungsvergleiche zwischen Prozessoren durchgeführt werden. 2 Bogus - scheinbar, Mips - Millionen Instruktionen pro Sekunde 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 25
Parallele Rechnersysteme Die physikalische Struktur eines Rechnersystems mit verteiltem Speicher ist in der folgenden Abbildung zu sehen. Jeder Knoten besteht aus einem Prozessor und einem Speicher und ggf. der I/O Peripherie. Die Knoten werden über ein Verbindungsnetzwerk gekoppelt. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 26
Parallele Rechnersysteme Die Daten und Programme werden in lokalen Speichern abgelegt. Der Zugriff auf die Speicher kann nur der dem Speicher zugeordnete Prozessor ausführen. Der Zugriff auf Daten im Speicher anderer Prozessoren ist über Nachrichtentausch (Message Passing) möglich. Rechner mit verteiltem Speicher sind einfach zu realisieren. Dazu können gebräuchliche Standardsysteme (PCs) mit einem LAN 3 gekoppelt werden. In der Literatur werden solche Systeme als Cluster bezeichnet, falls alle Rechner als Gesamtheit zur Lösung eines Problems benutzt werden. Auch bei struktureller Gleichheit zwischen Parallelrechnern und Clustern als MIMD Rechner ergeben sich durchaus Unterschiede. So erfolgt auf dem Parallelrechner eine schnelle Kommunikation, während die Kommunikation über das Verbindungsnetz deutlich langsamer ist. Als Programmiermodell für solche Systeme wird z. B. das Message Passing Modell verwendet. Die Leistungsfähigkeit eines solchen Systems wird durch die Verteilung (Partitionierung) der Daten erheblich beeinflußt. 3 Local Area Network 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 27
Parallele Rechnersysteme Die Abbildung zeigt ein Rechnersystem mit physikalisch gemeinsamem Speicher. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 28
Parallele Rechnersysteme Die Merkmale eines Rechnersystems mit gemeinsamen physikalischen Speicher sind, daß auf einen gemeinsamen Adreßraum alle Prozessoren lesend und schreibend zugreifen können. Der Speicher kann, wie in der Abbildung dargestellt, aus mehreren Modulen bestehen. Die Kommunikation der Prozessoren und der Speicher erfolgt wieder über ein Verbindungsnetz. Allerdings sind die Speicherzugriffe oft ein Flaschenhals, denn ein Vergleich der Steigerungen von Prozessorleistung, Speicherkapazität und Speicherzugriffszeit zeigt, daß die Zugriffszeit sich nicht im dem Maße verringert, wie die anderen Leistungen steigen. Oft bekommen die Prozessoren solcher Systeme noch Cache-Speicher zugeordnet, mit der in vielen Fällen die Gesamtleistung nochmals deutlich gesteigert werden kann. Als Programmiermodell wird bei Systemen mit gemeinsamen Speicher sehr oft gemeinsame Variablen und Threads verwendet. Dies ist in der Regel einfacher als Message Passing zu implementieren. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 29
Leistungsmaße paralleler Systeme Leistungsmaße Zeit für die lokale Berechnungen Zeit für den Datenaustausch durch Ausführung von Kommunikationsoperationen Wartezeiten auf Ergebnisse anderer Prozesse Zeit zur Synchronisation Die Laufzeit eines sequentiellen Programms sei T s (n). Dabei wird oft von der Laufzeit des besten Algorithmus gesprochen. Da die Freiheitsgrade bei der Programmierung aber auch bei sequentiellen Algorithmen sehr hoch sind, wird oft auch die Laufzeit eines üblichen sequentiellen Algorithmus angegeben. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 30
Speedup und Effizienz - I Bei der Bewertung paralleler Algorithmen sollen die beiden Größen Beschleunigung (Speedup) und Effizienz verwendet werden. Die Definition der Beschleunigung ist S(p) = T s(n) T p (n, p) (1) und gibt den relativen Geschwindigkeitszuwachs an, der durch die Verwendung von p Prozessoren erreicht wird. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 31
Speedup und Effizienz - II Als zweiter wichtiger Punkt wird bewertet, mit wievielen Prozessoren die Beschleunigung erreicht wurde. Dieser Zusammenhang wird als Effizienz bezeichnet ist und als E(p) = S(p) p (2) definiert. Wie schon angesprochen, ist die Suche nach dem besten Algorithmus eines Problems in der Praxis sehr schwer. Theoretische Beweise haben gezeigt, daß es Probleme gibt, zu denen gar kein bester Algorithmus existiert. In der Praxis wird deshalb häufig das adaptive Verhalten eines parallelen Algorithmus betrachtet. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 32
Speedup und Effizienz - III Unter dem adaptiven Verhalten wird die Änderung der Laufzeit eines parallelen Algorithmus bei Variation der Prozessoranzahl verstanden. Aus diesem Grund wird die Definition der Beschleunigung wie folgt vorgenommen. Für ein Problem der Größe n sei T p (n, p) die Laufzeit des parallelen Algorithmus. Als sequentieller Algorithmus wird der parallele Algorithmus auf einem Prozessor ausgeführt. Die Ausführungszeit beträgt T 1 (n, 1). Der sogenannte Rough Speedup 4 wird wie folgt definiert. rs(p) = T 1(n, 1) T p (n, p) (3) 4 In Übersetzungen ist auch von relativer Beschleunigung die Rede. Allerdings stellt auch das Ergebnis der Gleichung 1 eine relative Beschleunigung dar. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 33
Speedup und Effizienz - IV Der relative Speedup ist damit unabhängig vom dem in der Praxis nur schwer zu findenden besten sequentiellen Algorithmus. Allerdings läßt Gleichung 3 auch keine Aussagen mehr über die Beschleunigung durch Anwendung des parallelen Algorithmus im Vergleich zum sequentiellen Algorithmus zu. Der relative Speedup bewertet also nur das Parallelitätsverhalten des Algorithmus. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 34
Speedup-Klassen Es kann nicht davon ausgegangen werden, daß mit p Prozessoren auch eine Beschleunigung S(p) = p erreicht wird. In der Praxis haben sich drei Klassen herausgebildet, in die der Speedup der parallelen Algorithmen eingeteilt werden kann. 1. Gut: Die Beschleunigung S(p) wächst proportional mit der Prozessorenanzahl p. In der Regel wird sich S(p) < p ergeben, weil in jedem parallelen System Mehrarbeit in Form von Latenzzeit, Synchronisation und Datenverteilung auftritt. Dieser Aufwand ist in realen Systemen nicht zu vernachlässigen. 2. Realistisch: In diesem Fall wächst die Beschleunigung zunächst linear, nimmt mit wachsender Anzahl von Prozessoren p immer weiter ab und kann ggf. auch rückläufig sein. Eine Begründung dafür ist, daß der Kommunikationsaufwand zu weit ansteigt und die einzelnen Prozessoren nicht mehr ausgelastet werden. 3. Anomal: Die anomale Beschleunigung wird auch als superlinearer Speedup bezeichnet. Dabei gilt daß S(p) p ist. Eine solche Beschleunigung ist zwar recht erfreulich, sollte aber genauestens untersucht werden. Gründe für ein solches Verhalten können Cacheeffekte oder randomisierte Algorithmen sein. 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 35
Amdahls Gesetz In jedem Algorithmus gibt es einen nicht parallelisierbaren Anteil f, der die Beschleunigung (Speedup) beschränkt. Dieses Gesetz nennt man Amdahls Gesetz. Der damit maximal erreichbare Speedup ist: as 1 f + (1 f )/p (4) Der parallelisierbare Anteil ist dabei 1 f. Für f = 0, 1 und p = 9 (für z. B. neun Prozessoren) ergibt sich also ein Speedup von as = 5. Auch Amdahls Gesetz unterliegt gewissen Beschränkungen (Amdahl Effekt). 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 36
Supercomputer/Cluster Wie schon erwähnt: LINPACK ist zur Leistungsmessung von Supercomputern/Cluster etabliert. LINPACK bzw. die einzelnen Programme sind im Wesentlichen in FORTRAN 5 geschrieben Was bringt so ein Clustersystem? Überwiegend sichtbar sind Anwendung aus Physik, Chemie, Elektrotechnik, Maschinenbau,... Steigerung der Rechenleistung aber auch Ausfallsicherheit, Lastverteilung (Anwendungen bei Banken usw.) Jährliche Events, z. B. SC 10 (Link) Einführung einer Liste der 500 schnellsten Computer, TOP 500 www.top500.org 5 FORmula TRANslation 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 37
Leistungmaße für Supercomputer/Cluster Webseite der TOP 500 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 38
Tianhe-1A Tianhe-1A National Supercomputing Center in Tianjin Operating System Linux Memory 229376 GB Processor: Intel EM64T Xeon X56xx (Westmere-EP) 2930 MHz (11.72 GFlops) GPU: NVIDIA GPU, FT-1000 8C Application area: Research Praxis: Linpack-Wert Tianhe-1A, 2,56 PFlops Jaguar, Oak Ridge National Laboratory, 1,76 PFlops JuGene, Jülich, 825 TFlops 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 39
Cluster an der TU Darmstadt Die TU Darmstadt betreibt derzeit mehrere Supercomputer, u. a. den Hessischen Hochleistungsrechner HHLR. HHLR: 18 SMP-Knoten (Typ IBM 9125-F2A p575) mit insgesamt 576 Power6-Prozessoren. Cluster des Instituts für Theorie Elektromagnetischer Felder Hochleistungsrechner, Exzellenzinitiative: geplant, ab 2011 150 TFlop/s, endgültigen Ausbaustufe 2012 Spitzenleistung von 400 TFlop/s. GSI Helmholtzzentrum für Schwerionenforschung, Unterstützung für FAIR-Experimente (LHC) Im Sommersemester 2011 Vorlesung am FB 20 zu parallelen Algorithmen und Clustercomputing Einen Überblick zu Clustern und Grid-Computing gibt z. B. [Fey10] 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 40
Verbesserungen der Leistung Wie können Verbesserungen erreicht werden? Erhöhung der Taktfrequenz Erhöhung der Verarbeitungseinheiten (SIMD) Verbesserungen der Prozessororganisation zur Reduzierung der CPI Compilerverbesserungen: z. B. geringere Instruktionsanzahl Leistungsverbesserung hängt ab von dem Anteil an der Ausführungszeit, die eine bestimmte Aufgabe mit der verbesserten Hardware verbringt Aber Achtung: Amdahl s Gesetz Und viele weitere Faktoren Speicherhierarchie Verbindungsstrukturen... 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 41
Zusammenfassung und Ausblick Gleitkommarechnung in IA32 Leistungsbewertung II Nächste Vorlesung behandelt Speicherhierarchie I 24. November 2010 TechnischeUniversitätDarmstadt Dr.-Ing. Wolfgang Heenes 42