GPU-Programmierung

Welche Aussage zum Shared Memory von CUDA ist richtig?

  1. AEin großer Hauptspeicher, der von allen GPUs und der CPU gemeinsam genutzt wird
  2. BEin Bereich, in dem sich der GPU-Speicher mit der Festplatte teilt
  3. CEin kleiner, schneller Speicher auf dem Chip, den sich die Threads desselben Blocks teilen können und der vom Programm explizit verwendet wird
Antwort und Erläuterung anzeigen

Antwort: C. Ein kleiner, schneller Speicher auf dem Chip, den sich die Threads desselben Blocks teilen können und der vom Programm explizit verwendet wird

Der Shared Memory ist ein schneller Speicher von einigen zehn KB pro Block in jedem SM, der um ein Vielfaches schneller gelesen und geschrieben werden kann als der Global Memory (DRAM der GPU). Da Threads desselben Blocks hier Daten ablegen und teilen können, dient er dazu, Daten nur einmal aus dem Global Memory zu laden und mehrfach zu verwenden oder Zwischenergebnisse zwischen Threads auszutauschen. Anders als bei einem Cache legt das Programm fest, was abgelegt wird.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Funktion hat __syncthreads() in CUDA?
  2. In CUDA wurde __syncthreads() innerhalb von „if (threadIdx.x < 16)“ geschrieben, sodass nur ein Teil der Threads es durchläuft. Was kann geschehen?
  3. Welche Aussage zum Bank Conflict im Shared Memory von CUDA ist richtig?
  4. Eine 32×32-float-Tabelle liegt im Shared Memory, und die 32 Threads eines Warps lesen in Spaltenrichtung (vertikal), wodurch Bank Conflicts entstehen. Welche Gegenmaßnahme ist üblich?
  5. Warum wird beim Berechnen eines großen Matrixprodukts auf der GPU die Matrix in kleine Tiles unterteilt und in den Shared Memory geladen?

Vergleiche zu diesem Thema