Thema: OpenCL / CUDA

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: OpenCL / CUDA

  Alt 19. Sep 2023, 17:29
Prinzipiell klingt es danach, als wenn es eine gute Aufgabe für die GPU wäre.


Tasks gegenüber Threads sind schonmal schneller,
da sie einen ThreadPool nutzen, die Threads wiederverwenden und somit das Erstellen/Zerstören der vielen Threads entfällt.

Dennoch wäre es optimaler, wenn es extrem schnell geht, in jedem Task mehrere Werte und nicht nur Einen zu berechnen, denn auch der Task hat einen kleinen Overhead.

Klar, eine gute GPU kann natürlich viel mehr parallel und das vermutlich auch optimaler berechnen.
OK, hab hier 64 Kerne in der CPU, aber dafür keine HighEnd-Graka ... wer da wohl schneller ist, gegenüber dem Mehraufwand die Berechnung in der GPU aufzubauen.
Vermutlich wird jemand (GPU), der für sowas optimiert wurde, es eventuell schneller können, gegenüber einem Allrounder (CPU), falls das rechnende Programm nicht exrem unoptimal arbeitet.


Egal ob CPU oder GPU solle immer nur ein "Thread" auf einen Speicherbereich zugreifen (schreibend, aber auch lesend, wenn Andere darin rumschreiben),
damit sich die Threads nicht gegenseitig mit Sperren und/oder Neuladen ausbremsen.
Gab es hier vor Kurzem einen ForenThread zum Thema.
-> Entsprechend mehrere Werte zusammen in einen Speicherblock und jene Gruppe (oder Mehrere davon) von einem Task abarbeiten lassen.


Auch für die CPU gibt es spezielle Befehle, welche gern 1 bis 8 Werte gleichzeitig berechnen können, pro Kern.
MMX, SSE oder so.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (19. Sep 2023 um 17:48 Uhr)
  Mit Zitat antworten Zitat