GPU-Programmierung

Auf der GPU sollen nur die Elemente eines Arrays, die eine Bedingung erfüllen, herausgenommen und kompakt in ein anderes Array geschrieben werden (jeder Thread gibt 0 oder 1 Wert aus). Welche parallele Berechnung wird häufig verwendet, um die Schreibadresse jedes Threads zu bestimmen?

  1. AMatrixtransposition
  2. BPräfixsumme (Scan, kumulative Summe von vorn)
  3. CSchnelle Fourier-Transformation
Antwort und Erläuterung anzeigen

Antwort: B. Präfixsumme (Scan, kumulative Summe von vorn)

Stellt man für jeden Thread mit 0 oder 1 dar, ob er ausgibt, und bildet davon die kumulative Summe von vorn (exklusive Präfixsumme), entspricht der Wert jedes Threads der „Zahl der Threads vor ihm, die ausgeben“, und das ist unmittelbar seine Schreibadresse. Der Scan lässt sich wie die Reduktion in Baumform parallel berechnen. Er ist das Grundwerkzeug, um Verarbeitungen, bei denen die Ausgabemenge je Element verschieden ist, parallel kompakt auszugeben.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Voraussetzung gilt es beim Schreiben von GPU-Kerneln zu beachten?
  2. 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?
  3. Welche Aussage zum Verhalten unmittelbar nach dem Start eines Kernels durch das CPU-seitige Programm in CUDA ist im Allgemeinen richtig?
  4. Welche Aussage zum Unterschied in der Entwurfsphilosophie von CPU und GPU ist richtig?
  5. Welches Merkmal beschreibt Aufgaben, die sich auf der GPU schnell verarbeiten lassen, am besten?

Vergleiche zu diesem Thema