Apple OS Features: Grand Central Dispatch & LLVM:Nur alter Wein in neuen Schläuchen?
Ich lager hier mal die OT Diskussion aus, die ich und mr.dude in der CPU Sektion angefangen haben:
http://www.hardwareluxx.de/community/14430808-post453.html
Vielleicht kann ja noch jemand zu dem Diskurs beitragen, jeder mit sinnvollen Kommentaren ist herzlich willkommen
Apple OS ist zwar kein freies Betriebssystem, aber die Dinge um die es hier geht sind OpenSource, von daher hoffe ich das richtige Unterforum gefunden zu haben ;-)
------------------------------
Oder die QuadCore Spiele nicht von 6 Kernen oder SMT ?
Das ist alles fest auf X Threads programmiert.
Ich glaubs Dir gerne, dass es sowas schon gab. Aber dann will ich wissen, wo, also Beispiele, und/oder wieso das bei Windows bisher keiner gemacht hat.
Zu SSE/AVX etc.pp:
Aber gut - wenn Du damit die Grundlage meinst, dass man sich bei nem Interpreter auch keine Gedanken über das Zielsys machen muss. Gestehe ich Dir den Punkt unter Wiederwillen zu. Widerwillen deshalb, da es nach meiner Meinung ungefähr so ist einen Doppeldecker von 1919 mit einem Düsenjet zu vergleichen. Ja beides sind Flugzeuge ... Punkt an Dich ;-)
Ist aber schon mehr als 1 Jahr her - möglich das sich was geändert hat.
Nvidia wird sich auf alle Fälle hüten sowas zu machen, nach deren Philosophie soll ja alles im CUDA Core laufen, bleibt nur AMD, die haben CPU & GPU Treiber.
Per LLVM könnte Apple dem ganzen Wirrwar aber ein einheitliches Interface geben. Eventuell auf einem AMD System OpenCL Code für CPU+GPU generieren, auf einem Intel + nVidia Sys. x86 Code + OpenCL (nur für die GPU).
Eventuell wäre das auch für AMD performanter, aber das soll nur als Beispiel herhalten.
Interpreter für alle Sprachen für die es ein Front-End gibt plus Compilierung auf alle Zielsysteme von denen es ein Back-End gibt, wer will kann auch einen Zwischenschritt mit JIT compiles gehen. Verschiedene Sprachen kann man auch mixen (cross-language linking). Ist doch alles ganz hübsch.
Die einzelnen Bauteile mag es schon vor Urzeiten gegeben haben, aber das alles schön an einem Platz und zentral in einem OS genützt - nicht.
ciao
Alex
Ich lager hier mal die OT Diskussion aus, die ich und mr.dude in der CPU Sektion angefangen haben:
http://www.hardwareluxx.de/community/14430808-post453.html
Vielleicht kann ja noch jemand zu dem Diskurs beitragen, jeder mit sinnvollen Kommentaren ist herzlich willkommen
Apple OS ist zwar kein freies Betriebssystem, aber die Dinge um die es hier geht sind OpenSource, von daher hoffe ich das richtige Unterforum gefunden zu haben ;-)
------------------------------
Wieso können dann die ganzen dual Core Applikationen nicht automatisch von 4 oder mehr Kernen profitieren ?Nochmal, das ist bei bisherigen Lösungen nicht anders.
Oder die QuadCore Spiele nicht von 6 Kernen oder SMT ?
Das ist alles fest auf X Threads programmiert.
Ok, passt dannJa, kannst du so umformulieren, wenn du das besser verstehst. Der Punkt war der theoretische und reale Unterschied zwischen nativen Executables und Bytecode/JIT.
Das steht und fällt jetzt mit dem ersten Punkt oben. Gibts jetzt überall einen freien Threadpool, oder nicht ? Muss ich jetzt starr genau auf X Threads programmieren, oder kann ich das einfach in einen Threadsack werfen, der dann vom OS auf die vorhandenen Resourcen verteilt wird ?Nein, ist sie nicht. Glaub es mir einfach. Sie ist komplexer, ja, aber nicht flexibler. Da kannst du von mir aus noch so viele Zitate von der Apple Seite posten, das ist einfach nur PR Gewäsch. Apple erfindet das Rad nicht neu. Sie nutzen einfach nur Sachen, die es schon lange gibt. Sie kommen jetzt halt nur mit einer eigenen, proprietären Lösung, zugeschnitten auf Apples OS. Mehr ist es nicht.
Ich glaubs Dir gerne, dass es sowas schon gab. Aber dann will ich wissen, wo, also Beispiele, und/oder wieso das bei Windows bisher keiner gemacht hat.
Zu SSE/AVX etc.pp:
Jo, les ich, aber ein Interpreter ist doch was anderes, das wäre viel zu lahm, schrieb ich doch auch, das hast Du sicher gelesenIch sagte ja, das ist nicht neu und gibt es schon seit Urzeiten, Stichwort Interpretersprachen. Liest du eigentlich, was ich schreibe?
Aber gut - wenn Du damit die Grundlage meinst, dass man sich bei nem Interpreter auch keine Gedanken über das Zielsys machen muss. Gestehe ich Dir den Punkt unter Wiederwillen zu. Widerwillen deshalb, da es nach meiner Meinung ungefähr so ist einen Doppeldecker von 1919 mit einem Düsenjet zu vergleichen. Ja beides sind Flugzeuge ... Punkt an Dich ;-)
Jo OpenCL geht in die gleiche Richtung, aber der Pferdefuß steckt mal wieder im Detail, man braucht nen CPU Treiber, wenn man OpenCL Code auf der CPU ausführen will. Hab Intel beim P3D Themenabend danach gefragt, ob sie einen OpenCL x86 Treiber planen, der Typ hat mich fast ausgelacht.Ja, das nennt sich OpenCL und läuft nicht nur auf Apples OS.
Ist aber schon mehr als 1 Jahr her - möglich das sich was geändert hat.
Nvidia wird sich auf alle Fälle hüten sowas zu machen, nach deren Philosophie soll ja alles im CUDA Core laufen, bleibt nur AMD, die haben CPU & GPU Treiber.
Per LLVM könnte Apple dem ganzen Wirrwar aber ein einheitliches Interface geben. Eventuell auf einem AMD System OpenCL Code für CPU+GPU generieren, auf einem Intel + nVidia Sys. x86 Code + OpenCL (nur für die GPU).
Eventuell wäre das auch für AMD performanter, aber das soll nur als Beispiel herhalten.
Was LLVM ist, und über was ich die ganze Zeit rede steht auf llvm.org:Ganz gewiss nicht. Eine Sprache ist immer mehr als eine VM. Oder meinst du mit LLVM vielmehr "LLVM Compiler System"? Das mag mehr als eine einzelne Sprache sein. Sagt nur überhaupt nichts aus. C und Java ist auch mehr als Java alleine.
Mit einer klassischen VM á la VMware hat das wenig zu tun, beschwer Dich bei den Entwicklern über die Namensgebung, wenn Du magst ;-)Low Level Virtual Machine (LLVM) is:
Ich finds schön flexibelHast du dir denn das PDF mal durchgelesen? Dort wird doch deutlich, was ich bereits sagte. Apples LLVM basiert auf den Prinzipien eines stinknormalen Interpreters. Neu ist daran nun wirklich nichts. Ausser, dass man dafür nicht selbst eine Programmiersprache spezifiziert, sondern als Quelle bereits existierende nutzt. Wer's braucht. Ich sehe darin wenig Sinn.
Interpreter für alle Sprachen für die es ein Front-End gibt plus Compilierung auf alle Zielsysteme von denen es ein Back-End gibt, wer will kann auch einen Zwischenschritt mit JIT compiles gehen. Verschiedene Sprachen kann man auch mixen (cross-language linking). Ist doch alles ganz hübsch.
Die einzelnen Bauteile mag es schon vor Urzeiten gegeben haben, aber das alles schön an einem Platz und zentral in einem OS genützt - nicht.
ciao
Alex