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?
- A21
- B2
- 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).