Supercomputer zu Hause

Wer einen neuen PC mit schneller CPU und potentem Grafikchip besitzt, fragt sich wohl manchmal, was die Abermilliarden Transistoren eigentlich tun: Einige Anwendungen arbeiten trotzdem lahm. Neue Programme reizen Vielkern-Prozessoren aus und zapfen die Rechenkraft von 3D-GPUs an.

In Pocket speichern vorlesen Druckansicht 50 Kommentare lesen
Lesezeit: 10 Min.

Die stürmische Fortentwicklung der Halbleitertechnik hat PCs Quad-Core-Prozessoren sowie Grafikchips mit 240 Recheneinheiten und über einer Milliarde Transistoren beschert. Wer auf einem solchen Boliden aber beispielsweise ein HD-Video transcodieren möchte, wartet noch immer stundenlang auf das Ergebnis. Diese enttäuschende Erfahrung zeigt deutlich, wie die Softwareentwicklung hinter den Fortschritten der Prozessortechnik herhinkt. Nun kommt aber allmählich Software auf den Markt, die die Leistungsreserven moderner Multi-Core-CPUs besser nutzt; gleichzeitig erscheinen Applikationen, die die enorme Rechenkraft von 3D-Grafikkarten für andere Zwecke anzapfen als bloß zur Darstellung virtueller Welten. Die Technik nennt sich GPGPU: Universelles (General Purpose) Rechnen auf dem Grafikprozessor (Graphics Processing Unit).

Die GPGPU-Technik hat in den letzten Monaten besonders eindrucksvolle Fortschritte gemacht. Mit passender Software knacken Grafikprozessoren beispielsweise Passwörter in atemberaubender Geschwindigkeit [1] oder wandeln riesige (HD-)Video-Dateien in handliche Päckchen um. Videoschnitt- und Mathematikprogramme holen sich zusätzliche Rechenleistung von der GPU. Sowohl AMD als auch Nvidia fertigen Spezialversionen von Grafikkarten, die Clustern zusätzliche Rechenkraft verleihen, etwa zur Bildanalyse in Kernspintomografen oder Analyse von Radarsignalen.

In einen Desktop-PC passt üblicherweise nur ein einziger Multi-Core-Prozessor, aber bis zu vier Grafikkarten - wenn Mainboard, Netzteil und Kühlung mitspielen.

Das enorme Potenzial der GPGPU-Technik zeigen wenige Zahlen sehr anschaulich: Der zurzeit schnellste lieferbare Quad-Core-Prozessor für Desktop-Rechner liefert eine maximale Rechenleistung von 100 Gigaflops, doch die schnellsten Grafikchips von AMD und Nvidia schaffen das Zehnfache, nämlich eine Billion Gleitkommaoperationen pro Sekunde (TFlops). Und während in einem typischen PC ein einziger Hauptprozessor (CPU) steckt, lassen sich darin bis zu vier GPUs unterbringen. Ein solches 4-TFlops-System hätte noch 1998 den Spitzenplatz der Top500-Liste der weltweit schnellsten Supercomputer erobert.

Bisher beschäftigen sich die meisten verkauften 3D-Beschleuniger damit, die virtuellen Welten von PC-Spielen möglichst realistisch auf die zweidimensionale Oberfläche von Monitoren zu zaubern. Zunehmend nutzen aber auch Betriebssysteme die allgegenwärtigen 3D-Funktionen, um den Desktop hübscher darzustellen oder für neue Bedienkonzepte. 3D-Desktops gibt es für Linux, aber auch Apple (Quartz Extreme in Mac OS X) und Microsoft (Aero Glass in Vista) setzen auf Grafikbeschleunigung per OpenGL (Linux/Apple) oder DirectX (Microsoft). Bei Windows 7 will Microsoft per Direct2D den Grafikprozessoren etwa auch die Kantenglättung von Bildschirmschriften aufhalsen. Solche Einsatzbereiche für Grafikchips sind indes nicht grundlegend neu. Profi-Grafikkarten mit speziellen OpenGL-Treibern ermöglichen es Ingenieuren und Entwicklern schon seit Jahren, komplexe CAD-Modelle verzögerungsfrei zu drehen, feinste Details zu vergrößern (Zoom) oder den Bildausschnitt zu verschieben (Pan).

GPUs für Desktop-Rechner, übrigens auch die in vielen Mainboard- und Notebook-Chipsätzen integrierten Grafikprozessoren (Onboard-Grafik), entlasten CPUs auch bei der Wiedergabe von Videomaterial: Bestimmte Rechenaufgaben wie die inverse diskrete Cosinustransformation (IDCT), Farbkorrekturen oder De-Interlacing erledigen sie in Hardware.

2D-, 3D- und Videobeschleunigung sind also alte GPU-Hüte. Letztlich verarbeiten die Grafikprozessoren dabei immer „flüchtige“ Daten, die nicht auf Festplatten oder anderswo abgespeichert werden. Das GPGPU-Konzept nutzt Grafikchips auf komplett andere Art: Sie arbeiten nun wie gewöhnliche Prozessoren und als Applikationsbeschleuniger.

Leider lassen sich aber nicht einfach fertige Programme, die für x86- oder x64-Prozessoren geschrieben und kompiliert wurden, auf GPUs ausführen – die Befehlssätze von CPUs und GPUs unterscheiden sich ebenso fundamental wie ihre inneren Architekturen (siehe Kasten). Grafikchips kann man getrost als massive Multi-Cores bezeichnen, in den High-End-Versionen arbeiten bis zu 800 (Shader-)Recheneinheiten parallel, im GPU-Verbund können es über 3000 werden. GPGPU-Programme müssen also auf ganz andere Art als CPU-Code geschrieben werden und benötigen besondere Compiler. Zurzeit sind sogar Grafikchips unterschiedlicher Hersteller zueinander inkompatibel.

Weil CPU und GPU unterschiedlichen Code verarbeiten, lassen sich die Kräfte aus beiden Welten bestenfalls mit viel Handarbeit bündeln. Der Entwickler muss entscheiden, welcher Prozessor eine Aufgabe erledigen soll. Diese Trennung hat auch Vorteile: Ein HD-Video-Transcoder, der nur auf der GPU läuft, lässt die CPU frei für andere Zwecke – so kann man bequem weiterarbeiten.

Nur bestimmte, seit Ende 2006 produzierte Grafikkarten sind GPGPU-tauglich – und nicht zufällig auch allesamt DirectX-10-kompatibel: Ihre eigentlich zur rasend schnellen Kalkulation von Pixel-Farbwerten entwickelten Rechenwerke, die sogenannten Shader, müssen für DirectX 10 auf bestimmte Weise programmierbar sein (Shader Model 4.0). Diese programmierbaren Shader [2] sind gleichzeitig die wichtigsten Komponenten der GPGPU-Technik. Die zweite Säule sind definierte Softwareschnittstellen, mit denen Programmierer die Shader nutzen können. Bei Nvidia läuft das GPGPU-Konzept unter der Abkürzung CUDA (Compute Unified Device Architecture), und die Shader von GeForce-Grafikkarten heißen seither auch CUDA-Cores. AMD hat den Begriff des Stream Computing gewählt, der auf die Arbeitsweise von GPUs anspielt (siehe Kasten in c't 7/09, S.92).

Auch ältere Grafikchips lassen sich zu Co-Prozessoren umfunktionieren, aber nicht via CUDA oder Stream, sondern durch direkten Zugriff oder geschickte Nutzung von DirectX- oder OpenGL-Befehlen. Solche Applikationen laufen nur auf speziellen Plattformen. Die GPGPU-Technik zielt auf viel weitere Verbreitung: Sowohl AMD als auch Nvidia wollen außer ihren eigenen Schnittstellen die bereits verabschiedete OpenCL-1.0-Spezifikation einer offenen Compute Language unterstützen, und Microsoft will mit DirectX 11 sogenannte Compute Shaders einführen.

Um GPGPU-Applikationen starten zu können, muss im Betriebssystem ein jeweils passender Grafiktreiber installiert sein. CUDA-Treiber liefert Nvidia für Linux, Mac OS X und Windows ab XP sowie für fast alle DirectX-10-Grafikchips seit der GeForce-8000-Baureihe, auch die Profi-Grafikkarten, Notebook-Grafikchips und Mainboard-Chipsätze. Eine stets aktuelle Liste zeigt der Nvidia-Webserver (siehe Webcode 0907088). Besitzer mancher Notebooks haben Pech, wenn sich die Standardtreiber von Nvidia nicht installieren lassen und der Notebook-Hersteller keinen CUDA-tauglichen Treiber anbietet.

Die Liste der Stream-tauglichen AMD-GPUs ist deutlich kürzer und Mac OS X bleibt noch außen vor. Die wenigen bisher verfügbaren Client-Applikationen kooperieren fast ausschließlich mit der Radeon-HD-4000-Chipfamilie, grundsätzlich sind aber auch (fast) alle Radeons der HD-2000-Serie, HD 3850 und 3870 sowie HD 4350 und 4550 Stream-tauglich. Den Einsatz von Onboard-Grafik für GPGPU-Zwecke sieht AMD bisher nicht vor – ebenso wie Intel.

Ältere und preiswerte Grafikchips sind bei weitem nicht so leistungsfähig wie die High-End-Versionen (siehe Tabelle in c't 7/09, S.95). Für Profis, die nicht nur höchste Rechenleistung, sondern auch möglichst große Speicher benötigen, bieten AMD und Nvidia spezielle Karten an. AMDs FireStream 9270 bietet mit 2 GByte doppelt so viel Speicher wie die herkömmliche Radeon HD 4870, Nvidias Tesla C1060 ist gleich mit 4 GByte bestückt. Solche Karten sind allerdings viermal so teuer wie Consumer-Karten. Schließlich hat Nvidia mit der Tesla S1070 ein Modul mit vier C1060-Karten für den Rack-Einbau im Angebot.

Kommende Chipgenerationen werden CPU- und GPGPU-Technik enger verzahnen. Intels spätestens 2010 erwarteter Larrabee-Prozessor soll in Teilen x86-kompatibel arbeiten und dürfte damit die kombinierte Nutzung von CPU und GPGPU erleichtern. Sowohl AMD als auch Intel planen Kombi-Prozessoren, bei denen CPU und Teile des grafikfähigen Chipsatzes, also Speichercontroller und Grafikkern, verschmelzen.

Zurzeit lässt sich die Rechenleistung von CPUs und GPUs noch kaum quantitativ vergleichen. Die theoretischen GFlops-Zahlen (siehe Kasten in c't 7/09, S.95) sagen über die praktisch nutzbare Performance kaum etwas aus. Selbst hoch optimierter Code, der die CPU- oder GPU-Rechenwerke möglichst geschickt auslastet, kann deren Potenzial nie voll ausreizen. Intel beispielsweise stellt eine Beispiel-Implementierung des Linpack-Benchmarks zur Verfügung, der in unseren Experimenten 89 Prozent der 21,28 GFlops erreicht, die ein Core 2 Duo E8200 an theoretischer Maximalleistung liefert. Bei einem älteren Core 2 Duo E6750 mit kleinerem Cache, aber identischer Taktfrequenz, also gleicher theoretischer Rechenleistung, waren noch 86 Prozent nutzbar. Und von der vermeintlich doppelt so hohen Rechenleistung eines Core 2 Quad Q6700 blieben sogar nur 83 Prozent übrig. Ein Vergleich von GFlops-Angaben führt also selbst bei eng verwandten Prozessoren in die Irre.

Nvidia gibt an, dass optimaler 3D-Code einen GeForce-Chip bei Spielegrafik bis zu 95 Prozent ausreizen kann, doch viele GPGPU-Programme nutzen nur einen Bruchteil davon. Wie groß dieser Teil jeweils ist, lässt sich ohne exakte Kenntnis des Codes oder ausführliche Experimente kaum abschätzen. Je nach Compiler und Geschick des Programmierers arbeiten Applikationen zudem sehr unterschiedlich effizient.

Die GPU-Hersteller wählen für ihre relativen Geschwindigkeitsangaben oft sehr geschickte Testbedingungen. Vorsicht ist bei Vergleichen mit älteren CPU-Generationen wie dem Athlon 64 geboten: Dessen SSE-Einheiten sind nur halb so leistungsfähig wie jene der AMD-K10-Prozessoren oder von Intels Core-2/i7-Generation. Ein Quad-Core-Phenom erreicht deshalb die vierfache theoretische Rechenleistung wie ein Athlon 64 X2 mit gleicher Taktfrequenz.

Den vollständigen Artikel finden Sie in c't 07/2009.

Literatur

[1] Stefan Arbeiter, Matthias Deeg, Bunte Rechenknechte, Grafikkarten beschleunigen Passwort-Cracker, c't 6/09, S. 204

[2] Manfred Bertuch, Pixel-Triebwerke, Architektur aktueller Direct3D-10-Grafikchips, c't 13/07, S. 176

www.ctmagazin.de/0907088


"Supercomputer zu Hause"

Artikel zum Thema "Supercomputer zu Hause" finden Sie in der c't 7/2009:
Rechnen auf der Grafikkarte S. 88
Multi-Core-Anwendungen S. 96
Vielkerne ausreizen S. 102

(ciw)