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?

  1. A21
  2. B2
  3. 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).

Dit onderwerp oefenen Naar de onderwerppagina

Verwante rekentools

Meer vragen over GPU-programmeren

  1. Welke uitspraak over het verschil in ontwerpfilosofie tussen CPU en GPU is juist?
  2. Welk kenmerk van werk dat op een GPU snel kan worden verwerkt is het meest passend?
  3. Welke bewerking wordt op een GPU waarschijnlijk inefficiënt uitgevoerd?
  4. Welke uitspraak over wat in GPU-programmering zoals CUDA een 'kernel' wordt genoemd, is juist?
  5. Welke combinatie van de hiërarchie van CUDA-threads is juist (van groot naar klein)?

Vergelijkingen bij dit onderwerp