haebbmaster
Sprechstundenhilfe bei Dr. Nope
Weil es nicht in Swift oder Objective-C geschrieben ist
Hm, wer da jetzt wohl recht hat?das kompiliere ich einmal neu und gut ist.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
Weil es nicht in Swift oder Objective-C geschrieben ist
Hm, wer da jetzt wohl recht hat?das kompiliere ich einmal neu und gut ist.
2015 hat ein ARM Cortex A die gleiche Fliesskommaberechnung bereits viel effizienter durchgeführt als ein Xeon der Haswell oder Ivy Bridge GenerationWenn der Massenmarkt auf Anwendungen steht, die heftig auf Fließkommaberechnungen setzen müssen, dann wird sich an x86 als etabliertem Standard so schnell wohl nichts ändern. Es nützt einfach nichts, wenn ein ARM-CPU zwar effizient, aber eben nicht effektiv ist.
Ein aktuelles Beispiel ist Nintendos Switch-Konsole, die neben dem ARM-Prozessor für die Bewältigung der ganzen Grafikberechnungen eben auch eine nVidia-Tegra X1-GPU braucht und extrem stromhungrig ist und entsprechend viel Abwärme abgibt. Ohne Coprozessoren geht auch bei ARM eben nicht viel, wenn pure Leistung wirklich gefragt ist.
Dieser Artikel ist zwar schon älter, aber in den letzten 5 Jahren wird es da keine Quantensprünge in den grundsätzlichen Verhältnismäßigkeiten gegeben haben.
https://www.anandtech.com/show/6971...ng-point-performance-of-modern-arm-processors
Oder mal ganz anders ausgedrückt: Es hat seinen Grund, warum selbst auf einem topaktuellen iPad a) erst jetzt und b) immer noch nur vierfache Polyphonie bei der jüngst veröffentlichten Moog Model D-App drin ist, während selbes (und viel mehr) auf der x86-Architektur in einem halben Dutzend verschiedenster VST-Implementierungen in diversen Qualitätsstufen quer über sämtliche Betriebssysteme schon seit gefühlten Ewigkeiten quasi zum guten Ton gehört.
Für x86 wird OpenGL unterstützt und das bleibt auch so. Für x86 kompiliert er jetzt.Hm, wer da jetzt wohl recht hat?
2015 hat ein ARM Cortex A die gleiche Fliesskommaberechnung bereits viel effizienter durchgeführt als ein Xeon der Haswell oder Ivy Bridge Generation
http://iopscience.iop.org/article/10.1088/1742-6596/681/1/012049/pdf
Wir sprechen hier aber explizit von Heimanwender Systemen.
Außerdem geht es ja gerade um konkurrierende Alternativen, zB Wasserträger gegen Wasserrohr.
Du hast meine Quelle nicht hinreichend zur Kenntnis genommen.Und zu diesen gehört auch diese nicht ganz unbedeutende Sparte:
https://www.gamesindustry.biz/artic...ndustry-biz-presents-the-year-in-numbers-2017
Mit Xbox One und Playstation 4 wurden über 80% der Konsolenneuverkäufe des letzten Jahres mit x86-Technologie bestritten. Auf Platz 3 kommt mit 7,5% erst die Switch mit ARM-Technologie. Die musste sich nämlich gegen Smartphones und Tablets behaupten.
Es zeigt sich, dass Videospiele erstens ein gigantischer Markt sind und zweitens die Konsumenten klare Vorstellungen von der Leistungsfähigkeit haben, die sie sich wünschen. Sony und Microsoft stellen mit ihren Konsolen gänzlich andere Leistungsparameter zur Verfügung, als Nintendo dies tut.
Völlig falsches Bildnis. ARM-CPUs müssen FP-Operationen entweder über mehrere Zyklen aufteilen (langsamer) oder an einen Coprozessor (höherer Stromverbrauch) delegieren. Das geht sowohl aus deiner, als auch aus meiner Quelle hervor (siehe dazu insbesondere die Tabellen zu "flop/cycle") . Die Antwort auf dieses Problem lautet bei ARM, wie auch schon seit Jahren bei x86: Mehr Kerne & höherer Takt.
Irgendwann ist halt auch bei ARM Schluss, wenn die DAW auf Apples zukünftigem Flaggschiff 120 Cubasespuren (Audioproduktion @ 96 KHz auf ARM? ) gleichzeitig abspielen und dazu auch noch ein paar Plugins stemmen soll. Oder man geht halt woanders hin, wenn Apple brauchbare Technik nur noch für Konsumenten liefert, die mit dem Firmenlogo alleine schon zufrieden sind.
Tatsächlich wird es am Ende wohl auf eine hybride Lösung hinauslaufen, bei der die Vorzüge beider Technologien miteinander verbunden werden. Aber an Wunder glaube ich nicht. Für effektive Leistung muss man halt in Strom bezahlen oder eben länger auf das Ergebnis warten.
Jetzt bin ich aber mal gespannt, welche Teile von C++ sind denn bitte nicht plattformneutral?Mitnichten ist C++ richtig Plattform neutral. Es ist Plattform neutraler als Assembler aber noch nicht wirklich Plattform neutral. Die Gründe wurden bereits genannt.
So 20 Jahre?
Und ausgerechnet Spiele sollen jetzt plötzlich allerschnellste CPUs benötigen?
Du hast meine Quelle nicht hinreichend zur Kenntnis genommen.
GPUs nutzen gar keine x86 ArchitekturIm Segment des Massenmarkts bzw. der Heimanwender gibt es keine einzige andere Anwendung, die annähernd so viel effektive Leistung in Echtzeit benötigt. Warum sonst kaufen sich manche Leute denn wohl z.B. eine Grafikkarte, die alleine schon so viel wie ein iPhone X kostet?
DochUnd da hast mein Argument, nämlich dass Effizienz nicht der allein wirksame Faktor ist, ebenfalls nicht hinreichend zur Kenntnis genommen.
Das ist schönDamit sind wir dann mit dem Thema wohl durch. Damit kann ich aber leben.
Huch? Darüber wurde gar nicht diskutiert.ARM ist ein Weg. Aber nicht der einzige. Auch nicht beim Endverbraucher und das hab ich hinreichend gut belegt.
Ähhhh... Wie wäre es zB mit OpenGL Unterstützung?Jetzt bin ich aber mal gespannt, welche Teile von C++ sind denn bitte nicht plattformneutral?
OpenGL gehört nicht zu C++ wie da ja weißt wenn du schon 20 Jahre C++ programmierst. Und OpenGL hat nix mit x86 zu tun, die Schnittstellen kann auch auf einer ARM CPU angesprochen werden wenn ein Grafikkern existiert der OpenGL unterstützt. Aber das weißt du ja sicherlich alles, oder doch nicht?Ähhhh... Wie wäre es zB mit OpenGL Unterstützung?
Dir ist schon klar das Android meist ARM CPUs mit OpenGL ES Grafikernanbindung auf einem SoC sind oder? OpenGL hat rein gar nichts mit x86 zu tun. Das wurde mal auf SGI Maschinen entwickelt, da waren gar keine x86 CPUs drin. Quelle: https://de.wikipedia.org/wiki/Silicon_GraphicsARM verfügen üblicherweise nicht über OpenGL Hardware Unterstützung
In den Grundlagen hast Du erhebliche Defizite, Deine Überheblichkeit ist völlig unangebracht.
Ja klar. Aber ist dir nicht klar, dass dafür Systembibliotheken verwendet werden?Dir ist schon klar das Android meist ARM CPUs mit OpenGL ES Grafikernanbindung auf einem SoC sind oder?
Informier Dich doch endlich mal. x86 bietet Hardwareunterstützung für OpenGL, was wiederum dazu führt, dass Systembibliotheken von Systememn die auf x86 laufen es verstärkt implementieren.OpenGL hat rein gar nichts mit x86 zu tun.
https://de.wikipedia.org/wiki/Silicon_GraphicsDas wurde mal auf SGI Maschinen entwickelt, da waren gar keine x86 CPUs drin. Quelle: https://de.wikipedia.org/wiki/Silicon_Graphics
OpenGL gibts ja sogar für die alte Acorn ARM Architektur. Ich habe den Eindruck, Du weißt selbst nicht so recht, worüber Du gerade diskutierst?Wenn ich eine rudimentäre OpenGL GUI fertig habe, dann werde ich dir Screenshots von einer Windows-, eine Linux Version auf x86 und einer Linux Version auf ARM Basis(RaspPI) schicken. Vielleicht glaubst du es ja dann.
Es zu wiederholen macht es nicht wahr.alles falsch... die x86-Architektur hat keine Opengl-Unterstützung. Opengl ist eine programmierSchnittstelle, die unter arm genauso implementiert werden kann wie auf x86-Systemen.
Dort siehst Du dann, dass die CPU selbst OpenGL 4.5 unterstützt.
Das heißt, wenn Du die OpenGL Aufrufe raus nimmst, dann kannst Du in Xcode einfach fürs iPhone kompilieren. Folglich nutzt Du auch keinen der CISC Befehle und außer OpenGL kein Framework, um Deinen SoftSynth in ein bestehendes Ökosystem (wie zB CoreAudio oder VST) zu integrieren. Das ist dann aber ein absoluter Ausnahmefall für einen SoftSynth.Danke, endlich mal einer mit Kompetenz
@Grenzfrequenz Das ist ja der Punkt. OpenGL gibt es für so ziemlich alle Plattformen genau wie einen C++ Compiler, somit kann ich den gleichen Code auf allen Plattformen wieder verwenden, wo ich OpenGL Unterstützung und einen C++ Compiler für habe. Das ist für mich plattformunabhängig, da ich nicht auf eine Plattform festgenagelt bin. Da hast ja selbst der Sprache C++, die nichts mit OpenGL zu tun hat, abgesprochen dass sie plattformunabhängig ist.
Vielleicht reden wir hier auch aneinander vorbei. Ich weiß das mein Code unter Windows, Linux x86 und ARM laufen wird und das ist entscheidend für mich. Das ist plattformunabhängig genug. Wenn Apple weiterhin OpenGL mit auf ARM nehmen würde, dann könnte ich die Plattform auch out of the box unterstützen, darum geht ja der ganze Thread hier.
Das hast Du es doch. C++ hin oder her, es garantiert mitnichten eine Plattformunabhängigkeit. Und der Hersteller über den wir hier sprechen plant halt demnächst nicht mehr damit, dass in all seiner Hardware OpenGL untestützt wird und dort wo es komplett in Softwre umgesetzt werden müsste bevorzugt man einen anderen WegDas bezieht sich auf die iGPU. Dieser Prozessor hat nämlich ne GPU eingebaut.
Ok ich versuche mal zu antworten. Mein Code für den Softsynth selbst ist reines C++, ohne irgendwelche Assemblerspezifschen Sachen. Der Code kompiliert also wirklich überhall wo es einen C++-Compiler für gibt(x86, ARM, 68000, PowerPC, whatever). Dann habe ich eine Audio-Libs die sowohl CoreAudio, WASAPI, ASIO, Jack etc unterstützt. Diese kann ich einsetzen wo entsprechende Audioschnittstellen exisitieren. Meine Grafik, Fenster, Input Verwaltung wird über die GLFW-Lib genutzt, diese kann ich unter macOS, Linux, FreeBSD und Windows ohne Anpassungen nutzen. Mehr Abhängigkeiten habe ich derzeit nicht.Das heißt, wenn Du die OpenGL Aufrufe raus nimmst, dann kannst Du in Xcode einfach fürs iPhone kompilieren. Folglich nutzt Du auch keinen der CISC Befehle und außer OpenGL kein Framework, um Deinen SoftSynth in ein bestehendes Ökosystem (wie zB CoreAudio oder VST) zu integrieren. Das ist dann aber ein absoluter Ausnahmefall für einen SoftSynth.
BTW wenn C++ so plattformunabhänig wäre, dann wäre sowas wie Java niemals entwickelt worden.
Das hast Du es doch. C++ hin oder her, es garantiert mitnichten eine Plattformunabhängigkeit.
Und OpenGL hat nix mit x86 zu tun, die Schnittstellen kann auch auf einer ARM CPU angesprochen werden wenn ein Grafikkern existiert der OpenGL unterstützt.
Das ist dann aber nur eine eingeschränkte Plattformunabhängigkeit und in diesem Thread geht es ja um eine Kompatibilität zu einer bestimmten Plattform. Ich weiß nicht, ob Du einfach iOS als Zeilplattform verwenden kannst, wenn Du den OpenGL Kram testweise raus löschsts? Ich tue mich jedenfalls weiterhin schwer, es zu glauben. Hast Du es mal ausprobiert? Nur darum geht es ja schließlich in diesem Thread: Wenn eines Tages iOS die Basis ist, kannst Du angeblich Deinen Code nicht mehr für die neue Zielplattform kompilieren, nur weil OpenGL nicht mehr unterstützt wird.Ok ich versuche mal zu antworten. Mein Code für den Softsynth selbst ist reines C++, ohne irgendwelche Assemblerspezifschen Sachen. Der Code kompiliert also wirklich überhall wo es einen C++-Compiler für gibt(x86, ARM, 68000, PowerPC, whatever). Dann habe ich eine Audio-Libs die sowohl CoreAudio, WASAPI, ASIO, Jack etc unterstützt. Diese kann ich einsetzen wo entsprechende Audioschnittstellen exisitieren. Meine Grafik, Fenster, Input Verwaltung wird über die GLFW-Lib genutzt, diese kann ich unter macOS, Linux, FreeBSD und Windows ohne Anpassungen nutzen. Mehr Abhängigkeiten habe ich derzeit nicht.
Nun zum Begriff der Plattformunabhängigkeit. Diese ist bei mir dann gegeben, wenn ich mein Programm auf mehr als einer Plattform kompilieren kann.
Wo wir wieder beim eigentlichen Punkt wären: Bislang hast Du keine iOS Zielplattform im Programm. Das ist klar, weil ja alle Deine Zielplattformen OpenGL unterstüzten. Wenn nun das klassische macOS weg fällt bzw etwas auf iOS Basis an dessen Stelle rückt, dann ist der große Aufreger, dass es dann kein OpenGL mehr gibt? Das würde mich zumindest wundern, wenn das jetzt der große Aufreger an dieser Umstellung wäre.Auf allen verfügbaren Plattformen kann ich nur meinen Softsynth selbst kompilieren, da Grafik und Soundausgabe auf die drei Hauptplattformen grob festgelegt sind. Die Anbindung an das Audio system ist aber extrem schwach. Wenn sich da was ändert ist das keine große Arbeit das anzupassen. Ich wollte bei OpenGL eigentlich keine zusätzliche Schicht einbauen, da es bis heute immer DIE Grafikschnittstellen für alle großen Plattformen war. Ist nun Pustekuchen dank Apple, also werde ich doch eine Schicht einbauen müssen.
Ja, das ist dann der einfachste Fall und die Interfaces können dann immer nur generisch sein sowie speziellen Nektar zur Codeoptimierung kann man dann kaum nutzen. Ist aber bei einfachen Programmen durchaus üblich.Nochmal zum Schluss. Der reine Softsynth ist reines C++ und muss null geändert werden, egal mit welchem C++Compiler und auf welcher CPU ich das immer auch kompiliere.
Ich hoffe, ich habe das genug aufgedröselt.
Da fehlt das Wörtchen "eingeschränkt", "bedingt", whateverC ist übrigens der erste plattformunabhängige Assembler gewesen und wurde genau deswegen erfunden. Java ist da plattformunabhängi wo es die JRE für gibt. Java wurde auch erfunden um die Speicherverwaltung einfacher zu gestalten, mit den üblichen Vor- und Nachteilen. C und C++ war schon immer plattformunabhängig.
Willste es jetzt nicht verstehen oder wie? Die GPU ist sehr wohl im Package der CPU. Und dort wo es das nicht gibt wird es derzeit von der GPU unterstützt. Die GPU ist Hardware.Nein. Die von dir verlinkte CPU selbst unterstützt keine einzige OpenGL-Extension, die in einer höheren Programmiersprache formuliert ist. Das tut nur der GPU-Teil, der logisch unabhängig von der CPU ist, und sogar abgeschaltet und durch eine GPU via PCIe ersetzt werden kann. Das ist aber auch genau das, was ckoehler früher bereits sagte: