News Xeon Phi „Knights Landing“ mit 72 Kernen und On-Package DRAM

Volker

Ost 1
Teammitglied
Registriert
Juni 2001
Beiträge
18.352
Zum Auftakt der ISC 2014 in Leipzig hat Intel einige Details zum zukünftigen Ableger der Xeon Phi mit dem Codenamen „Knights Landing“ preisgegeben. Der neue HPC-Chip setzt auf eine verbesserte „Silvermont“-Architektur, die unter anderem aus einem Kern vier Threads bereitstellt, hinzu kommt sehr schneller On-Package DRAM.

Zur News: Xeon Phi „Knights Landing“ mit 72 Kernen und On-Package DRAM
 
Artikel schrieb:
nicht ansatzweise die Bandbreite zur Verfügung, die „Knights Landing“ bieten soll.

Ich weiß das ist mittlerweile so Umgangssprache geworden, aber CB könnte als eine der besten deutschen IT-Seiten das ganze doch genau nehmen: Eine Bandbreite hat die Einheit Hz, hier ist eine Datenrate (bit/s) gemeint.
 
Wie kann man denn den Leistungszuwachs durch die verdopplung der Threads erwarten?
Aktuell bringt die verdopplung der Threads durch HT(T) ja lediglich im optimalfall ~25%, hätte man bei 4 Threads dann im optimalfall eine steigerung von ~50% gegenüber 1core/1thread konstellationen oder sind die überlegungen zu naheliegend?
 
ZuseZ3 schrieb:
Wie kann man denn den Leistungszuwachs durch die verdopplung der Threads erwarten?
Aktuell bringt die verdopplung der Threads durch HT(T) ja lediglich im optimalfall ~25%, hätte man bei 4 Threads dann im optimalfall eine steigerung von ~50% gegenüber 1core/1thread konstellationen oder sind die überlegungen zu naheliegend?

In Anwendungen bringt HT schon viel.

Nur in Spielen nicht weil die einzelnen Code-Teile gleichzeitig zusammengesetzt werden müssen.
Gibt ja bislang keine einzige Game-Engine die wirklich gut skaliert. Ist programmiertechnisch auch nicht möglich.
Die IPC Leistung muss also weiterhin erhöht werden damit der Main-Thread nicht limitiert.
 
Zuletzt bearbeitet:
Sehr ordentliche Power, vor allem interssiert mich der On-Package DRAM!
Das ist die Zukunft, hoffentlich verschwindet so im Consumermarkt der mittlerweile zu Flaschenhals gewordene
Arbeitsspeicher komplett im DIE-Package. Hoffe auch, dass DRR4 die letzte Generation seiner Art sein wird!
So können die Systeme noch kompakter werden =) freue mich schon
 
die stärke AMD Karte hat jetzt schon 2,67 DP Leistung.. und das in 28nm..
 
setnumbertwo schrieb:
Sehr ordentliche Power, vor allem interssiert mich der On-Package DRAM!
Das ist die Zukunft, hoffentlich verschwindet so im Consumermarkt der mittlerweile zu Flaschenhals gewordene
Arbeitsspeicher komplett im DIE-Package. Hoffe auch, dass DRR4 die letzte Generation seiner Art sein wird!
So können die Systeme noch kompakter werden =) freue mich schon

Wie langweilig, dann kann man ja in den Foren keine Gerüchte über 1600MHz RAM, Latenzen etc. verbreiten :evillol:
 
C0B schrieb:
In Anwendungen bringt HT schon viel.

Nur in Spielen nicht weil die einzelnen Code-Teile gleichzeitig zusammengesetzt werden müssen.
Gibt ja bislang keine einzige Game-Engine die wirklich gut skaliert. Ist programmiertechnisch auch nicht möglich.
Die IPC Leistung muss also weiterhin erhöht werden damit der Main-Thread nicht limitiert.

Watchdogs, bitte nicht vergessen.! ;)
 
Mr.Smith schrieb:
die stärke AMD Karte hat jetzt schon 2,67 DP Leistung.. und das in 28nm..

was man so aber 0 vergleichen kann ;)

Etwas Lektüre aus dem Forum

Nai schrieb:
Mal etwas ausführlicher, inhaltliche Kritik oder Fragen nach ausführlicheren Erklärungen sind willkommen. Es war etwas problematisch das ganze inhaltlich "aufzurollen", da alles mit allem irgendwie zusammenhängt. Ich hoffe es ist mir dennoch halbwegs gut gelungen:

-Höherer Prallelismus, breiteres/anderes Hardware-Multithreading: Moderne GPUs benötigen je nach Anwendungsfall wegen ihrem Hardware-Multithreading mehrere 1000 Threads um gut ausgelastet zu sein (Titan kann maximal 29 000 Threads gleichzeitig bearbeiten, bei modernen AMD-Karten sind es 60k+ ), während Phi wenige 100 benötigt (Phi kann denke ich nur bis zu 300 Threads gleichzeitig bearbeiten). In den meisten Anwendungsgebieten ist der Parallelismus nicht aus dem Grund schädlich, weil man das Problem nicht genügend parallelisieren könnte, sondern aus anderen Gründen:
So benötigt man auf einer GPU wesentlich mehr Speicherplatz für die temporären Zwischenergebnisse aller Threads als auf einem PHI. Passt der Workingset der Zwischenergebnisse eines jeden Threads (auch die automatischen Variablen genannt) nicht mehr in die Register, müssen sie in in die Caches und den DRAM ausgelagert werden, was wiederum brutal Performance kostet. Dies wird als Register-Spilling bezeichnet. So kann man auf einer Titan beispielhaft schon mit Performanceeinbussen rechnen, wenn ein Thread mehr als 31 Zwischenergebnisse gleichzeitig zwischenspeichern muss. Des Weiteren führen mehr Threads unabhängig von Registerspilling auch zu chaotischeren globalen Speicherzugriffen (global = sämtlicher Speicher was sich alle Threads der GPU teilen wie Texturen, Vertexdaten, Hierarische Datenstrukturen), was wiederum der Cache-Effizienz schadet und brutal DRAM-Bandbreite kostet. Erschwerend kommt hinzu dass die GPU nur einen sehr kleinen L2-Cache besitzt (1.5 MB beim Titan), während der PHI einen sehr großen L2-Cache besitzt (Kernzahl* 2MB). Dadurch kann ein Algorithmus mit einem großen Working-Set für automatische und globale Variablen nicht mehr effizient auf einer GPU arbeiten. Meist kann man das zwar hinfriggeln, dass es irgendwie doch passabel oder eventuell sogar gut auf einer GPU funktioniert, was aber sehr viel Arbeit ist.
Allerdings ist diese Art des Hardware-Multithreading der GPU auch fallabhängig von Vorteil. Denn der Grund dafür, dass man ein Hardware-Multithreading einbaut ist immer der, dass man dadurch Latenzen besser überbrücken kann und die unterschiedlichen (Rechen-)Ressourcen besser auslasten kann. Dies kann eine GPU wegen dem breiteren Multithreading dementsprechend auch besser als ein Xeon-Phi.


-SIMD: Ein Warp ist eine Gruppe von N Threads auf der GPU (N = 32 bei NVIDIA, 64 bei AMD). Eine GPU führt jeden Takt jeweils die nächste Instruktion eines Warps aus, wodurch ein und der selbe Befehl jeweils auf den unterschiedlichen Daten eines jeden Warpthreads ausgeführt wird (Single Instruction Multiple Data). Wollen mehrere Threads eines Warps wegen einem Sprungbefehl nicht an einem Befehl teilnehmen, so bleiben in diesem Fall die entsprechenden Rechenkerne unbenutzt und es geht Rechenleistung verloren. Dadurch reagieren GPUs sehr empfindlich auf Algorithmen mit chaotischen Sprungbefehlen. In den meisten Fällen kann man zwar die Sprungbefehle GPU-freundlich optimieren, was allerdings wiederum ein großes Gefriggel ist. Xeon-Phi besitzt ebenfalls SIMD-Instruktionen (eine Instruktion auf 16 SP-Werte gleichzeitig), jedoch beziehen sie sich auf die Daten eines einzelnen Threads. Hier muss man zwar den Quelltext auch etwas umgestalten, dass der Compiler diese SIMD-Instruktionen verwenden kann und Sprungbefehle können sich ebenfalls per Active-Mask, welche beschreibt welche der Daten überhaupt am SIMD-Befehl teilnehmen, negativ auf die Performance auswirken, aber afaik fallen die nachteiligen Auswirkungen von Sprungbefehlen auf die Performance wesentlich geringer als bei GPUs aus.


-Shared Memory: GPUs haben einen kleinen Scratch-Pad-Speicher auf dem DIE (ähnlich zu dem eDRAM auf den Konsolen). Diesen kann man nach belieben befüllen und auslesen, und dadurch die zu kleinen Caches etwas kompensieren. Allerdings ist es in den meisten Fällen ein großes Gefriggel den zu verwenden.

-Besondere Caches auf der GPU: GPUs haben besondere Read-Only-Caches (Texture-Cache, Konstanten-Cache), deren dazugehörige Daten während der gesamten Programmausführung nicht verändern dürfen. Diese Caches muss man explizit und "richtig" verwenden, was einen Mehraufwand bei der Programmierung bedeutet, jedoch aus Performancegründen wesentlich ist. Gleichzeitig muss man dafür sorgen, dass sich die Daten nicht verändern, was die Programmierbarkeit einschränkt.


-Vielzahl von Hardwarelimitierungen: Eine GPU besitzt für viele Aufgaben Spezialhardware. Verwendet man diese, was wiederum in den meisten Fällen empfehlenswert ist, so muss man die dazugehörigen Hardware-Limitierungen in Kauf nehmen. Stören diese Limitierungen bzw. stößt man an deren Grenzen so muss man *irgendwie* beim Programmieren darauf eingehen.


-Occupancy: Während bei dem Hardware-Multithreading auf Prozessoren jeder Thread seinen eigenen Registersatz hat (also bei 4 Fach bei einem PHI-Kern) teilen sich die Threads eines Multiprozessors auf der GPU einen Registersatz. Je mehr Register ein Thread auf der GPU benötigt, desto weniger Threads passen in einem Multiprozessor bzw. desto weniger Threads kann die GPU gleichzeitig bearbeiten. Wie bereits erwähnt, will man jedoch meist möglichst viele Threads gleichzeitig aktiv haben, um die Latenzen überbrücken zu können und die GPU gut auszulasten. So ist es in den meisten Fällein ein großes Gefriggel die Occupancy gut hinzubekommen. Auf einem PHI existiert das Konzept der Occupancy und die daraus resultierenden Probleme nicht.

-Keine Interrupts auf GPUs in Kombination mit Hardware-Scheduling: Ein Thread rechnet auf einer GPU so lange bis er terminiert; terminiert er nicht so rechnet er ewig (oder bis Windows den Displaytreiber zurücksetzt). Er kann sich auch nicht schlafen legen, die Kontrolle an einen anderen Thread abgeben, um auf ein bestimmtes Ereignis zu warten. Wenn er dennoch auf ein Ereignis warten muss, so muss er aktiv ständig die Bedingung abfragen, was Rechenleistung verschwendet. Diverse Anwendungen (wie Betriebssysteme) setzen auch voraus, dass man einen Thread per Interrupt unterbrechen kann. Diese Anwendungen sind auf der GPU ebenfalls nicht verwirklichbar. Auf einem PHI stellen sich wegen Interrupts diese Probleme nicht.

-x86 Architektur: Gerade bei kleineren Rechenaufgaben mit größerer und älterer x86-Code-Base mag es keinen Sinn machen sich einen Programmierer einzustellen, der das in mühevoller kleinarbeit auf die GPU portiert. Da mag es sehr vorteilhaft sein, sich einfach einen PHI zu kaufen und auf diesen den x86 Code direkt ausführen zu können.

und weiter

Nai schrieb:
Machst du es dir da nicht etwas zu einfach indem du sagst, dass sie da und da eine bessere Performance erzielt haben ist eine GPU-Lösung allgemein besser? Wenn ich mich für etwas entscheiden würde, würde ich folgende Punkte abarbeiten:

-Wie performant laufen die Algorithmen auf GPUs und wie performant auf CPUs (PHIs)? Generell gilt, dass komplexere Algorithmen weniger GPU und mehr CPU freundlich sind, während einfachere Algorithmen eher GPU freundlich sind.

-Worauf läuft die vorhandene Code-Base? Ist der Code bereits parallel in x86 vorhanden würde ich eher auf den PHI setzen, ist er nur parallel in CUDA/OpenCL vorhanden, was vermutlich der weitaus seltenere Fall sein wird, würde ich eher auf GPUs setzen.

-Wie viel Zeit und Geld kann man für das Portieren der vorhanden Code-Base aufbringen? Bei viel Zeit und Geld kann man sich die Hardware nach den anderen Gesichtspunkten aussuchen, bei wenig Zeit und Geld ist man auf die Hardware angewiesen, deren Code-Base man besitzt.


-Worauf laufen die Anwendungen, bei welchen man keinen Quellcode hat? Unterstützen die Anwendungen nur x86 dann kann man nur auf den PHI setzen (oder sie selbst neu schreiben!), während wenn die Anwendungen nur CUDA können, muss man auf CUDA setzen.

-Wie viel Zeit und Geld kann man für das Optimieren aufbringen? Bei viel Geld und Zeit würde ich eher auf GPUs setzen, während ich bei weniger Zeit und weniger Geld auf CPUs setzen würde, da bei GPUs im Allgemeinen mehr Optimierungsbedarf besteht.

-Wie teuer sind die Anschaffungskosten der Hardware und die Betriebskosten im Bezug auf die Performance?

-Willst du auf den Rechnern auch eine rechenintensive graphische Ausgabe (CAD, 3D-Design) haben? Wenn ja, dann würde ich auf GPUs setzen, da sie die graphische Ausgabe auch berechnen können.

All diese Gesichtspunkte kann man kombinieren um eine Kosten/Nutzen/Zeit Rechnung zu machen und das ganze mal z.T. durchzurechnen oder auch durchzuschätzen und dann gegebenenfalls abzuwägen.

Man könnte die Argumentation ja kritisieren und sagen die Entwicklungskosten, Potierungskoten und Optimierungskosten für den Quellcode sind irrelevant gegenüber den Hardwarekosten und den Stromkosten. Wenn man aber bedenkt, dass ein Programmierer einen Arbeitgeber wohl ca 4000-7000 € pro Monat kosten wird und bei der Portierung/Optimierung des Quelltexts sicherlich ein paar Personenmonate benötigt werden, so kommt sehr schnell ein Betrag von 100 000 € zusammen. Davon kann man sich bereits wieder recht viele Karten (PHIs, GPUs) kaufen, weshalb das Optimieren und Portieren gerade bei kleineren Clustern absolut unlohnenswert ist.
 
und SMT4 soll auf so schwachen silvermont-kernen, die nicht dafür ausgelegt wurden sinn machen?
 
Zuletzt bearbeitet:
Knights Corner hatte alte Pentium-1-Kerne als Basis und auch 4 Threads pro Kern. Es ist halt die Ausgangsposition, die dann massiv angepasst und in die Richtung HPC optimiert wird.
 
Ich glaube Intel kann das besser bewerten als du ob das Sinn macht oder nicht. Und die steigenden Anteile des Phi's geben ihnen wohl Recht.

MfG Eleanor1967
 
naja, bleibt die frage ob es wirklich etwas bringt.
auch ein P1-kern ist nicht darauf ausgelegt, jedenfalls nicht auf SMT4.

aber man merkt eh wie schwach der Phi ist, trotz 14nm und einer extrem großen Die kann er die 28nm kollegen von AMD/Nvidia nur knapp überholen.
 
Die fetten angeflaschten 512-Bit Einheiten wollen ja auch irgendwie gefüttert werden. Da kann 4x SMT schon helfen. Der reine Silvermont-Kern dürfte die meiste Zeit nur für Steuerungsbefehle genutzt werden.
 
Eleanor1967 schrieb:
Ich glaube Intel kann das besser bewerten als du ob das Sinn macht oder nicht.
da wäre ich mir nicht so sicher, SMT4 bei so schwachen kernen wird nicht viel bewirken, wenn es kaum ressourcen gibt bringt auch ein lückenfüller nix!

Und die steigenden Anteile des Phi's geben ihnen wohl Recht.
die leistungsdaten sagen aber etwas anderes, schau dir doch mal den aktuellen Phi an, der ist gegen AMD/Nvidia lächerlich langsam.
verbraucht aber viel mehr silizium.

knapp über 3TFlops sind auch nicht so toll, wenn das teil bei 14nm ca. 700mm² hat sollte er schon weiter vor AMD/Nvidia liegen.
3TFlops erreicht ja eine W9100 schon fast und die ist in 28nm gefertigt und trotzdem kleiner!
wenn Nvidia und AMD da neue chips auflegen ist der Phi wieder der langsamste...
Ergänzung ()

Simon schrieb:
Die fetten angeflaschten 512-Bit Einheiten wollen ja auch irgendwie gefüttert werden.
kein grund für SMT4, die AXV-einheit wird vom decoder gefüttert!
 
Zurück
Oben