GPU-Programmierung

Welche Aussage zum Verhalten unmittelbar nach dem Start eines Kernels durch das CPU-seitige Programm in CUDA ist im Allgemeinen richtig?

  1. ADie CPU hält stets an, bis der Kernel beendet ist, und kann nichts tun
  2. BDer Kernel wird auf der CPU ausgeführt
  3. CDer Start ist asynchron; die CPU fährt fort, ohne auf das Ende des Kernels zu warten, und muss vor der Verwendung des Ergebnisses synchronisieren
Antwort und Erläuterung anzeigen

Antwort: C. Der Start ist asynchron; die CPU fährt fort, ohne auf das Ende des Kernels zu warten, und muss vor der Verwendung des Ergebnisses synchronisieren

Ein Kernel-Start fügt der Befehlsfolge an die GPU lediglich eine Verarbeitung hinzu, und die Kontrolle kehrt sofort zur CPU-Seite zurück. Die CPU kann daher, während die GPU rechnet, z. B. die nächsten Daten vorbereiten. Bevor das Ergebnis auf der CPU gelesen wird, muss das Ende des Kernels jedoch durch cudaDeviceSynchronize oder durch Kopieren des Ergebnisses (im selben Stream wird auf den Abschluss der vorherigen Verarbeitung gewartet) sichergestellt werden. Auch bei Zeitmessungen lässt sich die Kernel-Zeit ohne Synchronisation nicht korrekt messen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Aussage zum Unterschied in der Entwurfsphilosophie von CPU und GPU ist richtig?
  2. Welches Merkmal beschreibt Aufgaben, die sich auf der GPU schnell verarbeiten lassen, am besten?
  3. Welche Verarbeitung läuft auf der GPU tendenziell ineffizient?
  4. Welche Aussage zum „Kernel“ in der GPU-Programmierung, etwa mit CUDA, ist richtig?
  5. Welche Kombination der Thread-Hierarchie in CUDA ist richtig (von groß nach klein)?

Vergleiche zu diesem Thema