News Intel präsentiert fünf Modelle des Xeon Phi „Knights Corner“

Frage: Warum spricht der Artikel dauernd von Grafikbeschleunigern? Der Xeon Phi ist jedenfalls mal keiner - war auch nie Fokus von der Intel MIC Architektur...

Ich find das Ding immer noch klasse, vor allem wenn ma mal das "Vergnügen" hatte mit OpenCL zu arbeiten wünscht man sich sofort wieder "ordentliche" CPU-Kerne/frei agierende Threads...
 
Availabilty Jan 28, 21013? Tippfehler oder Dauert es noch 19000 Jahre bis die Dinger rauskommen? :D
 
Bin mal gespannt ob das wirklich so einfach wird "normalen" Code für x86 auf Xeon Phi zum laufen zu bekommen. Der Preis ist für die Rechenleistung im Gegensatz zu CPUs ja relativ gering. Intel würde so ihre Xeons ja unverkäuflich machen oder müsste ihren Preis extrem senken.
Wer würde denn schon für 3500€ eine CPU kaufen wenn es für 2000€ schon einen Xeon Phi mit mehr Rechenleistung gibt.
 
Komisch die S10000 wird glatt unterschlagen. Also wieder nur bashing gegen amd wie immer, schon traurig was die anderen alles kaufen können sogar CB...

Just my two cent.
 
Zuletzt bearbeitet:
Quad SMT?

SMT ist so schon ein Kniff wie man Logik und Recheneinheiten bestmöglich nutzt, wenn die Software so geschrieben ist, dass viel Warterei entsteht und von solchen Threads viel zu parallelisieren geht. Kurzum die Frage, welche Art an Programmen, die x86 Logik und deren flexiblen Rechenwerke brauchen ist gut parallelisierbar und erzwinge dazu gleichzeitig lange Wartezeiten*?

Denn Probleme die sich gut parallelisieren lassen, zeichnen sich doch eigentlich gerade durch wenige Abhänigkeiten aus und lassen sich entsprechend mit recht geringen Wartezeiten durch eher starre Pipeline jagen. Brauchen also meist keine vergleichsweise aufwendige x86 Architektur.


*Die Frage ist ernstgemeint und schließt die Option "suboptimal geschriebene Programme" aus :) Korrekturen meines Halbwissens erwünscht
 
Zuletzt bearbeitet:
1. hast du keine "starren" Pipelines mehr
und
2. hast du gewisse Latenzen, die > 1 Takt sind, wodurch du dein Ergebnis nicht sofort zum weiterrechnen verwenden kannst. Die Threads ermöglichen dir einfach aus mehr unabhängigen Workloads dir die Instructionen zu besorgen.
Genau das Selbe musst du ja auch auf GPUs machen.

Vor allem denk mal an die Latenzen eines Speicherzugriffs... Da bist über jeden Thread der parallel laufen kann froh.
 
Die reinen Speicherlatenzen sollten doch aber mit zwei Threads pro Kern halbwegs kompensiert sein. Bei 4 Threads auf je einem Kern und demzufolge reichlich 200 aktiven Threads für eine Problemstellung. Bei +200 Threads für ein Problem muss dieses doch bereits massiv parallelisierbar sein, und dürfte dahergehend weniger Abhänigkeiten haben und somit entsprechend weniger stark von SMT mit 4 Threads je Kern profitieren. Mit fällt dazu halt kein übliches Problem ein.

FE-Methoden gehen aus "primitiven" Pipelines von GPUs ja schon gut ab. Da braucht es meines Wissens nicht viel Logik. Video Encodieren ist meines Wissens auch weniger eine Qual für die Logikeinheiten als für die Rechenwerke etc.


Edit: Mit ist auch klar, dass keiner der Kerne des Phi derart flexibel ist wie ein Core irgendwas Kern. Jedoch sind die Phi Kerne meines Wissens im Vergleich zu GPU Rechenkerne geradezu voll gestopft mit Logik. Die Frage ist, wozu?
 
Klar sind Sie das, aber die Latenzen für den Speicherzugriff bleiben halt.

Du musst ja bedenken, dass sich ~60 Cores EIN Speicherinterface teilen. Da kann es durchaus mal zu längeren Wartezeiten kommen.

Dazu kommt halt noch, dass die ganze Sache eher auf Durchsatz und Stromsparen ausgelegt ist, denn auf schnelles Ergebnisreuse.

Bei GCN brauchst du z.B. 16(?) Takte bis du dein Ergebnis wieder verwenden kannst. Das ist halt genau mit den möglichen "Threads" abgestimmt usw usw.

Das sind aber alles sehr spezielle Sachen bereits, die sehr ins Detail gehen.

Nimms einfach als gegeben hin, und freu dich drüber, das es dir das Leben einfacher macht, und ansonsten nicht weh tut.
 
Ich habe das chronische Leiden, generell eine "Wieso, weshalb, warum, wofür"-Frage zu stellen :)

Wegen dem Speicherinterface. Da eine CPU Karte zu entwerfen, die über dedizierten, aufgelöteten, hoch getakteten Speicher mit meist geringen Latenzen um im Anschluss doch nur wieder ein Problem mit Bandbreite und Latenzen des Speichers zu haben leuchtet mir nicht ein. Das Vorgehen wäre schon arg merkwürdig und wird normalerweise durch abartig große L2 und L3 Caches behoben. Die lassen sich auf dem Dieshot kaum ausmachen, daher vermute ich, dass das kein all zu großes Problem sein wird.

Es bleibt also ein X86 Chip mit 60 Kernen, 240Threads, dicker Speicheranbindung, vermutet nicht all zu großen Caches (gemessen am potentiellem, real gewertetem Umsatz der Rechenwerke) auf einer Karte mit vergleichsweise langsamer Anbindung an die weitere Peripherie (PCIe ?!).
Ich frage also weiter, welche Problemstellung mit welchem Lösungsansatz lässt sich auf so einer Karte gut lösen?


Achja, mir macht der Phi das Leben nicht leicht, vorerst. Rechenzeit aufm Großrechner habe ich noch nie benötigt. ;)
Noch schafft ne herkömmliche CPU mit 2 flotten Kernen meine Exceltabellen zu berechnen (auch wenn es manchmal etwas dauert)
 
LadykillerTHG schrieb:
Komisch die S10000 wird glatt unterschlagen.

Hm, ist mir zuerst gar nicht aufgefallen. Wirkt jetzt aber schon merkwürdig. Obwohl beide Karten heut in den News waren wird nur eine neue in den Vergleich einbezogen ... :watt:
 
Vorteile von Phi (ohne besonderer Reihung):

Du kannst etablierte Algorithmen weiter verwenden - auf ner GPGPU Geschichte kannst du nicht ebene mal ne Verzweigung in einem Thread haben ohne, dass dir die gesamte Kiste serialisiert. => du musst neue Algorithmen finden, welche Verzweigungsfrei arbeiten, das ist in manchen Bereichen gar nicht mal so einfach/nicht möglich.

Du kannst Bibliotheken weiter verwenden, welche in den letzten ca 30 Jahren teilweise per Hand optimiert wurden (Stichwort: BLAS,...)

Du kannst vertraute und bekannte Tools (Debugger, Compiler, Profiler, usw.) weiter verwenden... Intel hat beispielsweise seinen kompletten Softwarestack auf beiden Ebenen (CPU, MIC)...

Bestehende Anwendungen können - sofern sie bereits stark auf Threading setzen - mittels Neukompilations (und gegebenenfalls mittels #pragma offload target(MIC) ) die Performance der Karte ausnutzen (wenn auch nicht 100%, dafür müsste man wohl die neuen 512bit SIMD-Register + Operationen verwenden. Sollte eine Anwendung allerdings bereits SSE/AVX verwenden, so ist der Schritt zu 512bit SIMD nicht mehr wirklich ein Aufwand...

Du brauchst keine 2. Programmiersprache (gerade OpenCL-C zählt wohl zu den unkomfortabelsten Sprachen der letzten Dekade...) in deinem Projekt => Polyglote Programmierung wurde schon längst als Irrweg erkannt.

Einer der Vorteile von SMT ist, dass du die Superskalarität des CPUs am besten ausnutzen kannst. Gerade Programme welche nicht auf SIMD setzten nutzen oft nicht in einem Taktzyklus alle möglichen, zur Verfügung stehenden Execution Units. Mittels der "Verschränkung" via SMT kann man den Kern dann doch noch mal besser ausnutzen => im Grunde dann geschenkter Speedup.
 
Zuletzt bearbeitet:
Vielleicht Raytracing-Rendereien? Allerdings gibt's gerade da mittlerweile eher Ansätze das auf GPUs auszulagern, ich glaube nicht, dass die Entwickler da sehr begeistert sein dürften, jetzt wieder von OpenCL auf x86 zu portieren... ;)

Eventuell auch andere Encodiermaßnahmen (Videoencoding/-transcoding) oder eben wirklich einfach als Coprozessor - was kostet denn sonst ein Multicore-Xeon?! Wenn man eine CPU-intensive Webanwendung hat, könnte sowas ja vielleicht sogar weiterhelfen, ganz abseits von komplett parallelen Problemen.

Ich bin aber auch nicht so in der Materie drin, vielleicht ist's auch einfach nur gut um eine Zwischenstufe zu FPGAs zu haben und trotzdem eher angenehme Hochsprachen verwenden zu können?
 
@Surkim: Jo Ray Tracing ist auf der MIC alleine aufgrund der eigenständigen Threads natürlich auch viel angenehmer...

Nebenbei ist OpenCL nicht auf GPUs beschränkt und Intel hat sogar eine Implementierung für x86 (und MIC)...
 
Für KI Spielereien und funktionktionale programmiersprachen wie Lisp, Clojure & co. bestimmt nice to have.
 
Wegen dem Speicherinterface. Da eine CPU Karte zu entwerfen, die über dedizierten, aufgelöteten, hoch getakteten Speicher mit meist geringen Latenzen um im Anschluss doch nur wieder ein Problem mit Bandbreite und Latenzen des Speichers zu haben leuchtet mir nicht ein. Das Vorgehen wäre schon arg merkwürdig und wird normalerweise durch abartig große L2 und L3 Caches behoben. Die lassen sich auf dem Dieshot kaum ausmachen, daher vermute ich, dass das kein all zu großes Problem sein wird.

Es gibt eben unterschiedliche Lösungsstrategien um die Latenzen, welche durch Speicherzugriffe und Register bzw. Pipelingeabhänigkeiten entstehen, zu verbergen. Zusätzlich sind CPUs und GPUs Agglomerationen von verschiedenen Ausführungseinheiten für verschiedene Befehle.
Eine Nvidia GPU besitzt:
LSUs (SpeicherBefehle) // Cuda Kerne für FP und AL //TMUs (Texturbefehle) //SFUs (Transzendente Funktionen)
Ein Prozessor besitzt:
Speichercontroller,ALUs,FPUs
Diese Ausführungseinheiten sollen ebenfalls optimal ausgelastet werden.
Diese beiden Probleme sind miteinander verzahnt, und müssen somit zusammen betrachtet werden. Es gibt für sie verschiedene Lösungsstrategien:

Komplexere Pipeline insbesondere:
-Out of Order Execution: Befehle werden nicht in der Reihenfolge ausgeführt, wie sie dastehen, sondern in derjenigen Reihenfolge wie es wohl am meisten Performance bringt. Im Nachhinein wird das Ergebnis wieder richtig zusammengesetzt, so als ob der Code in der richtigen Reihenfolge ausgeführt worden ist. Dies verbirgt Registerabhängigkeiten Speicherlatenzen und sorgt für eine bessere Auslastung der verschiedenen Ausführungseinheiten. Denn dadurch kann der Befehl an eine Ausführungseinheit sofort gegeben werden, wenn die Ausführungseinheit frei ist und die Operranden zur Verfügung stehen. Ohne Out of Order Execution wären die Ausführungseinheit so lange unbelegt bis der Befehl als nächstes im Code drankommen würde.

-Branch Prediction: Der Prozessor rät im vorneherein, welchen Branch bei if else etc. das Programm nehmen wird. Wird ein anderer Branch genommen, werden die Ergebnisse nach dem Sprungbefehl verworfen.

Diese Pipelineoptimierung findet vor allem auf CPUs statt. Denn sie benötigt viel Chipfläche und bringt damit hauptsächlich bei sequentiellen Berechnungen etwas. Auf GPUs hat man deshalb eine einfache Load Operrands/Execute/Store Operrands Pipeline für die Rechenkerne.

SMT:
Für jeden Rechenkern werden mehrere Threads gleichzeitig beherbergt. Diese befinden sich komplett in den Registern des Prozessors, wodurch das Wechseln zwischen den Threads kostenlos ist. Dadurch kann sofort wenn einer der Threads wegen Latenzen gerade nicht weiterrechnen kann, ein anderer Thread weiterrechnen. Auch sind mehrere Threads vorteilhaft um die einzelnen Ausführungseinheiten für die unterschiedlichen Befehle besser auszulasten. Denn dadurch hat man mehr Befehle, welche man als nächstes Ausführen könnte, wodurch die Wahrscheinlichkeit erhöht wird, dass für alle Ausführungseinheiten befehle dabei sind.
SMT benötigt je nach Umfang weniger Chipfläche als eine komplexere Pipeline, bringt aber nur bei parallen Aufgaben etwas, da man darauf angewiesen ist viele Threads zu haben. Deshalb kommt es hauptsächlich bei Parallelrechnern zur Anwendung.
Ein GPU Multiprozessor beherbergt 8-16 Threads pro Cuda Kern, um die Latenzen zu verstecken. Man benötigt allerdings bei der primitiven Pipeline der GPU mindestens 3 Threads um die Registerabhängigkeiten bei den Cuda Kernen zu verstecken. Wenn man noch Speicherlatenzen vertuschen Will benötigt man noch wesentlich mehr Threads.
Eine CPU haust 1-2 und KNC 4 Threads.


Cache:
Der Hauptspeicher wird bei Zugriffen im Cache zwischengespeichert, wodurch nur(!) Speicherlatenzen verborgen werden und der Hauptspeicher entlastet wird. Registerabhängigkeiten werden nicht verborgen; die Auslastung der Ausführungseinheiten nicht erhöht. Die Effizienz des Caches ist zusätzlich davon abhängig, dass man lokale Speicherzugriffe hat, was nicht in jeder Anwendung gegeben ist. Bei weitestgehend lokalen Speicherzugriffen hat man ausserdem das Problem, dass je mehr Cache man hat, umso weniger Performancesteigerung lässt sich durch zusätzlichen Cache erzielen. So belegt der L1 Cache nur sehr wenig Chipfläche, bietet aber enormen Performance gewinn von vermutlich mehreren 100 % (Leider keine Benchmarks verfügbar). Der L2 Cache ist schon grösser und bringt nur noch viel weniger Performance gewinn; sagen wir einmal 50 %. Der L3 Cache belegt schon ein drittel Der Chip Fläche, bringt allerdings nur noch ~5-10 % Performance (Siehe zB http://www.tomshardware.com/reviews/athlon-l3-cache,2416-9.html)
Deshalb verwendet man grosse Cache nur bei sequentiellen Problemen, bei denen man darauf angewiesen ist, dass wenige Threads möglichst schnell abgearbeitet werden. Bei Parallelrechnern wählt man den Cache deshalb wesentlich kleiner und versucht die Latenzen durch SMT zu verbergen.
 
Zuletzt bearbeitet:
0xffffffff schrieb:
Das "Jan 28 21013" springt einem doch (...) ins Gesicht!
Muss ja nicht falsch sein, vielleicht plant Intel einfach ziemlich weit in die Zukunft :D
 
Naja, ob Larrabee 1 oder Larrabee 2 oder Knight Ferry oder Knight Corner, das Geld wo die da reingebuttert haben sehen die nimmer mehr. Ursprünglich sollte es ja eine Grafikkarte werden welche mit Raytracing den Markt aufmischt:freak:

https://www.computerbase.de/2011-09/intels-ray-tracing-lernt-kantenglaettung-und-mehr/
Das war wohl nix Intel:evillol:

Weiter so Intel, verbuttert Eure Milliarden in sinnlose Projekte.... ...da hat wenigstens AMD mal wieder was zu lachen...
 
Naja Sinnlos würd ich nicht sagen.
Selbst wenn phi nicht mit nv oder amd mithaltne kann müssen sie mal was auf den Markt bringen um sich ein paar Anteile zu verschaffen , Präsenz zu zeigen und evtl wenn es keinen Gewinn abwirft den verlust einzudämmen.
Mal abwarten ob hier nicht noch was kommt das den phi nen boost bringt auf intel plattformen und nv verlangsamt wenn ein intel system die basis ist :D
 
Naja, ob Larrabee 1 oder Larrabee 2 oder Knight Ferry oder Knight Corner, das Geld wo die da reingebuttert haben sehen die nimmer mehr. Ursprünglich sollte es ja eine Grafikkarte werden welche mit Raytracing den Markt aufmischt

Wie diverse Leute ohne jegliches Fachwissen, es besser wissen wollen als eine Unternehmensleitung und eine Forschungs und Entwicklungsabteilung. . . . .

Es handelt sich bei diesem Projekt um ein Forschungs und Entwicklungsprojekt. Selbst wenn sich der Einsatzzweck im Laufe der Entwicklung geändert hat so hat Intel nun ein Kommerzielles Produkt auf den Markt gebracht, was sich verkaufen lässt und schon viele potentielle Käufer hat.
In wie weit es sich durchsetzen kann und die Entwicklungskosten alleine decken kann wird die Zeit zeigen.
Und selbst wenn es ein kommerzieller Fehlschlag werden sollte, so hat Intel daraus genügend Know How gewonnen, welches es in Zukünftigen Projekten verwenden kann.
 
Eyefinity schrieb:
Naja, ob Larrabee 1 oder Larrabee 2 oder Knight Ferry oder Knight Corner, das Geld wo die da reingebuttert haben sehen die nimmer mehr. Ursprünglich sollte es ja eine Grafikkarte werden welche mit Raytracing den Markt aufmischt:freak:

Weiter so Intel, verbuttert Eure Milliarden in sinnlose Projekte.... ...da hat wenigstens AMD mal wieder was zu lachen...

Wieso glaubst du das Intel dabei Milliarden verbuttert? Und bei Forschung & Entwicklung geht es auch um zukünftige Produkte. Jetzt hat Intel ein Produkt am Markt was den Tesla und FirePro schon ein paar % Marktanteil abgraben wird.

Was aber wichtiger ist, Intel hat eine GPU-architektur die über 1 T-Flop Double-Precision Leistung liefert, damit hat Intel direkt auf die GPU´s von Nvidia und ATI (AMD) aufgeschlossen.
Es gibt ja auch Leute die behaupten das Intel keine Endverbraucher Grafikkarten liefert, weil sie ja sowieso schon den größten Marktanteil haben und noch mehr das wäre dann ein Fall fürs Kartellamt ;)
 
Zurück
Oben