GPU-Programmierung

Welche Voraussetzung gilt es beim Schreiben von GPU-Kerneln zu beachten?

  1. AThreads werden stets einzeln in aufsteigender Reihenfolge der Nummern ausgeführt
  2. BBlock 1 beginnt nie, bevor Block 0 beendet ist
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Was ist der Hauptzweck, beim Transponieren einer großen Matrix auf der GPU (b[j][i] = a[i][j]) über den Shared Memory zu gehen?
  2. Welche Aussage zum Verhalten unmittelbar nach dem Start eines Kernels durch das CPU-seitige Programm in CUDA ist im Allgemeinen richtig?
  3. Welche Aussage zum Unterschied in der Entwurfsphilosophie von CPU und GPU ist richtig?
  4. Welches Merkmal beschreibt Aufgaben, die sich auf der GPU schnell verarbeiten lassen, am besten?
  5. Welche Verarbeitung läuft auf der GPU tendenziell ineffizient?

Vergleiche zu diesem Thema