News Intels Larrabee besitzt zwei HD-Decoder

Ich glaub nicht Intel mit dem Larrabee hautsaechlich auf Gamer aus ist.
Man wird damit wohl schon spielen koennen - aber dafuer braucht der chip 1. zuviel strom
2. ist zu komplex und ist 3. nicht schnell genug (wenn er gegen die neuen ATI und NVIDIA antritt)

Das eigentlich gute daran ist das bei GPGPU zurzeit die nicht programmierbare und zu einfache pipeline Architektur der Grkas das problem darstellt.
Den groessten nutzen aus der massiven rechenpower von modernen Grafikkarten wuerden Renderprogramme (raytracer - unibias renderer ....) ziehen und eben nicht videoencodierung (was gegen rendern laecherlich ist - vom zeitaufwand).

Die Renderprozesse lassen sich jedoch momentan zwar gut paralellisieren und skalieren super mit zunehmenden CPU Kernen - aber sie lassen sich nicht oder nur eingeschraenkt auf die shaderarchitektur von GPUs anpassen (sonst waere Maxwell - 3dMax - Cinema 4d da schon laengst aufgesprungen wegen der etwa 100x performance)

Sollte intel da was reissen koennen - wird das ding eh so teuer das es fuer alle hier unerschwinglich ist.
Fuer professionelles Rendering / echtzeit Raytracing ... koennte das Ding jedoch ein Quantensprung werden.

(Hatte vor ner weile mal bei Maxwell nachgefragt warum GPGPU nicht unterstuetzt wird
- Die haben mitgeteilt dass das uebersetzen und aufteilen der einzelnen threads auf die shader (da zu speziell) soviel rechenpower, speicher und bandbreite brauchen wuerde das das ganze wahrscheinlich langsamer waere als nur auf einem Quad zu rendern)
 
Zuletzt bearbeitet:
Ich find die Diskussion witzig... Intel hat noch NIEMALS ne Fehlentscheidung getroffen... Natürlich nicht.

Ich sag nur PentiumPro, i740 (separate Grafikkarte), Itanium, Pentium IV, ...

Die haben schon genug Mist vom Stapel gelassen. Aber deren Marketing und der Herdenzwang (eben jenes "ist von Intel - muss gut sein!!!") haben bisher noch über fast jedes Problem hinweg geholfen.

Beispiel: Der P4 hatte damals KEINE Daseinsberechtigung. Er war langsamer, heißer/höherer Verbrauch und teurer. Und trotzdem haben ihn die Leute gekauft wie blöd.
Nachtrag: Bevor hier das Geflame los geht: Ja, die AMDs sind derzeit auch langsamer/heißer. Dafür i.d.R. allerdings günstiger.

Beim Lara bin ich mir noch nicht so sicher, wie sie es anstellen werden. Fakt ist jedenfalls:
x86 ist zwar so ziemlich die multifunktionalste, dafür aber auch ineffektivste Lösung für eine GPU, die einen SEHR begrenzten Funktionsumfang benötigt. Selbst mit OpenCL und Co.

Schaut man sich dann noch die grottenschlechten Treiber der iGPs an, zweifele ich allerdings ein wenig, ob sie DIESEn komplexen Spagat hinbekommen werden, eine gute Grafiklösung bei der komplexen Programmierung anbieten zu können, die konkurrenzfähig schnell, gut und zuverlässig ist.

Regards, Bigfoot29
 
also Harleaquin ist der jenige welcher hier am ehesten in die richtige richtung denkt, Larrabee wird zwar auch bei klassischen engines mitmischen, dort ist jedoch alles eine frage verdammt guter treiber, der wirklich wichtige weg ist jedoch, dass mit ID schon ein großes studio an einem auf echtzeitrendering basierenden spiel arbeitet und für solche engines wird larrabee entwickelt, dass er klassische engines halbwegs schnell darstellten soll, ist nur eine starthilfe
 
gruffi schrieb:
Das wird dir aber nichts nützen. Sprachen wie C oder C++ bieten keine Möglichkeiten, derart parallelen Code zu erzeugen. Und am einfachsten ist das eben mit einer Spracherweiterung zu realisieren. Und genau das ist ja zB OpenCL.
So wie ich das bei Larrabee mitbekommen habe, wird man auf Spracherweiterungen verzichten und lediglich einen eigenen Compiler samt Runtime anbieten. Damit lässt sich dann zwar Legacy Code teilweise ohne Änderungen übersetzen, ist natürlich aber nicht gerade effizient, da parallele Aufgaben uU nicht optimal verteilt werden können. So werden für generelle Parallelisierung High-Level Threads genutzt, was aufwändiges Thread Switching zur Folge hat. Und Parallelisierung auf Thread Ebene, die die kompletten Kapazitäten der SIMD Einheiten ausnutzt, ist bei Legacy Code auch recht schwierig.
Wie ich schon sagte, du benötigst einen weiteren Software Layer. In welcher Form auch immer. Ich sehe daher wenig Chancen, wie Larrabees x86 Kompatibilität Programmierern irgendetwas einfacher machen wird. Im Gegenteil, ich habe eher die Befürchtung, dass die x86 Kompatibilität die Hardware relativ ineffizient macht.

Ging nicht lange bis das C-Kein-Threading-Argument kam. Ich weiss einfach nicht, warum die Leute ständig damit kommen. V.A. mit Thread-Switching? Wann findet das denn statt? Wenn Leistung gebraucht wird, laufen genau N Threads auf N Cores, nix Scheduling. Gut, auf Larrabee laufen dann mit Vorteil 4*N Threads auf N Cores, weil jeder Kern 4-faches SMT unterstützt - und jetzt Achtung - mit Hardware-Scheduling (!). Hauptgrund dafür ist, dass man Cache-Zugriffe verbergen kann, sobald ein Thread warten geht kommt der nächste dran. Und jetzt, nochmals Achtung - alle 4 Threads auf dem Core haben einen eigenen persistenten x86-Kontext, also nix switchen, einfach schlafen gehen und mit der nächsten Instruktion für den nächsten Thread weitermachen. Es hat schon einen Grund, warum die 700mm^2 bei 65nm gebraucht werden...

Klar, ne Runtime-Lib hast du, aber bitte, willst du mit C ohne Library programmieren? Immer alles selber schreiben? Aber als zusätzlichen Softwarelayer würd ich das nicht grad bezeichnen. Du hast nen Stück Code, der die Threads einmal verteilt, danach laufen sie, wie gesagt, Switching wirds nicht viel haben - und wenn, dann, wenn die Arbeit erledigt ist - wenn eh Zeit dafür da ist.

Und ob du die SIMD-Einheiten gut ausnützst hat ehrlich gesagt nicht allzu viel mit Threading zu tun. Eher schon was mit der Strukturierung deiner Daten usw. Und wer mit 4-way SIMD (z.B. SSE) rumgespielt hat, wird keine Mühe haben, mit den LNI umzugehen. Intel hat die C-Intrinsics fast 1:1 übernommen, halt nur mit 16 Werten statt 4. Und noch paar ganz nette Befehle dazugetan, die das Ganze noch leichter machen, optimal auszunützen (v.a. Predication, Scatter/Gather usw, nur um einpaar Stichworte zu nennen).

Sorry, aber wer mir erzählen will, dass er lieber mit CUDA (oder, wie ich befürchte auch mit OpenCL (da weiss ichs halt nicht, aber wenns auf Grafikkarten laufen soll)) die extremen Verrenkungen machen will, als "angenehm" C-SIMD zu schreiben... Tja, jedem das seine... aber bin mir ziemlich sicher, dass sehr viele nativ Larrabee bevorzugen werden. Hast du schon mal mit CUDA was gemacht? Wenn nicht, mach mal, und dann schreib was mit SSE, und stell dir vor, es sei gleich schnell...

[Edit]
Nach bisschen Nachdenken kam mir eine Idee warum immer das furchtbar komplizierte C-Threading-Problem als Argument gebracht werden könnte:
Vielleicht ist bei vielen die Vorstellung da, dass auf Larrabee ein präemptives OS oder irgendeine Virtual Machine laufen muss, damit man irgendwelches Threading implementieren kann. <-- Irrtum. Erinnert euch zurück an die DOS-Zeiten und stellt euch vor, es sind 32 Cores da. Auf Larrabee läuft nur euer Programm, nichts wird von einem bösen OS unterbrochen weil ein anderes CPU-Zeit will. Nein gibts nicht, das geladene Programm läuft einfach bis es fertig ist. Threads starten geht wie gesagt ohne zusätzliche Layer, halt schön verpackt in der Library als aufrufbare Funktion. Und wer jetzt denkt, dass Intel so dermassen blöd ist, dass sie keine _einfache_ Möglichkeit bieten würden, Threads zu starten.. naja.. ich sag mal nichts dazu. POSIX Threads und TBB sind inherenter Teil der Runtime (und wie gesagt, das ist keine Virtual Machine, die neben her läuft, sondern hier wirklich nur ne Ansammlung von Standardfunktionen, die aus dem Programm aufgerufen werden können). Und wer auf Teufel komm raus mehr Threads starten will als Cores zu verfügung stehen, sollte halt schon wissen, womit er sich das erkauft - er braucht dann wirklich einen Software-Scheduler, aber wir reden hier ja über Software, die schnell laufen soll, und.. ja.. da überlegt man sich dann meist eben schon, was man tut.
 
Zuletzt bearbeitet:
Es geht eher in dem Fall um den Preis. Zwei 200mm² Chips sind billiger als ein 400mm², wenn ein Teil des 400mm² Chips im Eimer ist kann man den ganzen Chip wegwerfen. Bei den zwei 200m² Chips kann man dann wenigstens noch einen weiter verwenden.
Stimmt nicht ganz, wenn ein Teil des Chips kaputt ist kann man ihn vielleicht als kleinere Version weiterverkaufen und nicht gleich ganz wegwerfen. Was glaubst du was eine GTX 260 mit 216 Kernen ist? Eine GTX 285 bei der ein paar Kerne nicht funktionieren...



das wunsch szenario aus intel sicht sieht also so aus:
im stillen kämmerlein entwickeln sie treiber und entwicklungsumgebungen für raytraycing basierte engines. dann nutzen sie ihre machtstellung und ressourcen aus, um 1-2 bekannte spieleschmieden zu "überzeugen". deren nächste oder übernächste blockbuster sind dann ersteinmal für raytraycing ausgelegt. die jahre an erfahrung für alle belange von gpu's bei der konkurenz sind dann für den arsch, denn bei rytraycing nutzt das alles nix.
Nur blöd für Intel das die aktuellen GPUs auch verdammt gut Rytraycen, obwohl hier Intel eine Menge Forschung betreibt würd ich auch in diesem Gaming Bereich auch eher auf NV oder ATI tippen. Erst recht mit den neuen noch flexibleren DX 11 Architekturen. Und 100% Raytracing dauert sowieso noch ein Weilchen, es wird eine Übergangszeit geben also quasi Hybridrendern mit Raytracing und Rasterisierung gleichzeitig. (sagen zumindest die Grafikkartenhersteller)
https://www.computerbase.de/2008-08/nvidia-zeigt-raytracing-auf-der-gpu/
 
Mindestens die Hälfte der Leute hier hat eine 1A Zeitmaschine....was ihr alles wisst.:rolleyes:
 
Kasmopaya schrieb:
Nur blöd für Intel das die aktuellen GPUs auch verdammt gut Rytraycen...
...Erst recht mit den neuen noch flexibleren DX 11 Architekturen.

Nur blöd das DX keinerlei raytracing Funktionen bereitstellt. Aber mittels OpenGL kann man raytracen. ;)


DX, dx, dx, dx... spielt in der Computer Animation (wo schon seit JAHREN raytracing angewand wird) leider KEINE ROLLE.
Dort kommen fast zur Genze Linux, IRIX oder auch Apple Systeme zum Einsatz. Und das bedeutet: kein Windows, kein DX.

Da stelle ich mal eine Frage die in mir brennt: Wie fühlt sich ein eingefleischter MS Fanboy, wenn er die div. Animationsfilme, wie jetzt Ice Age 3 guckt? Die sind schliesslich 100% MS free, noch schlimmer, die wurden mit den beiden Todfeinden (Apple, Linux) "erschaffen". Sind die dann für denjenigen immer noch lustig? :evillol:

Ok, jetzt aber ernshaft weiter. :D

Ich denke das der Larrabee zumindest am Anfang eben für solche Animationsstudios gedacht sein wird. (für den Einsatz auf den Renderfarmen).


PS:warum glauben eigentlich die ganzen Gamer Kiddies, das, wenn ein neues Grafikprodukt in entwicklung ist, das das gleich für sie ist? hahaha, irgendwie lustig. :rolleyes:
 
Zuletzt bearbeitet:
C3rone schrieb:
War ja klar, dass jetzt jemand mit Itanium oder Pentium 4 kommt... das ändert aber rein gar nichts an meinen Aussagen.
Doch, weil Intel mit dem Itanium auch Milliarden versenkt, ohne Ende. Man hat also eine Tendenz zu "schwarzen Löchern", welche in unserer Wirtschaftsordnung eigentlich kaum vorkommen sollen. Also könnte es durchaus sein, dass bei Intel schon alles "klar" und abgeschrieben ist in Sachen Larrabee und das Ding trotzdem auf den Markt gepeitscht wird. Ob es irgendwann so wie z. B. Xbox/PS3 mal Gewinn bringt, ist dann eine andere Frage.
Wie schon gesagt, ich kann es auch nicht genau wissen und behaupte das auch nicht, ich gehe hier lediglich von dem aus, was bereits bekannt ist.

Hovac schrieb:
Sie haben doch schon gezeigt wie es geht, die SSDs waren astronomisch teurer, hatten aber die Leistung das viele sie dann doch gekauft haben.
Nur das Intel seit langer Zeit Flash-Chips herstellt und Controller sind für die auch nix fremdes. Übrigens sind Intels SSDs die Oberklasse der Unterklasse, wie so oft bei der Firma.
 
[offtopic]

Bigfoot29 schrieb:
Nachtrag: Bevor hier das Geflame los geht: Ja, die AMDs sind derzeit auch langsamer/heißer.
Nur damit keine Unklarheiten entstehen, der P4 war beides gleichzeitig. Das ist bei AMD nicht der Fall. Ganz im Gegenteil, mit Yorkfield liegt man etwa gleichauf, sowohl bei Performance als auch Leistungsaufnahme. Nehalem ist zwar schneller, braucht aber auch mehr Strom. Bei Servern sieht es sogar noch besser aus. Bei der Energieeffizienz liegt Istanbul gleichauf mit Gainestown, Shanghai übertrifft hingegen Harpertown. Mit Netburst kann man das nun wirklich nicht vergleichen. Der war in jeder Hinsicht ein Fehlgriff.

[/offtopic]


pezli schrieb:
Ging nicht lange bis das C-Kein-Threading-Argument kam. Ich weiss einfach nicht, warum die Leute ständig damit kommen. V.A. mit Thread-Switching?
Also erstmal, weil weder ISO C noch ISO C++ Threads unterstützen. Der neue C++ Standard wird das glücklicherweise ändern. Und dann würde ich empfehlen, das weiter vorne verlinkte Dokument durchzulesen. Intel selbst sieht hier wohl Probleme. Thread Switching ist, wie du vielleicht weisst, keine triviale Angelegenheit. Selbst wenn man N Software Threads auf N Hardware Threads abbilden kann, das Betriebssystem muss im Hintergrund trotzdem jeden Thread verwalten. Und das kostet Ressourcen, auch ohne Kontext Switch.

pezli schrieb:
Gut, auf Larrabee laufen dann mit Vorteil 4*N Threads auf N Cores, weil jeder Kern 4-faches SMT unterstützt - und jetzt Achtung - mit Hardware-Scheduling (!). Hauptgrund dafür ist, dass man Cache-Zugriffe verbergen kann, sobald ein Thread warten geht kommt der nächste dran. Und jetzt, nochmals Achtung - alle 4 Threads auf dem Core haben einen eigenen persistenten x86-Kontext, also nix switchen, einfach schlafen gehen und mit der nächsten Instruktion für den nächsten Thread weitermachen. Es hat schon einen Grund, warum die 700mm^2 bei 65nm gebraucht werden...
Wo soll hier Achtung sein? Das machen aktuelle CPUs auch nicht anders. Übrigens, es sind wohl 45 nm.

pezli schrieb:
Und ob du die SIMD-Einheiten gut ausnützst hat ehrlich gesagt nicht allzu viel mit Threading zu tun.
Das hat auch niemand behauptet. Es sind aber zwei unterschiedliche Ebenen. Und Parallelisierung direkt auf Ebene der Rechenwerke ist grundsätzlich erstmal effizienter. Und eine vollständige Optimierung dahingehend erlaubt zB OpenCL oder DirectX Compute Shaders. Bei Larrabee ist das nicht möglich. Da muss der Umweg über High Level Threads herhalten. Wie effizient das in der Praxis ist, wird man sehen müssen.

pezli schrieb:
Sorry, aber wer mir erzählen will, dass er lieber mit CUDA (oder, wie ich befürchte auch mit OpenCL (da weiss ichs halt nicht, aber wenns auf Grafikkarten laufen soll)) die extremen Verrenkungen machen will, als "angenehm" C-SIMD zu schreiben...
Du willst mir doch nicht erzählen, dass irgendjemand "C-SIMD" programmiert? :rolleyes: Das kommt wirklich nur in seltensten Fällen zum Einsatz. Entwickler arbeiten immer noch in erster Linie auf High-Level Ebene und verlassen sich auf die Fähigkeiten des Compilers. Also mit allem, was der Standard und portable Bibliotheken/Frameworks hergeben. Egal ob du SSE/AVX Intrinsics oder zusätzliche Schlüsselwörter/Kontrollstrukturen benutzt, beides entspricht nicht dem Sprachstandard. OpenCL ist aber zumindest standardisiert, SSE/AVX Intrinsics sind proprietär.
Wie auch immer, es sind verschiedene Strategien mit dem gleichen Ziel. Und da kann man wie üblich verschiedenster Meinung sein. Ich sehe hier grundsätzlich aber auf beiden Seiten zusätzlichen Aufwand. Zudem ist der Ansatz der Spracherweiterung für mich die saubere Lösung. Aber das mögen Leute, die sich bisher keine Gedanken über solche Themen gemacht haben, sicherlich anders sehen. Mir nützen SSE/AVX Intrinsics jedenfalls überhaupt nichts, wenn ich die parallelen Fähigkeiten meines Toasters ausreizen will. ;)
 
Zuletzt bearbeitet:
gruffi schrieb:
Also erstmal, weil weder ISO C noch ISO C++ Threads unterstützen. Der neue C++ Standard wird das glücklicherweise ändern. Und dann würde ich empfehlen, das weiter vorne verlinkte Dokument durchzulesen. Intel selbst sieht hier wohl Probleme. Thread Switching ist, wie du vielleicht weisst, keine triviale Angelegenheit. Selbst wenn man N Software Threads auf N Hardware Threads abbilden kann, das Betriebssystem muss im Hintergrund trotzdem jeden Thread verwalten. Und das kostet Ressourcen, auch ohne Kontext Switch.
Du wiederholst dich, dass ISO C da nichts hat, weiss ich schon, du bist nicht der erste, der händeringend drauf hinweist. Aber warum kommen alle ständig mit Threadswitching und v.a. noch mit dem Betriebssystem, der macht rein gar nichts hier, man hat vollständige Kontrolle über die Karte, höchstens der Treiber funkt dir rein, aber sicher nicht um die Threads rumzuwirbeln... (Denk halt an Host- und Device-Unterscheidung und so... auch in OpenCL...). Wo da ständig Threads geswitcht werden musst du mir wohl oder übel erkären, da blick ich scheinbar nicht durch (und ich will da ne Antwort, wirklich, hilf mir).
Und klar, wenn alles im C-Standard wäre, wäre die Welt ja schön, oh entschuldige dass die Entwicklung weiter geht. Aber wenn du warten willst bis dein Lieblingscompiler die jeweiligen Standards unterstützt... (ich will jetzt nicht wissen, wie lange man am C99 Standard vor der Standardisierung rumdiskutiert hat - und äh, was haben wir heute.. achja, 2009, das sind geschlagene 10 Jahre _nach_ Festlegung, bis die Compiler das mal einigermassen unterstützen - und der C0x - der Name sagts ja schon mehr als deutlich - lässt sich da noch ne geraume Zeit auf sich warten...)
Meiner Meinung nach reicht für Larrabee eine Threadverwaltung auf POSIX-Grundlage (= über Libraries) völlig, oder siehst du da Probleme? (Die Frage kann man nur im Zusammenhang mit der Frage drüber für mich sinnvoll beantworten). Am Ende läufts nur darauf hinaus, wo die entsprechnenden Instruktionen stehen, den Programm-Counter und Stack-Pointer für die einzelnen Cores zu setzen. Im eigenen Programm-Code oder im Code der Library... (nüchtern, wenn mans so betrachtet oder?)

Das hat auch niemand behauptet. Es sind aber zwei unterschiedliche Ebenen. Und Parallelisierung direkt auf Ebene der Rechenwerke ist grundsätzlich erstmal effizienter. Und eine vollständige Optimierung dahingehend erlaubt zB OpenCL oder DirectX Compute Shaders. Bei Larrabee ist das nicht möglich. Da muss der Umweg über High Level Threads herhalten. Wie effizient das in der Praxis ist, wird man sehen müssen.

Du willst mir doch nicht erzählen, dass irgendjemand "C-SIMD" programmiert? :rolleyes: Das kommt wirklich nur in seltensten Fällen zum Einsatz. Entwickler arbeiten immer noch in erster Linie auf High-Level Ebene und verlassen sich auf die Fähigkeiten des Compilers. Also mit allem, was der Standard und portable Bibliotheken/Frameworks hergeben. Egal ob du SSE/AVX Intrinsics oder zusätzliche Schlüsselwörter/Kontrollstrukturen benutzt, beides entspricht nicht dem Sprachstandard. OpenCL ist aber zumindest standardisiert, SSE/AVX Intrinsics sind proprietär.
Ja, "Grundsätzlich" ist ne Parallelisierung auf Ebene der Rechenwerke "grundsätzlich" effizienter.
Aber hey, jetzt überleg mal wie sie beim Larrabee auf die riesen Flop/s-Zahlen kommen? Wenn du skalar rechnest bist dann mal so grob über den Daumen 16 mal langsamer, nur so als Grundhinweis :rolleyes:: (und ich will hier einpaar !!! hinzufügen. Ich versuch's mit einem Arg hinkendem Beispiel: Das wäre so das gleiche wie "jo ich programmier auf der Grafikkarte mit einem Shader pro Block, weil Parallelisierung auf Blockebene effizienter ist" (und man darf jetzt ruhig annehmen, dass das wirklich stimmt es geht darum, dass du auf einen Grossteil der Shader verzichtest...))
SIMD muss leider sein bei Larrabee, leider leider. Du MUSST SIMD (=Vektorisieren) UND Threads parallelisieren, nur eines allein ist nicht... Du kannst jetzt sagen, dass du dann vom Compiler alles vektorisiert haben willst - funktioniert auch schon (mehr schlecht als recht), aber auch nur, wenn du entsprechend programmierst, aber Gedanken darüber musst dir jetzt leider schon machen - und dann kannst du auch nur hoffen, dass es klappt.
Wie gesagt, Larrabee wird dann wohl nicht wirklich was für dich sein wenn du dich bis jetzt auch nie genötigt gefühlt hast, SSE zu benutzen, dann ists wirklich so, wozu brauchst dann bitte die Leistung?
Und dass SSE "nur in aller seltensten Fällen" benutzt wird... Glaubst du wirklich, dass irgendeine Software, die heute schnell ist, ohne handgeschriebenen SSE-Code auskommt? Das wird alles mit den Intrinsics (und sehr oft sogar inline Assembler) gemacht. Jeder Video-Codec, Photoshop... Klar, das ist ein winziger bruchteil - ist mir vollkommen klar, aber hey, steht auf der nächsten Office-Packung oder so: Larrabee vorrausgesetzt? Die Leute, die Larrabee einsetzen wollen, können heute schon mit SSE umgehen - und ich denke, die allermeisten (wenn sie ihre Software nicht extrem mühsam komplett umbauen wollen, damit sie mit OpenCL auch auf der Grafikkarte läuft) werden sich mächtig auf die x86-Kerne vom Larrabee freuen. Und wer heute schon ne OpenCL-Anwendung hat, lässt sie einfach auf Larrabee laufen. Aus dieser Sicht ein Bonus für Larrabee. Ein riesen Bonus.

Wie auch immer, es sind verschiedene Strategien mit dem gleichen Ziel. Und da kann man wie üblich verschiedenster Meinung sein. Ich sehe hier grundsätzlich aber auf beiden Seiten zusätzlichen Aufwand. Zudem ist der Ansatz der Spracherweiterung für mich die saubere Lösung. Aber das mögen Leute, die sich bisher keine Gedanken über solche Themen gemacht haben, sicherlich anders sehen. Mir nützen SSE/AVX Intrinsics jedenfalls überhaupt nichts, wenn ich die parallelen Fähigkeiten meines Toasters ausreizen will. ;)
Und jetzt noch zum Schluss: wenn ich von x86 und Larrabee rede, dann will ich keinen Code auf dem Toaster auführen, sondern gleichzeitig Code für einen PC ohne Larrabee und für einen PC mit Larrabee entwickeln - und das tolle dran ist, das geht ohne Verrenkungen. Mit OpenCL auch möglich, aber wie gesagt, wenn du's bis jetzt nicht nicht getan hast, empfehle ich's dir mal, oder nimm eben von mir aus CUDA, dann wirst du schnell merken, dass du das hassen wirst, wirklich hassen.
Nur weil du dich noch nicht mit SSE/AVX beschäftigt hat, und das propriotär ist, heisst das noch lange nicht, dass OpenCL (weil "Open" im Namen steht oder das sonst irgendwie Standardisiert wird) irgendwie leichter oder eleganter oder auch genialer wird. Wenn du dir nämlich überlegst, welchen Spagat OpenCL machen muss, dann kann das nicht gut gehen: Die müssen nen GPU abstrahieren, damit der gemeine Programmierer (der sich an eine CPU-Umgebung gewöhnt hat) dumm vor sich hin High-Level programmieren kann, ohne zu wissen, dass da Textur-Speicher ist, auf den man lieber nicht wie auf RAM zugreifen sollte, dass da Shader in x verschiedenen Varianten vorhanden sind usw. Klar, 50 mal schneller wirds, weil die rohe Leistung dermassen viel grösser ist, aber wenns potenziell 100-200 mal schneller sein könnte, ist das irgendwie wieder schwach. Aber denke für nen Toaster mit dem GT200-Chip reicht das wohl. Nur Schade ums Geld wenn man meint, man kauft sich 1 Teraflop und kommt dann nicht mal nahe ran - auch wenns möglich wäre (und zwar - meiner Meinung nach - leichter).


Aber nochmals die Bitte, mir gehts nicht wirklich um SSE/LNI <-> OpenCL (das ist wirklich eine Geschmacksfrage, beide haben Vor- und Nachteile, und jeder hat seine bevorzugten Kanditaten) sondern wirklich um die Behauptung, dass ohne zusätzlichen Layer und überhaupt mit Threads riesen Probleme entstehen, weil da nach jeder Instruktion irgendwie ein kompletter Flush des Prozessors stattfinden muss und alle Threads neu verteilt werden müssen und dass sich das Betriebsystem auch noch Leistung raussaugen will (mit riesen Kontextswitches!) um was weiss ich die neue Animation von der Sanduhr berechnen zu lassen.
Man solle mich bitte aufklären, wo das Problem wirklich liegt...
 
Leider funkt dir da bei deiner Überlegung dazwischen, dass über kurz oder lang auch die Grafikkarten virtualisierbar sein werden. N Threads auf N cores kannst du knicken. Du weisst einfach nicht, wie viel Cores du haben wirst. Du wirst KEINE Ahnung haben, was dir der jeweilige Hypervisor zuweisen wird. In die Richtung gehts. Und bis Larab massentauglich ist, werden auch 40-50% der Kundenrechner einen Virtualisierer in irgend einer Form im Bios haben. Verabschiede dich davon, dass du weißt, was du zur Verfügung hast. Auch vom larab wirds unterschiedliche Versionen geben. Du codierst N+4 weil du meinst, das sind immer 4 Threads? Was machst du, wenn Intel dem larab2 oder 3 6 Threads "gleichzeitig" je Core verpasst? Oder nur 2 für die Consumer-Karten?

Pezli, du siehst mir das etwas zu theoretisch (aus Programmierer-Sicht). Ich weiß ohnehin nicht, worum ihr euch da gerade zankt. Solange man mit der Software noch nicht praktisch "an der Karte" arbeiten kann, ist eh alles nur Spekulation, wer wann Switching fährt oder nicht, in wie weit fremde Anwendungen "CUDA-like" einfach als Non-Grafik-Anwendungen parallel auf der Karte arbeiten werden oder in wie weit die Treiber die Kunst der Virtualisierung der GPU-Ressourcen beherrschen werden.

Abwarten und Tee trinken. Ich glaube nicht, dass sich die ersten 2 Generationen auf dem Massenmarkt werden durchsetzen können...

Regards, Bigfoot29
 
Zuletzt bearbeitet: (Typo)
Man kann natürlich nicht fragen, wieviele Kerne einem zu Verfügung stehen. Stimmt, macht heute auch kein Programm mit heutigen CPU's. Man muss natürlich alles statisch programmieren, es gibt keine Anpassung an das momentane System. Klar... Weisst du, wenn ich heute z.B. meinen Raytracer starte, guck ich nach, wieviele Cores im System sind und mache bestimmt nicht mehr Renderthreads als Cores zu Verfügung stehen (und das geht per Software, moderne Technik!).
Genau so verhält es sich auch in der virtualisierten Welt, dort kannst du auch nachfragen, was dir zu Verfügung steht und dich anpassen - geschweige denn dass du überhaupt sowas machen willst O_o Meine Güte, nimm jetzt irgendein Beispiel, das gar nichts mit der Sache zu tun hat...
Es geht hier drum, dass gesagt wurde, dass Larrabee einfach langsam sein muss, weil ständig Threads geswitcht werden müssen, und du kommst mit Virtualisierung der Grafikkarte - na gut, ich sag nicht, dass das nicht vielleicht einmal sein wird, aber das ist dann ein anderes Problem. Überleg dir was nötig ist, wenn du das mit einer normalen Grafikkarte machst (und wenn du da irgendwie nicht auf Thread-Switching kommst, dann kanns sehr gut sein, dass eben auf Larrabee genau so das ein und das selbe Renderprogramm läuft, nur der Input verändert sich, ohne aber das Renderprogramm rauszuswitchen, merkst du was?).

Aber hey, Larrabee wird ja vom Betriebssystem kontrolliert und man kämpft dermassen um die Rechenpower auf der Karte weil da ständig 100 Programme drauf laufen, hab ich vergessen...

[Edit]
Und wie gesagt, "virtualisierter Kundenrechner" - Larrabee ist für Office gedacht, damit äh.. der Herr Büroklammer irgendwie schneller gezeichnet wird? Ich denke im virtualisierten Kundenrechner wird weiterhin ne billige Intel Onboardkarte laufen. Glaub nicht, dass irgendwer Numbercrunching auf virtualisierten Kunden-Office-PCs macht. Ist halt schwierig, was macht man so üblicherweise mit 1 Teraflop/s so zu Hause oder im Büro während man in Excel Daten einträgt, zurücklehnen und Threads switchen lassen?
 
Zuletzt bearbeitet:
pezli schrieb:
Aber warum kommen alle ständig mit Threadswitching und v.a. noch mit dem Betriebssystem, der macht rein gar nichts hier
Doch. Mehr als du dir womöglich vorstellst. Ausserdem bringen nicht alle das Thema, Intel selbst verweist darauf. Wie ich sagte, lies dir das Dokument durch. Offenbar sieht man hier Probleme bezüglich der Effizienz, und die sehe ich ebenfalls. Ob die schwerwiegender Natur oder vernachlässigbar sind, kann man momentan nicht beurteilen.

pezli schrieb:
Wo da ständig Threads geswitcht werden musst du mir wohl oder übel erkären, da blick ich scheinbar nicht durch (und ich will da ne Antwort, wirklich, hilf mir).
Aktuelle Multithreading Betriebssysteme arbeiten mit Zeitscheiben, wie du vielleicht weisst. Jeder Thread bekommt eine gewisse CPU Zeit, unter Windows typisch 20 ms, nach denen geswitched wird. Man nennt das ganze auch Thread Slicing. Und egal ob ein Thread nun weiter läuft, weil eben die Hardware mehrere Threads unterstützt, oder erstmal aussetzen muss (und auch nicht über LOS und 200 Euro einstecken darf), die OS Logik fürs Switching läuft immer. Und das kostet Ressourcen, mehr oder weniger.

pezli schrieb:
Und klar, wenn alles im C-Standard wäre, wäre die Welt ja schön, oh entschuldige dass die Entwicklung weiter geht. Aber wenn du warten willst bis dein Lieblingscompiler die jeweiligen Standards unterstützt... (ich will jetzt nicht wissen, wie lange man am C99 Standard vor der Standardisierung rumdiskutiert hat - und äh, was haben wir heute.. achja, 2009, das sind geschlagene 10 Jahre _nach_ Festlegung, bis die Compiler das mal einigermassen unterstützen - und der C0x - der Name sagts ja schon mehr als deutlich - lässt sich da noch ne geraume Zeit auf sich warten...)
Wenn dir Standards nicht wichtig sind, ist das dein Problem. Für mich sind sie das. Und darüber brauchst du mit mir auch nicht zu diskutieren oder das ins Lächerliche ziehen. Und nur zur Info, es gibt vermutlich keinen Compiler auf dieser Welt, der C bzw C++ vollständig unterstützt. Trotzdem kann man ausreichend nach aktuellem Standard programmieren.

pezli schrieb:
Ja, "Grundsätzlich" ist ne Parallelisierung auf Ebene der Rechenwerke "grundsätzlich" effizienter.
Aber hey, jetzt überleg mal wie sie beim Larrabee auf die riesen Flop/s-Zahlen kommen? Wenn du skalar rechnest bist dann mal so grob über den Daumen 16 mal langsamer, nur so als Grundhinweis :rolleyes:: (und ich will hier einpaar !!! hinzufügen. Ich versuch's mit einem Arg hinkendem Beispiel: Das wäre so das gleiche wie "jo ich programmier auf der Grafikkarte mit einem Shader pro Block, weil Parallelisierung auf Blockebene effizienter ist" (und man darf jetzt ruhig annehmen, dass das wirklich stimmt es geht darum, dass du auf einen Grossteil der Shader verzichtest...))
Du hast die Aussage überhaupt nicht verstanden. Es geht nicht um Pro-Shader Logik, sondern um Pro-Thread Logik.

pezli schrieb:
SIMD muss leider sein bei Larrabee, leider leider. Du MUSST SIMD (=Vektorisieren) UND Threads parallelisieren, nur eines allein ist nicht...
Doch, genau das machen ja ATI und nVidia.

pezli schrieb:
Du kannst jetzt sagen, dass du dann vom Compiler alles vektorisiert haben willst - funktioniert auch schon (mehr schlecht als recht), aber auch nur, wenn du entsprechend programmierst, aber Gedanken darüber musst dir jetzt leider schon machen - und dann kannst du auch nur hoffen, dass es klappt.
Das sehe ich anders. Threading wurde nicht geschaffen, um dieselbe Aufgabe zu partitionieren, sondern um verschiedene Aufgaben zu parallelisieren. Ersteres ist ein Paradigma, welches sich leider etabliert hat. Glücklicherweise gibt es einige schlaue Köpfe, die sich darüber Gedanken machen, um das bei MPUs nicht ausufern zu lassen. Beim Larrabee haben die aber scheinbar nicht mitgewirkt.

pezli schrieb:
Und dass SSE "nur in aller seltensten Fällen" benutzt wird... Glaubst du wirklich, dass irgendeine Software, die heute schnell ist, ohne handgeschriebenen SSE-Code auskommt?
Ja. Ich würde sogar fast sagen, die meisten. Diverse Compiler beherrschen das mittlerweile recht gut.

pezli schrieb:
Das wird alles mit den Intrinsics (und sehr oft sogar inline Assembler) gemacht. Jeder Video-Codec, Photoshop...
Codecs sind nochmal etwas anderes als "normale" Anwendungen. Das war gar nichts das Thema. Dort kann es durchaus sein, dass man auf Assembler Ebene werkelt. Und dass Photoshop noch recht viel händisch per Assembler oder Intrinsics macht, wage ich zu bezweifeln. Der Support für GPUs wird ja permanent besser.

pezli schrieb:
und ich denke, die allermeisten (wenn sie ihre Software nicht extrem mühsam komplett umbauen wollen, damit sie mit OpenCL auch auf der Grafikkarte läuft) werden sich mächtig auf die x86-Kerne vom Larrabee freuen.
Du solltest nicht so viel in ungelegte Eier interpretieren. Ich glaube nicht, dass man Anwendungen mit weniger Aufwand Larrabee tauglich machen können wird. Im Gegenteil, ich denke, viele werden sich am Ende ärgern. Während jemand, der auf OpenCL setzt, seinen Code für PowerPC, ARM oder was auch immer beibehalten kann und einfach mit einem entsprechenden Compiler und Runtime neu übersetzt, darf der Larrabee Entwickler seine Software wieder überarbeiten oder sogar neu schreiben. Ein riesen Nachteil mit Larrabee.

pezli schrieb:
Und jetzt noch zum Schluss: wenn ich von x86 und Larrabee rede, dann will ich keinen Code auf dem Toaster auführen, sondern gleichzeitig Code für einen PC ohne Larrabee und für einen PC mit Larrabee entwickeln - und das tolle dran ist
Daran ist gar nichts toll. Mit OpenCL entwickle ich nur einmal und nicht x-mal, jeweils einmal für die jeweilige Plattform.

pezli schrieb:
Mit OpenCL auch möglich, aber wie gesagt, wenn du's bis jetzt nicht nicht getan hast, empfehle ich's dir mal, oder nimm eben von mir aus CUDA, dann wirst du schnell merken, dass du das hassen wirst, wirklich hassen.
Keine Sorge, das werde ich ausgiebiger tun, sobald eine neue Grafikkarte in meinem Rechner ist. Und das wird definitiv kein Larrabee sein.

pezli schrieb:
Nur weil du dich noch nicht mit SSE/AVX beschäftigt hat
Mach dir mal keine Sorgen, ich habe genug mit SSE programmiert. Und noch mehr mit Assembler. Deshalb weiss ich zu schätzen, wenn mir benötigte Funktionalität High-Level bereitgestellt wird. Und glaube es mir oder auch nicht, das wirst du irgendwann auch. ;)

pezli schrieb:
Wenn du dir nämlich überlegst, welchen Spagat OpenCL machen muss, dann kann das nicht gut gehen: Die müssen nen GPU abstrahieren, damit der gemeine Programmierer (der sich an eine CPU-Umgebung gewöhnt hat) dumm vor sich hin High-Level programmieren kann, ohne zu wissen, dass da Textur-Speicher ist, auf den man lieber nicht wie auf RAM zugreifen sollte, dass da Shader in x verschiedenen Varianten vorhanden sind usw.
Erstmal ist OpenCL nicht GPU exklusiv. Wieso habe ich das Gefühl, dass du dich noch nicht wirklich damit befasst hast? Und zweitens, diese Mechanismen sind nichts neues und kennt man bereits von APIs wie OpenGL oder DirectX Graphics.

pezli schrieb:
Aber nochmals die Bitte, mir gehts nicht wirklich um SSE/LNI <-> OpenCL (das ist wirklich eine Geschmacksfrage, beide haben Vor- und Nachteile, und jeder hat seine bevorzugten Kanditaten) sondern wirklich um die Behauptung, dass ohne zusätzlichen Layer und überhaupt mit Threads riesen Probleme entstehen, weil da nach jeder Instruktion irgendwie ein kompletter Flush des Prozessors stattfinden muss und alle Threads neu verteilt werden müssen und dass sich das Betriebsystem auch noch Leistung raussaugen will (mit riesen Kontextswitches!) um was weiss ich die neue Animation von der Sanduhr berechnen zu lassen.
Das hat niemand auch nur ansatzweise in dieser Form behauptet. Schon mal daran gedacht, dass du hier völlig überreagierst und Aussagen unterbewusst misinterpretierst?


Sry, wenn ich dir das so knallhart sagen muss, aber du hängst noch in Denkweisen von vor 10 Jahren oder mehr fest. Und das tut Intel mit seiner x86 Philosophie leider auch.
 
Zuletzt bearbeitet:
gruffi schrieb:
Aktuelle Multithreading Betriebssysteme arbeiten mit Zeitscheiben, wie du vielleicht weisst. Jeder Thread bekommt eine gewisse CPU Zeit, unter Windows typisch 20 ms, nach denen geswitched wird. Man nennt das ganze auch Thread Slicing. Und egal ob ein Thread nun weiter läuft, weil eben die Hardware mehrere Threads unterstützt, oder erstmal aussetzen muss (und auch nicht über LOS und 200 Euro einstecken darf), die OS Logik fürs Switching läuft immer. Und das kostet Ressourcen, mehr oder weniger.
Und das tut Intel mit seiner x86 Philosophie leider auch.

Das dazwischen werd ich versuchen sein lassen, sind wir einfach anderer Ansicht. Und dass ATIs und nVidias Karten nichts mit SIMD zu tun und deswegen sich auch nicht drum kümmern müssen will jetzt auch nicht anfangen zu erklären. Aber die beiden Quotes da oben zusammen sagen mir einfach, dass du x86 einfach als das Gleiche siehst egal wo und wofür eingesetzt, wenn x86 dann OS -> Pre-emption -> Time-Slicing. Fest in Stein gehauen.

Das hat niemand auch nur ansatzweise in dieser Form behauptet. Schon mal daran gedacht, dass du hier völlig überreagierst und Aussagen unterbewusst misinterpretierst?
Mag sein, dass ich v.a. überreagiere (und versuche runterzukommen), aber wenn ich die Aussage mit "Intel sieht Probleme beim aufwendigen Threadswitching" in Kombination mit "Larrabee ist durch zwangsweise Parallesierung auf Softwarethread-Ebene langsam" unterbewusst misinterpretiere, dann tuts mir leid.
[edit2] Um das ganz klar zu stellen: ich sehe auch derbe Probleme wenn ständig geswitcht wird, das ist klar [/edit]
Ich behaupte einfach, dass Larrabee eben nicht in jedem Fall Timeslicing betreibt, v.a. weil Intel selber gesagt hat, dass man _keinen_ Threadscheduler vorgibt - man ist frei seinen eigenen zu schreiben. Vielleicht hast du das verpasst? Und nur so als Hinweis: wo kein Timeslice-Scheduler da ist, auch kein ständiges Switching, oder irr ich mich da? Und allein durch die Tatsache, dass man einen eigenen schreiben kann, wirds wohl kaum der Scheduler vom OS sein, der das alles handhabt? Und überhaupt OS.. wenn, dann ists der Treiber von Larrabee der das macht, und da Intel ja offensichtlich weiss, dass es ein Problem ist, wird wohl alles dafür getan werden, dass möglichst nicht geswitcht wird (jaja ich weiss.. Kristallkugel, man weiss es nicht, und bei Intel arbeiten sowieso nur Idioten). Steht btw auch alles im Paper oben - und weitere Infos auch auf den Talk-Slides von GDC 2009 und Siggraph 2008.

Mag sein dass ich mich selber zu wenig mit OpenCL (dafür mit CUDA, und so viel anders wirds nicht sein, da nVdia mächtig Input gegeben hat) beschäftigt habe, aber du mind. eben so wenig mit Larrabee. Du solltest v.a. von der Timeslice Idee wegkommen - und dann nochmals neutral drüber nachdenken, wie man gewisse Aufgaben effizient Parallisieren kann. V.A. kannst du auch nicht alles in das OpenCL-Korsett zwängen und meinen dann sei alles schnell und parallelisiert. Nichts gibts geschenkt, auch in deinem OpenCL-Paradies kannst du nicht alles parallel berechnen, die grundsätzlich gleichen Probleme und Fragen bleiben. Wenn ein Algorithmus nicht inherent parallelisierbar ist, dann bleibt das auch mit OpenCL so - und falls es das ist, kannst du das auf beide Modelle abbilden, glaub mir. Welches einem besser gefällt, darüber wollen wir nicht streiten. Aber dann ist das eine nicht wirklich schlechter als das Andere - ausser dem Vorteil, dass OpenCL auch sonst überall drauf läuft - aber dazu weiter unten mehr.

Einfach eine Frage noch: Wozu wenn nicht für Codecs und z.B. Photoshop oder Rendering (ganz Allgemein lineare Algebra-lastige Algorithmen) willst du denn GPUs oder LRB einsetzen? Da gelten leicht andere Paradigmen und Ideologien als in den schönen heilen Software-Engineering-Welt, wo man ganz bewusst auf low-level performancemässig optimale Tricks und Hacks verzichtet, weil das algorithmische Optimum ausreicht.
Ich bin vollkommen dafür, dass man im Allgemeinen die gängigen SE-Prinzipien einhält - ich will keine Börsensoftware oder geschweige denn Flugzeugkontrollsoftware die möglichst noch von Hand in Assembler (oder in C oder C++) geschrieben wurde damit sie möglichst schnell läuft, wirklich nicht, hallo Fehler, hallo Abstürze (nicht nur vom Programm...). Sie soll fehlerfrei sein, möglichst typensicher, möglichst standardkonform, am besten so konstruiert, das sie beweisbar korrekt ist (auch möglich mit bestimmten Sprachen) - und v.a. auch portabel und pflegeleicht.
Nur bin ich der Meinung, dass gewisse Sachen, wenn du maximale Performance willst, wirklich nur im Weg stehen, und bewusst darauf verzichtet werden muss, weil man eben sonst schnell einmal mit einer 1 Teraflop/s Karte auf 50 Gigaflop/s rumtümpelt (Zahlen frei erfunden und entsprechen nicht den Tatsachen, ich hab keine Kristallkugel, will nur mein Argument unterstreichen, der tatsächliche Unterschied kann auch, wenn ich mich irre = 0 sein! Aber um ein echtes Beispiel zu erwähnen: die angesprochenen GPU-real-time Raytracer wie weiter oben glaub angesprochen die auf nVidia GPUs laufen, sind zwar sauschnell verglichen mit einem Raytracer der auf der CPU läuft, weil die rohe Leistung der GPU halt extrem viel höher ist, aber wenn man die Effizienz vergleicht, siehts dann sehr schnell, sehr mies aus für den GPU-Tracer - eine Folge davon, dass GPUs eben nicht zum generellen Rechnen gedacht sind, und wenn man sich dann vorstellt, du nimmst die CPU-Platform, und gibst der die gleiche Leistung wie der GPU - hossa...).

Nun noch zur Portabilität von OpenCL: Ich sage auch nicht, dass OpenCL eine schlechte Idee ist, wenn du genau die gleiche Software wie du auf Larrabee laufen lässt auch auf einem 1GHz ARM laufen lassen willst, bloss frag ich mich, ob da wirklich so viel Sinn dahinter steckt? Wir reden hier nicht von Bürosoftware sondern aufwendingen Physiksimulationen oder sowas - ansonsten wie ich schon geschrieben hab, nimmst wohl kaum ne Maschine wie ne GT200 oder Larrabee...

Ich berechne keine Wettervorhersage auf einem iPhone, nur weil ich Standard-C/OpenCL geschrieben hab und der Compiler mir das kompiliert, und die Software am Ende sogar drauf läuft.


Ich kanns dann doch nicht sein lassen, auf einige Zwischenquotes zu reagieren:
Zum Thema Portierbarkeit auf x86-Larrabee:
Du solltest nicht so viel in ungelegte Eier interpretieren. Ich glaube nicht, dass man Anwendungen mit weniger Aufwand Larrabee tauglich machen können wird.
Ungelegte Eier stimmt halt einfach nicht - Intel hat die Intrinsics schon lange vorgestellt und ein Headerfile mit der skalaren Implementation aller Befehle online gestellt, du kannst also heute schon deine Anwendungen für Larrabee compilieren - sie laufen halt einfach langsam auf der CPU. Ist jeder frei sich ein Bild zu machen. Die Meinungen hierdrüber können auch wieder auseinander gehen, aber Bemerkungen von wegen man weiss nichts und blubb stimmen nicht mehr so Ganz, Intel ist mit vielem rausgerückt.

Erstmal ist OpenCL nicht GPU exklusiv. Wieso habe ich das Gefühl, dass du dich noch nicht wirklich damit befasst hast? Und zweitens, diese Mechanismen sind nichts neues und kennt man bereits von APIs wie OpenGL oder DirectX Graphics.
Hab ich was von exklusiv geschrieben? Nein, ich sage nur, dass OpenCL einen riesen Spagat machen muss zwischen 2 Welten, die komplett anders aussehen (eben WEIL das Modell für GPU und CPU völlig versteckt funktionieren muss...), dass hier grössere und kleinere Kompromisse in Freiheit für den Programmierer und Anpassung auf die jeweilige Platform nötig sind wirst ja wohl nicht bestreiten? Du kannst einfach keine Kugel durch ein quadratisches Loch pressen ohne etwas abzuschleifen.
Deswegen behaupt ich, einfach frei aus der Luft gegriffen, dass OpenCL für eine GPU vielleicht das Optimum rausholt, weil da eh Kompromisse am Programmierungsmodell gemacht werden müssen (siehe CUDA, und bitte Vergleich OpenCL nicht mit OpenGL oder DirectX, das disqualifiziert dich sofort...), aber nicht unbedingt für eine dermassen vielfältig einsetzbares Modell wie x86. Das war meine Grundaussage, warum man sich überhaupt x86 auf Larrabee antun soll, ich sehe da ne Möglichkeit, einbisschen (und um zu spekulieren sag ich: nicht nur einbisschen...) mehr Performance rauszudrücken als mit OpenCL - auf Kosten der Portierbarkeit natürlich.
Aber ich rede wieder von OpenCL vs x86 - worüber ich eigentlich nicht wollte -.-

Mach dir mal keine Sorgen, ich habe genug mit SSE programmiert. Und noch mehr mit Assembler. Deshalb weiss ich zu schätzen, wenn mir benötigte Funktionalität High-Level bereitgestellt wird. Und glaube es mir oder auch nicht, das wirst du irgendwann auch.
Wenn ich SSE in die Hand nehme und ich auch noch C++ haben darf, kommt um alles zuerst einmal eine Wrapperklasse (alles inline, damit keine Performance-Einbussen entstehen) und ich schreib danach keinen einzigen Intrinsic irgendwo sonst im Programm-Code. Ich finds auch schade, dass dafür keine direkte Unterstützung in der Sprache mitgeliefert wird, aber ich heul dem nicht hinterher. Genau so wie du nicht hinterher heulst, dass kein Compiler keinen einzigen C-Standard komplett implementiert.

Natürlich schätze ich heute schon die Vorteile von High-Level-Sprachen - wenn ich nicht grad eine Methode hab, deren Ausführung ohne Optimierungen 1h dauert und mit low-level-Optimierungen auf einen Zwanzigstel runtergebracht werden könnte. Wie gesagt, für Herr Büroklammer braucht man keinen Larrabee, um ein Bild in Photoshop zu laden auch nicht, aber wenn's dann ums Filtern geht, könnt man sich doch mal überlegen, ob man nicht bisschen weiter unten versucht Performance rauszudrücken, nicht wahr?


[edit3]
Und grundsätzlich kommts mir vor, dass du hier einen Krieg gegen x86 im Allgemeinen fährst, am liebsten würdest du RISCs in jedem PC sehen schätz ich, wohl deswegen auch die vielen Erwähnungen von ARM usw. Damit verfehlst du aber die Diskussion wie ich finde, ansonsten darfst du gerne im Gedanken Larrabee mit RISC-Kernen vorstellen, Threading usw trifft da dann genau so zu.

Ich weiss einfach nicht, warum du dich so fest an die GPUs klammerst, da du ja schon mal gar nie auf denen programmiert hast und mir erzählen willst, wie angenehm das ist? Weil offensichtlich ist ein allgemeines Modell wirklich nur Kacke und man nimmt sich lieber ein enges Korsett und muss zuerst mal seine ganze Anstrengung darauf konzentrieren, sein Problem da reinzubringen anstatt sich direkt Gedanken zu machen, wie man das Problem mit dem Programmierungsmodell optimal angeht.

Aber ja, ich höre auf nachzuhaken. Was ich hören wollte hab ich gehört - nämlich dass das Threading kein Problem sein _muss_. Und genau deswegen bin ich überhaupt angesprungen - von wegen es bräuchte einen Zusatzlayer und alles sei eh nur Marketing und überhaupt.

Wie auf einer Folie schon stand "lack of restrictions on Larrabee can be somewhat bewildering".
 
Zuletzt bearbeitet:
pezli schrieb:
Das dazwischen werd ich versuchen sein lassen, sind wir einfach anderer Ansicht. Und dass ATIs und nVidias Karten nichts mit SIMD zu tun und deswegen sich auch nicht drum kümmern müssen will jetzt auch nicht anfangen zu erklären. Aber die beiden Quotes da oben zusammen sagen mir einfach, dass du x86 einfach als das Gleiche siehst egal wo und wofür eingesetzt, wenn x86 dann OS -> Pre-emption -> Time-Slicing. Fest in Stein gehauen.
x86 ist x86. Was soll man da nicht als das gleiche ansehen? Mit Larrabee wird Microsoft mit Sicherheit nicht den Windows Kernel ändern. Und ISA bleibt ebenfalls ISA. x86 mag für Host CPUs iO sein, HPC Hardware scheint mir aber nicht effizient genug. Übrigens, zumindest ATI hat sehr wohl etwas mit SIMD zu tun, sogar MIMD. Nur wird das komplett auf einer Ebene geregelt und nicht wie bei Intel auf zwei.

pezli schrieb:
Mag sein, dass ich v.a. überreagiere (und versuche runterzukommen), aber wenn ich die Aussage mit "Intel sieht Probleme beim aufwendigen Threadswitching" in Kombination mit "Larrabee ist durch zwangsweise Parallesierung auf Softwarethread-Ebene langsam" unterbewusst misinterpretiere, dann tuts mir leid.
Da du dir das Dokument scheinbar immer noch nicht genauer angeschaut hast, zitiere ich dir erste Aussage.
Although P-threads is a powerful thread programming API, its thread creation and thread switching costs may be too high for some application threading.
Das sind keine Phantasien, sondern stammt von Intel selbst. Und die zweite Aussage stammt nicht von mir. Daher solltest du dich an denjenigen wenden, von dem sie stammt.

pezli schrieb:
Ich behaupte einfach, dass Larrabee eben nicht in jedem Fall Timeslicing betreibt, v.a. weil Intel selber gesagt hat, dass man _keinen_ Threadscheduler vorgibt - man ist frei seinen eigenen zu schreiben.
Dir ist schon bewusst, dass der Thread Scheduler fester Bestandteil des Kernels ist? Du musst dich also mindestens auf Ring0 begeben für ein Replacement. Sofern sowas überhaupt möglich ist. Keine Ahnung.
Wie auch immer, das ist weder nativ noch stabil per se. Workarounds für schwache Konzepte mögen zwar auch zum Ziel führen, die Frage ist nur, für welchen Preis.

pezli schrieb:
Und nur so als Hinweis: wo kein Timeslice-Scheduler da ist, auch kein ständiges Switching, oder irr ich mich da?
Theoretisch ja, praktisch ist das eine reine Illusion.

pezli schrieb:
Du solltest v.a. von der Timeslice Idee wegkommen - und dann nochmals neutral drüber nachdenken, wie man gewisse Aufgaben effizient Parallisieren kann.
Mach dir mal keine Sorgen. Darüber mache ich mir schon länger Gedanken, da ich selbst an einem Sprach Layer arbeite, in dem Parallelisierung ein Kernpunkt darstellt. Larrabee ist schlichtweg ein suboptimaler Ansatz. Da muss man nichts schön reden. Keine Ahnung, welche Intentionen du hier verfolgst, Larrabee als irgendeine neue Wundertechnik anzupreisen. Eine Basis hat das jedenfalls nicht. Aber darüber können wir uns ja nochmal nach dem Launch unterhalten. ;)

pezli schrieb:
V.A. kannst du auch nicht alles in das OpenCL-Korsett zwängen und meinen dann sei alles schnell und parallelisiert. Nichts gibts geschenkt, auch in deinem OpenCL-Paradies kannst du nicht alles parallel berechnen, die grundsätzlich gleichen Probleme und Fragen bleiben. Wenn ein Algorithmus nicht inherent parallelisierbar ist, dann bleibt das auch mit OpenCL so
Das war auch gar nicht das Thema. Also bleibe bitte bei diesem. Ausflüchte sind übrigens Anzeichen fehlender Argumente. Nur so zur Info.

pezli schrieb:
Einfach eine Frage noch: Wozu wenn nicht für Codecs und z.B. Photoshop oder Rendering (ganz Allgemein lineare Algebra-lastige Algorithmen) willst du denn GPUs oder LRB einsetzen?
Es gibt vielfältige Möglichkeiten. Angefangen bei Rendering, über Cloud Computing bis hin zu Forschung. Dafür brauche ich keine handgestrickten Codecs. Im Gegenteil, es gibt einige Codecs, die gar nicht so gut parallelisierbar sind.

pezli schrieb:
Nur bin ich der Meinung, dass gewisse Sachen, wenn du maximale Performance willst, wirklich nur im Weg stehen, und bewusst darauf verzichtet werden muss, weil man eben sonst schnell einmal mit einer 1 Teraflop/s Karte auf 50 Gigaflop/s rumtümpelt
Wie gesagt, du denkst noch in zu alten Strukturen. Diese Probleme gibt es heutzutage in der Form nicht mehr bzw liegen an anderer Stelle. Dass hier aber näher zu erläutern, würde den Rahmen sprengen und ist auch nicht der richtige Ort dafür.

pezli schrieb:
Aber um ein echtes Beispiel zu erwähnen: die angesprochenen GPU-real-time Raytracer wie weiter oben glaub angesprochen die auf nVidia GPUs laufen, sind zwar sauschnell verglichen mit einem Raytracer der auf der CPU läuft, weil die rohe Leistung der GPU halt extrem viel höher ist, aber wenn man die Effizienz vergleicht, siehts dann sehr schnell, sehr mies aus für den GPU-Tracer - eine Folge davon, dass GPUs eben nicht zum generellen Rechnen gedacht sind, und wenn man sich dann vorstellt, du nimmst die CPU-Platform, und gibst der die gleiche Leistung wie der GPU - hossa...).
Wer sagt, dass sie die gleiche Rohleistung hat? Wenn Larrabee irgendwann mal rauskommen sollte, kann man nach bisherigen Infos von 2 TFLOPS ausgehen. Zu dem Zeitpunkt wird ATI aber wohl schon bei 5 oder 10 TFLOPS sein. Alles SP selbstverständlich. Ausserdem habe ich noch nirgendwo gesehen, dass Grafikkarten von ATI oder nVidia bei Raytracing weniger effizient sein sollen. Aus welchem Märchenbuch stammt das denn?

pezli schrieb:
Nun noch zur Portabilität von OpenCL: Ich sage auch nicht, dass OpenCL eine schlechte Idee ist, wenn du genau die gleiche Software wie du auf Larrabee laufen lässt auch auf einem 1GHz ARM laufen lassen willst, bloss frag ich mich, ob da wirklich so viel Sinn dahinter steckt? Wir reden hier nicht von Bürosoftware sondern aufwendingen Physiksimulationen oder sowas
Nein, tun wir nicht. GPGPU soll ja irgendwann mal Mainstream werden. Also von einfachster Wiedergabe von irgendwelchen Medien bis hin zu RT Raytracing. Selbst Physik ist hier nicht unwichtig, siehe Havok oder PhysX.

pezli schrieb:
Ungelegte Eier stimmt halt einfach nicht - Intel hat die Intrinsics schon lange vorgestellt und ein Headerfile mit der skalaren Implementation aller Befehle online gestellt, du kannst also heute schon deine Anwendungen für Larrabee compilieren - sie laufen halt einfach langsam auf der CPU. Ist jeder frei sich ein Bild zu machen. Die Meinungen hierdrüber können auch wieder auseinander gehen, aber Bemerkungen von wegen man weiss nichts und blubb stimmen nicht mehr so Ganz, Intel ist mit vielem rausgerückt.
Ok, ungelegt ist die falsche Formulierung. Aber gerade da OpenCL praktisch das gleiche gemacht hat, sehe ich nicht, wo Larrabee weniger aufwändig sein soll.

pezli schrieb:
Hab ich was von exklusiv geschrieben? Nein, ich sage nur, dass OpenCL einen riesen Spagat machen muss zwischen 2 Welten, die komplett anders aussehen
Nein. OpenCL holt nur das nach, was vor 20 oder 30 Jahren noch kein Thema war. Auseinander geht da überhaupt nichts. Über die Semantik können wir ja nochmal sprechen. Aber wer sich nicht zu schade, SSE Intrinsics zu benutzen, für den sind solche Spracherweiterungen reiner Syntaxzucker.

pezli schrieb:
Und grundsätzlich kommts mir vor, dass du hier einen Krieg gegen x86 im Allgemeinen fährst
Du hast Recht, das kommt dir nur so vor. Ich habe gegen x86 überhaupt nichts. Für Host CPUs durchaus iO. Nur für HPC halte ich es für die falsche Lösung. Und mal abgesehen von Intel, scheint das der Rest der Branche genauso zu sehen. Intel selbst wollte ja mit dem Itanic auf diesem Markt Fuss fassen. Auch wenn es ein Scheitern auf ganzer Ebene war. Ich will nicht unken, aber das gleiche Schicksal kann auch Larrabee ereilen.

pezli schrieb:
am liebsten würdest du RISCs in jedem PC sehen schätz ich
Mach dich nicht lächerlich. Aktuelle x86 CPUs sind nach dem Frontend sowieso nur noch RISC.

pezli schrieb:
wohl deswegen auch die vielen Erwähnungen von ARM usw.
Viele? Ich habe ARM genau einmal erwähnt. Du darfst aber auch gerne jede beliebige andere Plattform einsetzen. Du bist schon ziemlich neurotisch. :rolleyes:

pezli schrieb:
Ich weiss einfach nicht, warum du dich so fest an die GPUs klammerst, da du ja schon mal gar nie auf denen programmiert hast und mir erzählen willst, wie angenehm das ist?
Ich brauche dafür auch keine GPU. Mal abgesehen zu Testzwecken. Schliesslich programmiere ich nicht für eine bestimmte Hardware, sondern für eine bestimmte Aufgabe. Auch ein Problem deinerseits, wo du immer noch in der Vergangenheit festhängst.

pezli schrieb:
Weil offensichtlich ist ein allgemeines Modell wirklich nur Kacke und man nimmt sich lieber ein enges Korsett und muss zuerst mal seine ganze Anstrengung darauf konzentrieren, sein Problem da reinzubringen anstatt sich direkt Gedanken zu machen, wie man das Problem mit dem Programmierungsmodell optimal angeht.
Eben das ist es. Nur scheinst du zu verwechseln, was was ist. Um es konkret zu sagen, Larrabee ist das enge und starre Konzept. OpenCL, völlig unabghängig davon, welche Hardware zugrunde liegt, ist der Ansatz für ein optimales Programmmiermodell.

pezli schrieb:
Und genau deswegen bin ich überhaupt angesprungen - von wegen es bräuchte einen Zusatzlayer und alles sei eh nur Marketing und überhaupt.
Den zusätzlichen Layer brauchst du aber. So ignorant zu sein, hilft dir nicht weiter. Das solltest du nun aus der Diskussion mitbekommen haben. Auf Ebene des Entwicklers sind es Intrinsics oder was auch immer, auf Ausführungsebene eine eigene Runtime. Und mehr benötigen Lösungen wie OpenCL auch nicht. Nur mit dem Unterschied, anstatt proprietären Intrinsics standardisierte Spracherweiterungen nutzen zu können.
 
Zuletzt bearbeitet:
gruffi schrieb:
Das sind keine Phantasien, sondern stammt von Intel selbst. Und die zweite Aussage stammt nicht von mir. Daher solltest du dich an denjenigen wenden, von dem sie stammt.
Ich kann lesen, aber du liest und denkst eben direkt was du willst, siehe unten.
Dir ist schon bewusst, dass der Thread Scheduler fester Bestandteil des Kernels ist? Du musst dich also mindestens auf Ring0 begeben für ein Replacement. Sofern sowas überhaupt möglich ist. Keine Ahnung.
Wie auch immer, das ist weder nativ noch stabil per se. Workarounds für schwache Konzepte mögen zwar auch zum Ziel führen, die Frage ist nur, für welchen Preis.
Ja sicher ist ein Scheduler fester Bestandteil des Kernels. Ich bin langsam ganz verzweifelt, wie bring ich dir die Idee aus dem Kopf, dass die Larrabee Kerne NICHT zwangsläufig vom Windows-Kernel verwaltet werden?! Wie schwer von Begriff bist du? Kannst du nicht für eine Minute (während du meine Beitrag oben liest, von dieser Idee abkommen? Meine Fresse...) Ich muss gar nicht in Ring0, so mal rein gar nicht, Larrabee läuft für sich allein, genau so wie die Grafikkarte, sie kommunizieren nur mit einander, kein Programm von Windows hüpft von selber drauf... Du kannst alles was du vom Scheduler von allen OS in der Welt einfach auf der Seite lassen. Aber ja, neurotisch in der Hinsicht bis du ganz leicht mehr als ich.

Theoretisch ja, praktisch ist das eine reine Illusion.
Eben, open your Mind, ne? Siehe oben...

Mach dir mal keine Sorgen. Darüber mache ich mir schon länger Gedanken, da ich selbst an einem Sprach Layer arbeite, in dem Parallelisierung ein Kernpunkt darstellt. Larrabee ist schlichtweg ein suboptimaler Ansatz. Da muss man nichts schön reden. Keine Ahnung, welche Intentionen du hier verfolgst, Larrabee als irgendeine neue Wundertechnik anzupreisen. Eine Basis hat das jedenfalls nicht. Aber darüber können wir uns ja nochmal nach dem Launch unterhalten. ;)
Als Wundertechnik nicht, aber wenn jemand einfach eine Idee falsch versteht, und deswegen das Ganze Produkt als Scheisse bezeichnet, dann versuch ich korrigierend einzugreifen...

Wie gesagt, du denkst noch in zu alten Strukturen. Diese Probleme gibt es heutzutage in der Form nicht mehr bzw liegen an anderer Stelle. Dass hier aber näher zu erläutern, würde den Rahmen sprengen und ist auch nicht der richtige Ort dafür.
Du weisst du, zu diesem Thema gibts nicht nur uns zwei, und da ich mich von dir nicht richtig verstanden fühle, werd ich weiterhin nicht auf diese Seitenhiebe von dir eingehen. Dinge ändern sich ständig, jeder passt sich an, und die Informatik ist so unterschiedlich, für nichts gibt es "ein und das Beste".

Wer sagt, dass sie die gleiche Rohleistung hat? Wenn Larrabee irgendwann mal rauskommen sollte, kann man nach bisherigen Infos von 2 TFLOPS ausgehen. Zu dem Zeitpunkt wird ATI aber wohl schon bei 5 oder 10 TFLOPS sein. Alles SP selbstverständlich. Ausserdem habe ich noch nirgendwo gesehen, dass Grafikkarten von ATI oder nVidia bei Raytracing weniger effizient sein sollen. Aus welchem Märchenbuch stammt das denn?
Gedankenbeispiel, Gedankenbeispiel, _wenn_ es die gleiche Leistung hätte. Und schlechte Effizienz? Nimm z.B. ganz nüchtern zwei Tracer, die das gleiche tun (wird nicht 1:1 der gleiche Algorithmus sein, weil du auf der GPU halt Saltos machen musst auch wenn du nur einfach joggen willst) aber die pro Ray das gleiche berechnen, dann wirst du mit der GPU wenn man die Rays/FLOPS als Richtlinie nimmt, unterhalb einer CPU liegen. Naja, jetzt kommt sofort wie aus dem Rohr geschossen: FLOPS kannst nicht vergleich. Ok, kann man nicht direkt. "Ich ziehe mein Argument zurück, keine weiteren Fragen". Aber es geht leider überall in die Richtung - zuminest bis unsere GPUs dann keine GPUs mehr sind, sondern auch noch ein allgemeineres Programmierungsmodell erlauben.

Und wenn du sagst, dass bis zum Launch 5-10 TFLOPS seitens der GPUs drin liegen, dann glaub ich das auch, wobei ich eher auf 4-5 tippen würde und weniger auf 10. Dann muss mir aber auch niemand erklären wollen müssen, dass LRB langsamer sein wird - natürlich (und ich mein jetzt nicht direkt dich, gruffi, hier mit :)). Deswegen wärs auch cool, dass man dann tatsächlich die Leistung mit ähnlich schnellen Grafikkarten vergleicht, wenn man die Architektur vergleichen will, da sind wir uns schon einig? Ausserdem dacht ich, dass man die 2 TFLOPS mit LRB nicht erreichen wird, eher "über 1 TFLOPS" was wohl weiter weg von 2 ist. Ob das wirtschaftlich korrektes Denken ist, weil LRB tritt zwangsläufig gegen diese neuen Karten an, bezweifle ich, aber mir gehts echt nicht darum...

Ok, ungelegt ist die falsche Formulierung. Aber gerade da OpenCL praktisch das gleiche gemacht hat, sehe ich nicht, wo Larrabee weniger aufwändig sein soll.
Ja ich weiss warum du das nicht einsehen willst. Glaub da war so ein Quote wie "ich _werde_ mich damit beschäftigen". Guck dir das Programming Model an, das sie da haben, ein Geflicke mit Zeugs und Sachen damits auch auf den heute noch sehr starren GPUs funktioniert. Siehs doch endlich ein meine Güte, GPUs sind zwar programmierbar, aber leider Gottes immer noch extrem unflexibel, v.a. das Speichermodell. Und du brauchst hier gar nicht zu antworten, wirklich, wenn du dich erst damit beschäftigen willst, und jetzt gross Reden schwingst von wegen, das ist des Weisheits letzter Schluss, dann kannst mir gern kommen, dass ich 10 Jahre hänge, auf sowas verzichte ich gern. Und mich kotzt es jetzt schon an, dass das OpenCL jetzt so auch wirklich 10 Jahre bleiben wird. Der Standard kommt einpaar Jahre zu früh... Man wird sich in 5 Jahren drüber ärgern, sag ich dir, weil man nicht gewartet hat, bis man ein offeneres Modell machen konnte.


Nein. OpenCL holt nur das nach, was vor 20 oder 30 Jahren noch kein Thema war. Auseinander geht da überhaupt nichts. Über die Semantik können wir ja nochmal sprechen. Aber wer sich nicht zu schade, SSE Intrinsics zu benutzen, für den sind solche Spracherweiterungen reiner Syntaxzucker.
Mit der Syntax gibts keine Probleme, mit der Semantik auch nicht, ich seh das Programming Model einfach als die grösste Behinderung an, die man einführen konnte, wie gesagt. Und das kommt wie gesagt daher, dass man auf einer beschränkten Architektur, jetzt alles machen können will, die wirklich von Grund aus nicht dafür vorgesehen ist. Und du erzählst mir hier weiterhin dass das das absolut Beste ist. CUDA war ne Flicklösung von wegen "wir könntens mal versuchen". Also Hirn angestrengt wie man das den Leuten am besten zusammen schustern kann. Aber das war trotzdem ein "wir basteln jetzt aus dem was wir haben das bestmögliche" - nur ist das halt nicht genial, sorry. Das bestmögliche, aber eben.. es konnte nicht genial werden. OpenCL ist da nicht gross anders, sorry tut mir leid. Weil die GPUs ändern konnten sie in der Zwischenzeit leider auch nicht.

Du hast Recht, das kommt dir nur so vor. Ich habe gegen x86 überhaupt nichts. Für Host CPUs durchaus iO. Nur für HPC halte ich es für die falsche Lösung. Und mal abgesehen von Intel, scheint das der Rest der Branche genauso zu sehen. Intel selbst wollte ja mit dem Itanic auf diesem Markt Fuss fassen. Auch wenn es ein Scheitern auf ganzer Ebene war. Ich will nicht unken, aber das gleiche Schicksal kann auch Larrabee ereilen.
Gut, dass ein general purpose PU schlechter für general purpose Berechnungen geeignet ist, als eine Architektur, die einzig Grafik im Hinterkopf hatte. Eben, schwer zu sagen was geeigneter sein soll.
Und von welcher Branche redest du? Da gibt es anscheinden nen Haufen Idioten, die sich ihre schnellen Computer aus x86-CPUs zusammenlöten, aber hey, das ist dann nicht HPC, stimmt... Ich frag mich, was in die gefahren ist, dass sie das machen...
Wenn du als Branche nVidia und ATI siehst, die sonst nichts schnelles haben? Aber ich glaub das ist nicht der Grund, ansonsten.. naja..

Ich brauche dafür auch keine GPU. Mal abgesehen zu Testzwecken. Schliesslich programmiere ich nicht für eine bestimmte Hardware, sondern für eine bestimmte Aufgabe. Auch ein Problem deinerseits, wo du immer noch in der Vergangenheit festhängst.
Stimmt, da es mir so viel bringt, dass die Wettersimulation auch auf meinem iPhone läuft. Und da ich lieber viel Performance dafür wegschmeiss, dass ein Allerwelts-Modell aufgeht. Wie gesagt, auch das hat seine Berechtigung, sogar an viel mehr Stellen als Archikturoptimierung, aber wenns _wirklich_ um HPC geht, dann sollte das HP eben nicht zu kurz kommen...

Eben das ist es. Nur scheinst du zu verwechseln, was was ist. Um es konkret zu sagen, Larrabee ist das enge und starre Konzept. OpenCL, völlig unabghängig davon, welche Hardware zugrunde liegt, ist der Ansatz für ein optimales Programmmiermodell.
Wir wiederholen uns. Da du keinen Kommentar zum Modell von OpenCL abgegeben hast, behalt ich solange Recht für mich. Aber da ich noch ne Weile keinen bekommen werde, ausser nach kurzem Überflug der Spec... Naja.

Den zusätzlichen Layer brauchst du aber. So ignorant zu sein, hilft dir nicht weiter. Das solltest du nun aus der Diskussion mitbekommen haben. Auf Ebene des Entwicklers sind es Intrinsics oder was auch immer, auf Ausführungsebene eine eigene Runtime. Und mehr benötigen Lösungen wie OpenCL auch nicht. Nur mit dem Unterschied, anstatt proprietären Intrinsics standardisierte Spracherweiterungen nutzen zu können.
Ok, rinse and repeat... lalala... ich lass es sein, siehe gaaanz vorne. Und lass dir gesagt sein, mind. so Ignorant, wie du mich bezeichnest bist du ebenso. Du lässt weniger Konzepte als korrekt gelten, die doch ihre Nische haben, für dich gibts scheinbar immer nur eines, das absolut Richtige für alles, das kanns nicht sein, sollte dir dein Leben schon mehrfach gezeigt haben...
 
Zuletzt bearbeitet:
pezli schrieb:
wie bring ich dir die Idee aus dem Kopf, dass die Larrabee Kerne NICHT zwangsläufig vom Windows-Kernel verwaltet werden?!
Das musst du gar nicht, denn sowas habe ich nie gesagt. Lies doch bitte sorgfältiger. Threads werden vom Betriebssystem verwaltet. Und die kann Larrabee auch nicht einfach in Overhead Null auflösen. Das ist Wunschdenken deinerseits. Selbst ein angepasster Thread Scheduler kann das nur optimieren.

pezli schrieb:
Wie schwer von Begriff bist du? Kannst du nicht für eine Minute (während du meine Beitrag oben liest, von dieser Idee abkommen? Meine Fresse...) Ich muss gar nicht in Ring0, so mal rein gar nicht, Larrabee läuft für sich allein, genau so wie die Grafikkarte, sie kommunizieren nur mit einander, kein Programm von Windows hüpft von selber drauf... Du kannst alles was du vom Scheduler von allen OS in der Welt einfach auf der Seite lassen.
Wenn einem die Argumente ausgehen, muss man auf Beleidigungen zurückgreifen. Sehr beeindruckend. :rolleyes: Und in Ring0 musst du, wenn du einen angepassten Thread Scheduler schreiben willst. Ob das jeder Entwickler macht oder auf eine vorgefertigte Lösung zurückgreift, ist wieder ein anderes Thema.

pezli schrieb:
Als Wundertechnik nicht, aber wenn jemand einfach eine Idee falsch versteht, und deswegen das Ganze Produkt als Scheisse bezeichnet, dann versuch ich korrigierend einzugreifen...
Dann frage ich mich, warum du dich mit mir unterhältst. Ich habe Larrabee nirgendwo als sch***** bezeichnet. Alles was ich sagte, ist, dass die x86 Kompatibilität reines Marketing ist. Irgendetwas einfacher wird für Entwickler dadurch auch nicht. Und dass ich Larrabee gegenüber der Konkurrenz für weniger effizient halte, ist meine ganz persönliche Meinung. Die musst du nicht teilen. Da brauchst du dich auch nicht als Wanderprediger zu betätigen.

pezli schrieb:
Gedankenbeispiel, ...
Yup, Gedankenbeispiele kann ich auch viele bringen. Sofern du nichts konkretes hast, würde ich vorschlagen, du wartest einfach auf Fakten. ;)

pezli schrieb:
Und wenn du sagst, dass bis zum Launch 5-10 TFLOPS seitens der GPUs drin liegen, dann glaub ich das auch, wobei ich eher auf 4-5 tippen würde und weniger auf 10. Dann muss mir aber auch niemand erklären wollen müssen, dass LRB langsamer sein wird - natürlich (und ich mein jetzt nicht direkt dich, gruffi, hier mit :)). Deswegen wärs auch cool, dass man dann tatsächlich die Leistung mit ähnlich schnellen Grafikkarten vergleicht, wenn man die Architektur vergleichen will, da sind wir uns schon einig?
Was soll denn bei einem Leistungsvergleich rauskommen, wenn du ähnlich schnelle Grafikkarten vergleichen willst? :rolleyes: Es gibt ein Leistungsmerkmal, das gerade bei GPUs sehr wichtig ist. Das nennt sich Performance pro mm². Und wenn Larrabee zwei- bis dreimal weniger leistungsfähig bei gleicher Fläche oder bei gleicher Performance doppelt so gross ist, dann muss man sich schon fragen, ob es das richtige Konzept ist. Performance pro Watt wäre dann das nächste.

pezli schrieb:
Ja ich weiss warum du das nicht einsehen willst. Glaub da war so ein Quote wie "ich _werde_ mich damit beschäftigen". Guck dir das Programming Model an, das sie da haben, ein Geflicke mit Zeugs und Sachen damits auch auf den heute noch sehr starren GPUs funktioniert. Siehs doch endlich ein meine Güte, GPUs sind zwar programmierbar, aber leider Gottes immer noch extrem unflexibel, v.a. das Speichermodell.
Da du selbst keine Erfahrung mit OpenCL hast, frage ich mich, wie du das beurteilen kannst. :rolleyes:

pezli schrieb:
Und mich kotzt es jetzt schon an, dass das OpenCL jetzt so auch wirklich 10 Jahre bleiben wird. Der Standard kommt einpaar Jahre zu früh... Man wird sich in 5 Jahren drüber ärgern, sag ich dir, weil man nicht gewartet hat, bis man ein offeneres Modell machen konnte.
Wie offener willst du es denn noch? Ausserdem kann man davon ausgehen, OpenCL wird, wie jeder Standard, im Laufe der Zeit weiterentwickelt.

pezli schrieb:
Mit der Syntax gibts keine Probleme, mit der Semantik auch nicht
Nein, natürlich nicht. Es macht Spass, wenn jeder Compiler seine eigene Inline Assembler Implementierung oder seine eigenen Intrinsics mitbringt. Ganz zu schweigen von unterschiedlichen Dialekten. Ich benutze auch unglaublich gerne Bezeichner wie _mm_cvtsi128_si32 und dergleichen in meinem Code. :rolleyes:

pezli schrieb:
Und das kommt wie gesagt daher, dass man auf einer beschränkten Architektur, jetzt alles machen können will, die wirklich von Grund aus nicht dafür vorgesehen ist.
Wer sagt denn sowas? Man will nicht alles machen, sondern nur das, was sich auch parallelisieren lässt. Bleib mal bitte sachlich und werde nicht immer so polemisch.

pezli schrieb:
Und du erzählst mir hier weiterhin dass das das absolut Beste ist.
Nein, das erzähle ich nicht. Du solltest nicht so viel interpretieren. Den Ansatz halte ich aber für besser als Intels Flickschusterei.

pezli schrieb:
Gut, dass ein general purpose PU schlechter für general purpose Berechnungen geeignet ist, als eine Architektur, die einzig Grafik im Hinterkopf hatte. Eben, schwer zu sagen was geeigneter sein soll.
Und von welcher Branche redest du? Da gibt es anscheinden nen Haufen Idioten, die sich ihre schnellen Computer aus x86-CPUs zusammenlöten, aber hey, das ist dann nicht HPC, stimmt... Ich frag mich, was in die gefahren ist, dass sie das machen...
Wenn du als Branche nVidia und ATI siehst, die sonst nichts schnelles haben? Aber ich glaub das ist nicht der Grund, ansonsten.. naja..
Du scheinst überhaupt keine Ahnung vom Thema zu haben, sry. Schau dir wirklich mal HPC Cluster an. Da geben ganz andere Architekturen den Ton an, siehe zB IBM. x86 konnte sich dort nur reinwurschteln, da es mittlerweile so "billig" geworden ist. Und das hat man vor allem der exzellenten Opteron Plattform von AMD zu verdanken. Märkte ändern sich aber. Und das wird auch hier so sein. Zukünftige HPC Cluster werden verstärkt auf die Rechenleistung von GPUs setzen und weniger auf GP CPUs. Letztere werden dann vielmehr als Hosts fungieren. Ein Beispiel für solche Designs stellt ja bereits Roadrunner dar. Auch wenn hier noch ausschliesslich CPUs zum Einsatz kommen. Die Cells sind allerdings lediglich eine Art Coprozessor und sorgen für die Rechenleistung.

pezli schrieb:
Du lässt weniger Konzepte als korrekt gelten, die doch ihre Nische haben, für dich gibts scheinbar immer nur eines, das absolut Richtige für alles
Nein. Absichtlich fehlzuinterpretieren, ist ignorant. Und nur das machst du. Ich habe niemals etwas von richtig oder nicht richtig gesagt, das kommt ebenfalls nur von dir. Es gibt für mich hier kein gut oder schlecht, sondern nur besser und schlechter. Und meine Einschätzung ist, dass Larrabee zur letzten Kategorie gehört. Aber wie gesagt, darüber können wir uns nochmal nach dem Launch unterhalten. ;)
 
Na gut, dann lese ich ständig alles falsch, aber das liegt wohl daran, dass deine Antworten scheinbar immer scheinbar viel zu Allgemein zielen. Jetzt sinds nur "Threads" die das Betriebssytem verwaltet, die von Larrabee sind natürlich anders. Da kann ich wieder nicht widersprechen. Aber lassen wirs, und ich entschuldige mich nochmals, dass ich so polemisch und teilweise schon persönlich wurde.
 
Zurück
Oben