Bernd Leitenbergers Blog

Ich möchte einen Xeon Phi

Schon in meinen ersten Computerjahren, so Anfang / Mitte der achtziger faszinierten mich Supercomputer. Diese Rechenpower auf kleinstem Raum, die hochgezüchtete Elektronik, wie bei der Cray die superschnelle ECL Logik. Inzwischen haben Supercomputer viel Sex-Appeal verloren. Einige Tausend bis einige Zehntausend PC’s miteinander koppeln kann jeder, okay es sind keine PC’s, sondern Server aber im Prinzip Standard PC Technik. Anstatt einem kompakten Rechner wie der Cray 1, die man notfalls auch als Couch nutzen konnte, füllen heute Supercomputer ganze Hallen und verbrauchen Megawatt an Strom. Für den Earth-Simulator hat man sogar extra ein Gebäude, samt Kraftwerk nebenan, für die Stromversorgung gebaut.

Trotzdem ist es absolut gesehen ein kleiner Markt, verglichen mit den Zig-Millionen von Servern bei Internet Providern, Webhostern, in Firmen oder gar bei Google und Amazon. spezialisierte Hardware ist weitgehend ausgestorben, selbst Cray produziert seit Mitte der neunziger Jahre Rechner auf Basis von Standardprozessoren. Eigenes Know-How steckt natürlich noch drin und zwar in der Verbindung der Knoten und deren Kommunikation.

Trotzdem scheint dieser Markt so interessant zu sein, dass man Spezialhardware dafür entwickelt. Nvidea und ATI entwickeln eigene Grafikkarten die als GPU’s eingesetzt werden. Rein theoretisch haben die Grafikprozessoren (GPU) eine viel höher Rechenleistung als CPU’s. Einfach weil es derer viel mehr sind. Die Grabbeltischkarten haben schon 64 bis 128 Recheneinheiten, die nun für Supercomputer vorgesehenen von Nvidea und ATI haben 2496 bzw. 2048 Kerne. Der Unterschied zu den für Spiele gedachten Karten ist dann aber schon gegeben. Bei einem Spiel ist es notwendig Szenen zu berechnen. Da reicht die einfache Genauigkeit völlig aus, eventuell sogar nur das Rechnen mit Integerzahlen. Dagegen braucht man bei wissenschaftlichen Berechnungen double precision. Viel größere Umstellungen erforderten die Programme. Zum einen von dem Möglichkeiten der Kerne her sie zu programmieren – es geht ja nicht nur um Berechnungen sondern auch Programmstrukturen. Auch der Speicher musste erheblich vergrößert werden. Für den Einsatz als Grafikkarte sind das zwar nette „nice to have“ Features, doch wird alleine schon wegen der einheitlichen DirectX Schnittstelle. Spiele werden sicher nicht jedes Feature ausnutzen können, aber sich skalieren sie besser mit mehr Kernen als mit komplexeren Programmen.

So gesehen verwundert es dass Nvidea und ATI sich auch auf diesen Markt konzentrieren. Aber sie sind nicht die Einzigen. Auch Intel arbeitet seit 10 Jahren fast nur noch an der Verbesserung der Fließkommaperformance, vor allem aber über spezielle Erweiterungen. Da gab es zuerst MMX, bei der die Fließkommaeinheit mehrere Integerzahlen gleichzeitig manipulierte, dann SSE bei der das zuerst mit mehreren Single Precission Variablen klappte, nun über einige SSE Generationen weiter sind wir bei AVX mit 256 Bit Registern.

Nur: normale Programme nutzen das nicht. Zum einen sind Anwendungen die Fließkommabefehle massiv nutzen bei PC-Programmen dünn gesät, so viel zu Rechnen gibts nicht. Selbst bei Bildbearbeitung kommt man oft mit Integers aus, die üblichen Verdächten beschränken sich meist auf den berühmten „Gaussschen Verwischer“ und das Encodieren von Video. Bei den vielen Servern im Einsatz ist es fast noch wichtiger, dass die Datenrate stimmt. Entweder bei der Übertragung von Daten über das Netz oder von Festplatten. Viel gerechnet wird da nicht. Eine zweite Einschränkung ist, das Programme auf allen Rechnern laufen sollen, auch solchen ohne SSE(x) und auf allen Betriebssystemen (AVX benötigt z.b. Windows 7 oder 8 in der Windows Linie). Kein Hersteller der Welt baut CPU-Befehle ein die nur bei bestimmten Rechnern laufen, weil er sich dann schon denken kann wie viele Supportanfragen er beantworten kann.

Was dem Nutzer wohl mehr nutzt sind viele einfache Kerne oder noch besser mehr Takt. Nun dem letzten sind physikalische Grenzen gesetzt, aber das erste kann man noch steigern. Nun gibt es von Intel für das Hochleistungsrechnen (High-Perfromance Computing) den Xeon Phi – wie eine Grafikkarte auf einer Steckkarte mit eigenem Speicher. Doch es handelt sich um einen Prozessor aus 60 P54C Kernen – P54c, das ist das Pentium Design, das Intel wieder von der NASA zurückgekauft hatte, nachdem sie es vor einigen Jahren mal abtrat. Die NASA wollte daraus strahlengehärtete Prozessoren machen und das war keine schlechte Idee, denn das Pentium Design ist relativ schnörkellos, eine effektive Brücke zwischen x86 Codes und interner RISC Verarbeitung. Er hat eben nur eine FPU und eine ALU. Nicht wie heute mehrere pro Kern. Das vereinfacht die Programmierung und Auslastung und es gibt kein MMX, kein SSE und kein AVX. Trotzdem erreicht ein Xeon Phi (früherer Projektname: Larrabee) eine Spitzenleistung von 1,01 TFlops bei Double Precission.

Die Frage ist: Warum nicht das ganze für den Desktop? Warum muss ich für Erweiterungen zahlen die die CPU verteuern und mir nichts bringen? Ein Xeon Phi hat 5 Milliarden Transistoren bei 60 Kernen, also 80 Millionen pro Kern. Eine ICore I3/I5 also Mittelklasse CPU 497 Millionen Transistoren für 2-4 CPU Kerne, also im besseren Falle 124 Millionen pro CPU. Mir wären mehr einfache CPU Kerne lieber, also 3/6 anstatt mehr Funktionseinheiten die mir nichts nützen. Irgendwie bringt es Intel nicht so richtig hin. Entweder sie sparen am falschen Ende (Atom ohne Umsortierung der Befehle, was ihn drastisch verlangsamt) oder sie bauen was ein, das keiner braucht. Ich würde sogar noch weiter gehen – vielleicht braucht nicht jeder Kern eine GFPU. Vielleicht reicht auch für jeden zweiten eine.

Also Intel – baut eine Billgversion des Xeon Phi, als Desktop Prozessor.

Die mobile Version verlassen