GPU-Programmierung

Welche Aussage zur Occupancy der GPU ist richtig?

  1. ABei 100 % Occupancy wird stets die höchste Leistung erzielt
  2. BAuch bei niedriger Occupancy kann hohe Leistung erreicht werden, wenn jeder Thread viele unabhängige Berechnungen ausführt und so die Befehlsparallelität steigt
  3. CDie Occupancy hat überhaupt keinen Einfluss auf die Leistung
Antwort und Erläuterung anzeigen

Antwort: B. Auch bei niedriger Occupancy kann hohe Leistung erreicht werden, wenn jeder Thread viele unabhängige Berechnungen ausführt und so die Befehlsparallelität steigt

Occupancy ist ein Mittel, Latenzen zu verbergen, kein Ziel. Kann ein Thread mehrere voneinander unabhängige Berechnungen oder Speicherlesezugriffe hintereinander ausgeben, lässt sich die Wartezeit auch mit wenigen Warps füllen. Umgekehrt kann es langsamer werden, wenn zur Steigerung der Occupancy die Register verringert werden und dadurch mehr in den Speicher ausgelagert wird. Verlässlich ist es, die Leistung durch tatsächliche Messung mit einem Profiler zu beurteilen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu GPU-Programmierung

  1. Welche Aussage zum Verhältnis von Block und SM (Streaming Multiprocessor) in CUDA ist richtig?
  2. In CUDA soll mitten im Kernel gewartet werden, bis die Berechnung aller anderen Blöcke abgeschlossen ist, bevor die nächste Phase beginnt. Welche Methode ist üblich?
  3. Beim Erstellen eines Histogramms von Pixelwerten auf der GPU kann es langsam sein, wenn alle Threads direkt mit atomicAdd auf die 256 Bins im Global Memory addieren. Welche Verbesserung ist richtig?
  4. Warum wird beim Berechnen der Summe vieler Werte auf der GPU eine baumförmige Reduktion verwendet (wiederholtes Addieren benachbarter Werte, wobei sich die Zahl halbiert)?
  5. Wie viele Stufen sind nötig, wenn 1024 Werte mit einer baumförmigen Reduktion summiert werden?

Vergleiche zu diesem Thema