GPU-Programmierung

Welche Aussage zum „Kernel“ in der GPU-Programmierung, etwa mit CUDA, ist richtig?

  1. ADer zentrale Teil des Betriebssystems der GPU
  2. BEine Funktion, die auf der GPU von vielen Threads gleichzeitig ausgeführt wird
  3. CEin Bauteil zur Kühlung des GPU-Chips
Antwort und Erläuterung anzeigen

Antwort: B. Eine Funktion, die auf der GPU von vielen Threads gleichzeitig ausgeführt wird

Ein Kernel in der GPU-Programmierung ist eine Funktion, die vom Programm auf der CPU-Seite gestartet wird und von vielen Threads auf der GPU mit demselben Code ausgeführt wird. Jeder Thread wählt anhand seiner Nummer das ihm zugewiesene Datenelement aus. Bei einer Array-Addition wird der Kernel z. B. so geschrieben, dass ein Thread ein Element addiert, und es werden so viele Threads gestartet, wie es Elemente gibt. Das Wort ist dasselbe wie beim Kernel eines Betriebssystems, die Bedeutung ist aber eine andere.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Kombination der Thread-Hierarchie in CUDA ist richtig (von groß nach klein)?
  2. 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?
  3. 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?
  4. Was ist der Grund für die Bedingung „if (i < n)“ im oben gezeigten CUDA-Kernel?
  5. Wie heißt bei NVIDIA-GPUs die Einheit, in der 32 Threads zu einem Bündel zusammengefasst werden und dieselbe Anweisung gleichzeitig ausführen?

Vergleiche zu diesem Thema