?
SeppJ schrieb:
raps schrieb:
aber wirklich viel bringt sowas automatisches selten.
Das kommt eben drauf an, was man macht. Wenn man diese Funktionen wirklich oft benutzt, dann bringt das entsprechend viel. Aber einmal im Programmverlauf ein Array zu initialisieren oder 10 Zahlen zu addieren - das ist Pillepalle. Das Problem ist, dass diese CPU-Erweiterungen recht speziell sind. Es bringt richtig viel, wenn man immer wieder die gleiche Operation auf Mega- oder Gigabytes von Daten durchführt.
nein, leider nicht, wenn ein memcpy mit simplen int-moves schon am speicher saturiert (rep mov), wird eine vektorisierte version lediglich overhead haben, es wird nicht schneller. egal ob 16byte oder 16GByte auf die man memcopy macht.
Das sind die Aufgaben, die am Computer richtig lange dauern, daher ist es auch gut, dass es diese Erweiterungen gibt. Sonst könnten wir heute nicht Videos in Echtzeit bearbeiten oder "mal nebenher" noch ein hochauflösendes Video gucken.
das sind hand optimierte dinge, keine automatischen compiler optimierungen wie in meinem vorherigen beitrag angesprochen den du quotest.
Aber für Allerweltsprogramm, auch Spiele, bringt das so gut wie nichts.
auto optimierungen bringen fast nichts. hand optimierte vectorisierung kann viel bringen, ich sass die letzten 3wochen um etwas von 80ms auf 4ms zu dreucken auf konsole, ohne SIMD waere es nicht moeglich gewesen.
Spiele sind da schon etwas besonderes, da sie eigentlich schon in die Kategorie fallen, triviale Operationen zigmilliardenfach duchzuführen. Aber dieser Bedarf ist sogar so extrem, dass dafür extra die GPUs erfunden wurden, wodurch der Prozessor heutzutage bloß noch die Spiellogik verarbeitet. Und die mag zwar auch anspruchsvoll sein, aber fällt meistens nicht in die Kategorie, die man durch SIMD-Techniken optimieren kann.
man kann sehr vieles mit SIMD optimieren, dass es sowenig gemacht wird, liegt daran was 'gergamedev' gesagt hat, viel aufwand -> viel kosten. manchmal konzentriert man sich dann auf ein paar wenige dinge die optimiert werden, oft aber kauft man eher eine 3rd party lib wie z.B. granny, speed-tree, havokm kynapse etc. die schon 'perfekt' optimiert sind (sowohl SIMD als auch high level algorithmen). 90% der zeit geht in 10% des binaries ab und gerade bei spielen sind es oft ein paar wenige funktionen die peaken, z.B. kostet oft ein raycast der AI in die physic mehr als die ganze fuzzi logic fuer den actor. oft ist das so performance irrelevant, dass das behaviour mit einem script gesteuert wird, die visibility raycasts hingegen sind asynchron, multithreaded, SIMDfied etc.