GPU-programmeren
Stel dat een SM van een GPU één issue-eenheid heeft die per cyclus instructies van één warp kan uitgeven. Elke warp geeft herhaaldelijk 20 cycli instructies uit en wacht dan 400 cycli op het resultaat van een geheugenlading. Hoeveel warps zijn minstens nodig om ledige tijd door het wachten op het geheugen weg te werken (latentieverberging), als het wisselen tussen warps geen tijd kost?
- A21
- B2
- C420
Antwoord en toelichting tonen
Antwoord: A. 21
Eén warp kan maar in 20 van elke 420 cycli (20 + 400) instructies uitgeven. Om de issue-eenheid bezig te houden, moeten 420 ÷ 20 = 21 warps elkaar afwisselen: terwijl één warp 400 cycli wacht, vullen de andere 20 warps die tijd door elk 20 cycli instructies uit te geven. Met te weinig warps wordt het wachten zichtbaar in de prestaties en staan de rekeneenheden stil. Op een echte GPU hangt het benodigde aantal af van de wachttijd en de instructiemix, en wachttijden kunnen ook worden opgevuld door binnen één warp meer onderling onafhankelijke instructies te gebruiken (parallellisme op instructieniveau).