GPU-Programmierung

Ein SM einer GPU habe eine Ausgabeeinheit, die pro Zyklus Befehle eines Warps ausgeben kann. Jeder Warp gibt wiederholt 20 Zyklen lang Befehle aus und wartet dann 400 Zyklen auf das Ergebnis eines Speicherladevorgangs. Wie viele Warps sind mindestens nötig, um Leerlauf durch Speicherwartezeiten zu vermeiden (Latenzverdeckung), wenn der Warp-Wechsel keine Zeit kostet?

  1. A21
  2. B2
  3. C420
Antwort und Erläuterung anzeigen

Antwort: A. 21

Ein Warp kann nur in 20 von je 420 Zyklen (20 + 400) Befehle ausgeben. Damit die Ausgabeeinheit ausgelastet bleibt, müssen sich 420 ÷ 20 = 21 Warps abwechseln: Während ein Warp 400 Zyklen wartet, füllen die anderen 20 Warps diese Zeit mit je 20 Zyklen Befehlsausgabe. Bei zu wenigen Warps schlägt die Wartezeit auf die Leistung durch, und die Recheneinheiten stehen still. Auf einer realen GPU hängt die nötige Zahl von der Wartezeit und dem Befehlsmix ab, und Wartezeiten lassen sich auch füllen, indem man innerhalb eines Warps mehr voneinander unabhängige Befehle bereitstellt (Parallelität auf Befehlsebene).

Dieses Thema üben Zur Themenseite

Passende Rechner

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