Wattwanderer schrieb:
Oder lassen sich bestimmte Abläufe nicht parallelisieren
Genau das ist der Fall!
Nicht jedes Problem in der Informatik lässt sich beliebig parallelisieren. Genau so verhält es sich bei der Vektorisierung. Nicht jedes Problem lässt sich beliebig breit vektorisieren, sodass es von den immer breiteren Vektoreinheiten profitiert.
Es gibt Probleme, die sich sehr gut vektorisieren und parallelisieren lassen, die dann auch von mehr Kernen und breiteren Vektoreinheiten profitieren, es gibt aber auch viele Probleme, die es nicht tun.
Hier mal zwei Grundsätze dazu:
Amdahlsche Gesetzt und
Gustafsons Gesetzt. Und beide Gesetzte gehen in ihrer Grundform davon aus, dass die Probleme sich beliebig parallelisieren lassen.
Amdahl besagt halt, dass man die benötigte Zeit für eine Berechnung nicht unter den Faktor bringen kann, den der serielle Anteil benötigt, egal wie viele Ressourcen man ansetzt. Gustafson wiederum zeigt auf, dass man in der Zeit "x" mit mehr Ressourcen mehr berechnen kann (Problem vergrößern). Das funktioniert auch in einigen Bereichen sehr gut, zum Beispiel bei der Bildsynthese.
Aber viele Programme, die wir im Alltag als Laien nutzen, lösen aber nicht nur ein Problem, sondern sind wesentlich komplexer und verbinden mehre Probleme zu eben einem Programm. Manche dieser Probleme kannst du sehr gut parallelisieren, andere wiederum weniger gut.
Spätestens wenn dann Probleme voneinander abhängig werden und eine Kommunikation innerhalb der Prozesse notwendig wird, kann es schnell passieren, dass ein "serieller" Ablauf effektiver und einfacher zu programmieren ist als ein paralleler.
Das hat also nicht unbedingt etwas damit zu tun, dass Entwickler nicht optimieren wollen oder können, sondern hat auch damit zu tun, dass der Gewinn manchmal/oft nicht die damit verbunden Kosten rechtfertigt.