530 likes | 811 Views
Benchmark sparc vs. x86. von Axel Schmidt (94416) Raphael Schlameuß (100753). Agenda. Hardware (Sparc, X86) Prozessor-Features (Sparc, X86) Benchmark Probleme ?! Erwartete Ergebnisse Ergebnisse Zusammenfassung Fragen und Anregungen ?. ASUS P3B-F Mainboard Intel 440BX-Chipsatz
E N D
Benchmarksparc vs. x86 von Axel Schmidt (94416) Raphael Schlameuß (100753)
Agenda • Hardware (Sparc, X86) • Prozessor-Features (Sparc, X86) • Benchmark Probleme ?! • Erwartete Ergebnisse • Ergebnisse • Zusammenfassung • Fragen und Anregungen ?
ASUS P3B-F Mainboard Intel 440BX-Chipsatz Pentium II („Deschutes“),350 MHz, 512 kB L2 2x 128 MB SDRAM,100 MHz Bustakt UDMA33-IDE-Controller,33 MB/s 40GB HDD, 7200 min-1,1719kB Cache ATI 3D Rage Pro AGP, 8MB NetzwerkkarteRealtek 8139 Benchmark - Hardware UltraSparc Pentium II • SIMBA/SABRE-Chipsatz • UltraSparc IIi, 360 MHz,256 kB L2 • 2x 128 MB EDO JEDEC DRAM, 75 MHz Bustakt • MDMA-IDE-Controller,16,7 MB/s • 40GB HDD, 7200 min-1,1863kB Cache • ATI 3D Rage Pro PCI, 4MB • NetzwerkkarteHAPPY MEAL
UltraSparc IIi – Features • Highly Integrated Superscalar-Processor • SPARC-V9 64-Bit-RISC Architektur • VISTM Instruction Set • 1 UltraSparc IIi CPU mit 360 MHz Takt • externer Bus-Takt 90 MHz
UltraSparc IIi – Features • Je 16 kB D- und I-Cache (L1) • 256 kB L2-Cache (extern, halber CPU-Takt) • 4 Integer-, 3 Gleitpunkt- und 1 Graphic-Units • Block-Load/Store-Unit • Registerfile mit 64 Bit Registern
Pentium II – Features Out-of-Order Superskalar Processor Core CISC mit Dynamic Execution Microarchitecture 1 Intel Pentium II CPU mit 350 MHz Takt externer Bus-Takt 100 MHz
Pentium II – Features Je 16 kB D- und I-Cache (L1) 512 kB L2-Cache (extern, halber CPU-Takt) 2 Integer- und 2 MMX-Units 1 Gleitpunkt- und 1 Jump-Unit Load/Store-Unit
Benchmark – Probleme ?! Unterschiedliche Hardware (Mainboard, Grafikkarte, Speicher, Prozessor) Betriebssystemwahl (Solaris, Debian, Gentoo, …) Softwareauswahl (BLAS, LAPACK, LINPACK, Cachebench, Whetstone, Dhrystone) Compileroptimierung ??? Benchmarkergebnisse vergleichbar ?
Betriebssystem Sparc Gentoo Linux (Base 1.6.13) Stage 1 Installation (32-Bit) CFLAGS: -march=ultrasparc -O2 -m32 -mvis Bootstrapping (Installation des Basissystems [32-Bit]) Update auf stable-Packages (32-Bit) Kernel 2.6.13 (mit Gentoo-Patches [64-Bit]) Treiber und Konfigurationen Compiler: gcc-3.4.5
Betriebssystem x86 Gentoo Linux (Base 1.6.13) Stage 1 Installation (32-Bit) CFLAGS: -march=pentium2 -O2 -m32 -mmmx Bootstrapping (Installation des Basissystems [32-Bit]) Update auf stable-Packages (32-Bit) Kernel 2.6.13 (mit Gentoo-Patches [32-Bit]) Treiber und Konfigurationen Compiler: gcc-3.4.5
Vorüberlegung Benchmark Whetstone 1972 (Kombination aus Integer-, Gleitpunkt- und Array-Operationen, Ergebnis in MIPS) Dhrystone 1984 (Integer- und Array-Operationen, Ergebnis in Dhrystone-Loops / s) 1000s / 1000d (LINPACK) Benchmarken von CPU / Cache / Speicher durch Messen von Cache-Zugriffen Lösen Linearer Gleichungssysteme (xAXPY, xGEMV, xGEMM) Compileroptimierung durch CFLAGS
Erwartete Ergebnisse • Cache-Zugriff: in etwa identisch (< 256 KByte) • Integer: x86 ≈ sparc • Single-Präzision: x86 ≈ sparc • Double-Präzision: sparc > x86, wegen 64-Bit Architektur, x86 nur wenige 64-Bit Register (MMX) • Compileroptimierung: x86 > sparc
Software für Benchmark Whetstone (floating-point-Operationen) Dhrystone (integer-Operationen) LINPACK veraltet, deshalb LAPACK(für sparc nicht verfügbar, LAPACK-ATLAS) LLCBench (Cachebench, Blasbench) BLAS (Basic Linear Algebra Subprograms)
Whetstone 1972 • Array-Funktionen (Anteil: 28,91%) • Bedingte Sprünge (Anteil: 15,53%) • Integer-Arithmetik (Anteil: 13,65%) • Trigonometrische Funktion (Anteil: 1,44%) • Funktionsaufrufe (Anteil: 40,47%)
Dhrystone 1984 • Array-Funktionen (Anteil: 12,62%) • Bedingte Sprünge (Anteil: 33,01%) • Integer-Arithmetik (Anteil: 37,86%) • Funktionsaufrufe (Anteil: 16,51%)
Whetstone / Dhrystone • Whetstone (floating-point-Operationen) • ohne Optimierung: Beschleunigung x86 sparc: 1,94 • mit Optimierung: Beschleunigung x86 sparc: 1,37 • Dhrystone (integer-Operationen) • ohne Optimierung: Beschleunigung x86 sparc: 1,63 • mit Optimierung: Beschleunigung x86 sparc: 0,79
Benchmark LAPACK-ATLAS • ATLAS stellt Schnittstellen für C und Fortran zur Nutzung von LAPACK und BLAS zur Verfügung • ATLAS - Automatically Tuned Linear Algebra Software • BLAS – Basic Linear Algebra Subprograms • LAPACK - Linear Algebra PACKage
Routinen aus LAPACK I • Treiber- und Rechen-Routinen • Treiber-Routinen zum Lösen von Problemen wie • Lineare Gleichungssysteme • Eigenwerte von realen symmetrischen Matrizen • Rechen-Routinen für einzelne Aufgaben • werden von Treiber-Routinen genutzt
Routinen aus LAPACK II • Beispiel einer Routine: • SGEMV und DGEMV • S Single precision (32-Bit Gleitpunkt) • D Double precision (64-Bit Gleitpunkt) • GE General • MV Matrix-Vektor-Operationen • berechnet die Lösungen zu einem realen System linearer Gleichungen der Form y=α*A*x+β*y, wobei α, β Skalare, A Matrix und x, y Vektoren sind.
LINPACK - SGEFA Pseudocode SGEFADO k = 1, N find pivot DO j = k+1, N call SAXPY(N-k, -A[k,j], A[k+1,k], A[k+1,j], 1)N=1000 SAXPY – Multiplikation von Skalar und Vektor, Addition von VektorenDO i = m, N y[i] = a * x[i] + y[i]Skalar a, Vektor x, y
LINPACK – Auswertung I Die Ergebnisse lassen sich folgendermaßen Interpretieren total: Ausführungszeit in Sekunden mflops: Millionen Gleitpunktoperationen pro SekundeGewichtung der Operationen:add, sub und mul 1 flopdiv und sqr 4 flopexp, sin, ... 8 flopif-Verzweigung 1 flopBerechnung der mflops durch Division von Anzahl flop durch Laufzeit
1000s / 1000d • 1000s (single-precision) • ohne Optimierung: Beschleunigung x86 sparc: 1,52 • mit Optimierung: Beschleunigung x86 sparc: 0,90 • 1000d (double-precision) • ohne Optimierung: Beschleunigung x86 sparc: 1,51 • mit Optimierung: Beschleunigung x86 sparc: 1,28
Software Suite LLCbenchLow Level Architectural Characterization Benchmark • Blasbench • xAXPY – Vektoraddition mit Skalar • xGEMV – Matrix-Vektor-Multiplikation mit Skalar • xGEMM – Matrix-Matrix-Multiplikation mit Skalar • Cachebench (Performance Cache) • Cache read / hand tuned read • Cache write / hand tuned write • Cache read/modify/write und hand tuned read/modify/write
Blasbench • SAXPY / DAXPY – Vektoraddition mit Skalar y=A*x+y • SGEMV / DGEMV – Matrix-Vektor-Multiplikation mit Skalar y=α*A*x+β*y • SGEMM / DGEMM – Matrix-Matrix-Multiplikation mit Skalar C=α*op(A)*op(B)+β*C Matrix A, B, C op(A) = mk-Matrix Skalar α, β op(B) = kn-Matrix Vektor x, y C = mn-Matrix
Software Cachebench • Funktion Cache read • Durchsatzmessung für verschiedene Vektorlängen • Pseudo Code: for all vector length timer start for iteration count for I = 0 to vector length register += memory[I] timer stop mit vector length = [256 Byte .. 1024 KByte]
Software Cachebench • Funktion Cache write • Durchsatzmessung für verschiedene Vektorlängen • Pseudo Code: for all vector length timer start for iteration count for I = 0 to vector length memory[I] = register++ timer stop mit vector length = [256 Byte .. 1024 KByte]
Software Cachebench • Funktion Cache read / modify / write • Durchsatzmessung für verschiedene Vektorlängen • Pseudo Code: for all vector length timer start for iteration count for I = 0 to vector length memory[I]++ timer stop mit vector length = [256 Byte .. 1024 KByte]
Software Cachebench • Funktionen HandCache read, HandCache read / modify / write und HandCache write • Handmodifizierter Code, um die Optimierung des Compilers zu testen • Jede Schleife referenziert 8 Memory-Elemente statt einem (Degree Eight Unrolling) • Jede Operation ist unabhängig von den vorherigen 7 Operationen (Dependency Analysis) • Register sind Speicherstellen zugewiesen und werden so oft wie möglich benutzt (Register Re-Use)
CompileroptimierungWhetstone / Dhrystone (gcc-3.4.5 – gcc-4.0.2) Whetstone [MIPS], Dhrystone [1000 Dhrystones/s]