Hmm , was ist sinnvoller.
Nur 1 Sandwiche schnell fertig, dann das nächste
oder
10 sandwiches auf einmal, dafür dauert es länger
Zuhause nehme ich variante 1, da kann ich schon 1 essen wären ich das nächste mach.
Im Restaurant wär es nicht so toll, wenn alle essen nacheinander kämen.

Die Erkennung wann Parallelisierung möglich ist oder nicht stelle ich mir auch schwer vor, mit Compiler Befehl sicherlich möglich aber "on the fly" sicherlich schwierig.
. Wenn die Leistung irgendwann stimmt kann ich mir gut Vorstellen eine AMD Apu als mItx zu basteln, solang aber die Leistung nicht annähernd einer "normalen" Cpu + Grafikkarte heranreicht brauch ich mir erstmal nicht den Kopf zerbrechen. Ich habe mir erstmal 1 Intel System gekauft da es keine AM3+ mItx Boards gibt, schade für AMD.Die PS4 Apu ist ein alter Jaguar. Soweit ich weiß müsste der Kaveri schneller sein.Ich sehe die Zukunft in APUs.
Brauchbare Leistung, in kleine Gehäuse baubar und nur noch eine Einheit zu kühlen (außer dem Netzteil).
Wenn jetzt die Spiel-Performance noch verbessert wird, dann ziehe ich meinen Hut (sollte eigentlich nicht die APU von der PS4 nicht auch ähnlich für den PC erscheinen, der 7850k wird ja nicht an PS4 Niveau kommen?)
Und genau da ist der Fehler.Die Schleife würde nun in 100 einzelne Berechnungen geteilt und jeweils an eine APU geleitet werden und so parallel abgearbeitet werden.
Die PS4 Apu ist ein alter Jaguar. Soweit ich weiß müsste der Kaveri schneller sein.
Ja aber der Video-Arbeitsspeicher ist das Problem jeder APU. Denn der wird ja vom Systemspeicher abgeknappst. Ausnahmen sind eben die APU's in Konsolen. Da diese Chips ja nur in den Teilen werkeln sollen sind sie in der Lage, ähnlich wie bei Graka's andere Speicher auf die Platine zu pflanzen. Das wird im Desktopsekment schwer. Es sei denn dafür wird ein neuer Sockeln entwickelt, mit dem man GDDR-Speicher nachrüsten kann.Der CPU Teil ja, der GPU Teil nein.
Das Problem ist das man auf GDDR5 RAM mit einem 256 Bit Interface setzt, somit würde es auf eine teure Speziallösung rauslaufen die bestenfalls für hochintegrierte Media PCs interessant ist.
Die PS4 Apu ist ein alter Jaguar. Soweit ich weiß müsste der Kaveri schneller sein.
Und genau da ist der Fehler.
Schleife 100x Lebenspunkte +1 bei Ausgangswert 0 = 100 Lebenspunkte
100x Lebenspunkte + 1 bei Ausgangswert 0 ohne Schleife = 100 x 1 Lebenspunkt
Das sind, wenn man sie zusammenführt zwar auch 100 Lebenspunkte. Aber was passiert, wenn du beim hochzählen angegriffen wirst?
Du musst diese parallelen Aufgaben als Subthreads sehen. Du hast eine Variable "lebenspunkte = 0". Bei jedem Schleifendurchlauf wird dieser um 1 erhöht, bis er 100 hat. Brichst du dies aber auf und verteilst diesen Vorgang auf 100 verschiedene Recheneinheiten, arbeitet jede einzelne mit dem Basiswert 0. Jede Recheneinheit rechnet aber nur einen einzigen dazu. Also kommt bei jeder Einheit das Ergebnis 1 raus. Und nun? Willste die Ergebnisse mit einer Schleife einfangen und dann noch einmal drauf addieren?
Genauso ist es mit der Änderung einer Variable zur Laufzeit. Du wist angegriffen und verlierst Lebenspunkte. Das geht, indem du eine entsprechende Abfrage in die Schleife setzt oder Threadunsafe programmierst. Welche der 100 Recheneinheiten kann sich dann auf die neue Situation anpassen?
Was willst du denn genau machen? 100 Einheiten + 1 Rechnen oder einer Einheit 100 mal + 1 Rechnen. Das ist schon ein unterschied. Das erste wäre das Sandwichbeispiel. Du willst mit 100 unterschiedlichen Parametern mit gleichem oder unterschiedlichem Wert das selbe machen. Der Wert jedes einzelnen Parameters ist für die Recheneinheit (<- Ich nenne es mal so, da du den Begriff Thread nicht mags, obwohl es der Logik entsprechend einer ist) der Ausgangspunkt, auf denen die Operationen durchgeführt werden. Das funktioniert aber nur, wenn eben jeder Parameter vom Grund auf unabhängig von einander ist und diese Vorgänge safe sind und nicht im nachhinnein während der Berechnung Änderungen der Operanten erwarten. Letzteres wäre, im Falle einer Aufteilung innerhalb der Schleife, abhängig. Der Parameter hätte immer den selben Wert und wenn genau das gleiche passiert, kommt auch genau das gleiche hinten raus.Nein das hat nicht direkt was mit Threading zu tun. Ich habe ja auch 100 Einheiten die jeweils 1hp dazu bekommen, da ist keine Abhängigkeit zwischen den Einheiten.
Angenommen in Thread 1 steht eine Schleife mit 100 Durchläufen an. HSA würde erkennen ich kann die Durchläufe parallel ausführen. Erst wenn alle einzelnen Berechnung fertig sind geht es im Thread 1 weiter. Ist eigentlich als würde ich 100 Threads Software-Seitig erstellen und erst weiter fortfahren wenn alle Threads beendet sind.
(sollte eigentlich nicht die APU von der PS4 nicht auch ähnlich für den PC erscheinen, der 7850k wird ja nicht an PS4 Niveau kommen?)
Angenommen in Thread 1 steht eine Schleife mit 100 Durchläufen an. HSA würde erkennen ich kann die Durchläufe parallel ausführen.
Genau da liegt an der Sache nämlich das Hauptproblem. Wenn müsste das ganze schon im Compiler selektiert und markiert werden, was am Ende durch die GPU-Einheiten gejagt werden kann und was nicht. Schleifen haben auch nicht immer den selben Aufbau. Zum Beispiel (wie schon beschrieben) würde "tue X mit Y bis A" da schon wieder zu einem Problem führen. Die gesamte Schleife kann in diesem Falle garnicht in einzelne Operationen unterteilt werden. Und in Spielen würde es eh nur Sinn machen, wenn eine weitere diskrete GPU am Board wäre. So könnten die GPU-Einheiten der APU dann zum Beispiel Positionen etc. berechnen, während die GPU das macht, wozu sie da ist. Wenn AMD HSA tatsächlich so hinbekommen würde, dann kann das schon einen ordentlichen Boost bringen. Allerdings ist eben die Selektierung, was machbar ist und was nicht die Schwierigkeit. Denn wenn sie Pech haben, sind sie wieder auf eine Implementierung seitens der Entwickler angewiesen.Viele Schleifen beginnen nicht mit "tue 100 mal X", sondern mit "tue X bis A". Bedingung A mag dann nach 100 Durchläufen erfüllt sein, aber insbesondere in einem Spiel ist das nur schwer vorhersehbar. Sind nur 10 Einheiten aktiv, ist die gleiche Schleife schon nach 10 Durchläufen erledigt. Die große Kunst der Multi-Thread-Optimierung besteht darin, für derartige Vorhersagen weniger Zeit und Energie zu benötigen, als durch die paralelle Verarbeitung eingespart wird.