GPU-Programmierung
Welche Voraussetzung gilt es beim Schreiben von GPU-Kerneln zu beachten?
- AThreads werden stets einzeln in aufsteigender Reihenfolge der Nummern ausgeführt
- BBlock 1 beginnt nie, bevor Block 0 beendet ist
- CDie Ausführungsreihenfolge von Threads und Blöcken ist nicht festgelegt, daher ist so zu schreiben, dass das Ergebnis nicht von der Ausführungsreihenfolge abhängt
Antwort und Erläuterung anzeigen
Antwort: C. Die Ausführungsreihenfolge von Threads und Blöcken ist nicht festgelegt, daher ist so zu schreiben, dass das Ergebnis nicht von der Ausführungsreihenfolge abhängt
Die GPU weist Threads und Blöcke nacheinander freien Ressourcen zu, sodass die Ausführungsreihenfolge je nach GPU-Modell und Last variiert. Verlässt sich ein Thread auf einen von einem anderen Thread geschriebenen Wert, kann es zufällig richtig laufen, in einer anderen Umgebung aber falsch sein. Wird eine Reihenfolge benötigt, wird innerhalb eines Blocks __syncthreads() verwendet, zwischen Blöcken der Kernel aufgeteilt und für Summen atomare Operationen oder Reduktion eingesetzt.