GPU-Programmierung

Welche Kombination der Thread-Hierarchie in CUDA ist richtig (von groß nach klein)?

  1. AGrid → Block → Thread
  2. BThread → Block → Grid
  3. CBlock → Thread → Grid
Antwort und Erläuterung anzeigen

Antwort: A. Grid → Block → Thread

Beim einmaligen Start eines Kernels bildet das Ganze ein Grid, das Grid gliedert sich in viele Blöcke und der Block in viele Threads. Die Threads eines Blocks werden auf demselben SM (einer Gruppe von Recheneinheiten) ausgeführt und können über den Shared Memory zusammenarbeiten und sich synchronisieren. Verschiedene Blöcke werden unabhängig ausgeführt, sodass sich die Zahl der gleichzeitig laufenden Blöcke an die Größe der GPU anpasst und dasselbe Programm auf kleinen wie großen GPUs läuft.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. In einem CUDA-Kernel wird die Nummer i jedes Threads mit der oben gezeigten Formel bestimmt. Welchen Wert hat i für den Thread mit blockIdx.x=2, blockDim.x=256 und threadIdx.x=5?
  2. Ein Array mit 1000 Elementen soll mit 256 Threads pro Block verarbeitet werden, wobei jeder Thread ein Element bearbeitet. Wie viele Blöcke müssen gestartet werden?
  3. Was ist der Grund für die Bedingung „if (i < n)“ im oben gezeigten CUDA-Kernel?
  4. Wie heißt bei NVIDIA-GPUs die Einheit, in der 32 Threads zu einem Bündel zusammengefasst werden und dieselbe Anweisung gleichzeitig ausführen?
  5. Welche Aussage zum Unterschied zwischen dem SIMT-Verfahren (Single Instruction, Multiple Threads) der GPU und SIMD-Befehlen der CPU ist richtig?

Vergleiche zu diesem Thema