GPU-programmeren

Bij lichte bewerkingen zoals het één keer optellen van array-elementen kan het sturen van data naar de GPU trager zijn dan rekenen op de CPU. Wat is de belangrijkste reden?

  1. AOmdat een GPU niet kan optellen
  2. BOmdat de tijd voor het kopiëren van data via PCI Express langer is dan de tijd die de berekening op de GPU wint
  3. COmdat waarden veranderen als data naar de GPU wordt gestuurd
Antwoord en toelichting tonen

Antwoord: B. Omdat de tijd voor het kopiëren van data via PCI Express langer is dan de tijd die de berekening op de GPU wint

De bandbreedte van PCI Express is ruim een orde van grootte kleiner dan die van het GPU-geheugen, dus alleen het sturen van data kost al tijd. Als per element slechts één optelling wordt gedaan, is de rekentijd verwaarloosbaar ten opzichte van de verzendtijd en wordt de snelheid van de GPU niet benut. Een GPU loont wanneer veel berekeningen op de verzonden data worden gedaan of wanneer data in het GPU-geheugen blijft staan en herhaaldelijk wordt verwerkt.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over GPU-programmeren

  1. Welke reden waarom overdracht naar de GPU sneller gaat nadat het CPU-geheugen is vastgepind (page-locked), is juist?
  2. Wat is het belangrijkste doel van het gebruik van meerdere CUDA-streams?
  3. Een programma dat duizenden keren achter elkaar zeer kleine kernels start is traag. Welke verbetermethode is het meest passend?
  4. Welke uitspraak over CUDA unified memory is juist?
  5. Wat bepaalt hoofdzakelijk de prestaties wanneer op een GPU twee grote arrays elementgewijs worden opgeteld (c[i] = a[i] + b[i])?

Vergelijkingen bij dit onderwerp