Cool Master schrieb:
[...]
Das Problem ist wie immer die Software. Die Hardware ist der Software aktuell gut 5-10 jahre vorraus. Ja es gibt Software die auf Multi Core "Optimiert" ist aber nicht extra dafür programmiert weil es einfach sau schwer ist gutes multi threading zu erreichen.
Das stimmt so nicht! Das mag für Windoof und seine vernagelten "Kompatibilitäten" gelten.
Aktuelle Compiler enthalten bereits seit geraumer Zeit die neuen Befehle kommender Prozessoren. Unter *BSD UNIX sowie vielen Linux Systemen ist es üblich, Software zu übersetzen - sofern der Compiler es versteht, via Autovektorisierung SSE/AVX etc. zu nutzen sind solche Funktionen instantan in der Software nutzbar. Das heißt aktuelle Software aus dem openSource Bereich nutzt neue Funktionen!
Darüberhinaus gilt das Kausalitätsprinzip - zumindest schwach. Die heute in Silizium gegossenen Funktionen sind mathematisch/algorithmisch bereits uralt! Mathematische Bibliotheken zum Beispiel, die dynamische "Registerbreiten" zulassen oder nicht auf eine durch die Menge der Bits in einem Register beschränke Darstellung einer Zahl beschränkt operieren, nutzen algorithmisch das, was gerade jetzt erst in hardware verfügbar gemacht wird.
Beschränkt man aber die Sicht auf die Spitze des Eisberges, so gebe ich Dir recht, da ist das Bild, vor allem unter Windoof, ziemlich trübe. Das aber sind die Konsequenzen der "Kompatibilität".
Das beliebte Werkzeug aus der Adobe Design Suite (für das meine Institution einige 10k-Euro für eine Campuslizenz ausgibt), der Photoshop, lastet maximal(!) 4 Threads aus und hat immer noch Probleme mit der Auslagerung von Filterfunktionen in OpenCL oder CUDA Routinen. Und Photoshop ist doch gerade eines jener Werkzeuge, die eigentlich am meisten von den vektoreinheiten und den skalaren Aufbauten moderner Prozessoren profitieren - zumindest kann man zeigen, daß die Filter, die Verwendung finden, bestens auf Vektorprozessoren überragen werden können.
Andererseits - OpenCL ist jetzt seit drei Jahren brauchbar verfügbar, bereits jetzt in Version 1.2. Die Software - also die Definitionen, Deklarationen etc. sind parat. Und dennoch ist die Hardware der Software (dem Modell) noch immer weit hinterher. Ich kenne keine GPU, die 100% OpenCL 1.2 kompatibel ist!
Meine Sicht mag vielleicht zu beengt auf mein (dynamisches) Umfeld sein. Dennoch ist es nicht schlimm, wenn jede Prozessorgeneration neue Techniken und Funktionen bringt, die ad hoc nicht genutzt werden können, weil das Gros der Software "kompatibel" ist und sich auf den kleinsten gemeinsamen Nenner einigt.
Und wiederum - aus Sicht der Betriebssysteme muß ich Dir Recht geben. Noch immer nutzen viele Basisbibliotheken die Unterstützung der Vektoreinheiten nicht. Bei calloc() zum Beispiel könnte man so, je nach Größe des Datentypes, eine quasiparallele Initialisierung des allozierten Speichers durchführen.