GPU-programmeren

Welke uitspraak over een uitgangspunt dat bij het schrijven van GPU-kernels moet worden aangehouden, is juist?

  1. AThreads worden altijd een voor een in volgorde van klein nummer uitgevoerd
  2. BBlock 1 begint pas nadat block 0 klaar is
  3. CDe volgorde waarin threads en blocks worden uitgevoerd staat niet vast, dus men schrijft zo dat het resultaat niet van de uitvoeringsvolgorde afhangt
Antwoord en toelichting tonen

Antwoord: C. De volgorde waarin threads en blocks worden uitgevoerd staat niet vast, dus men schrijft zo dat het resultaat niet van de uitvoeringsvolgorde afhangt

Een GPU wijst threads en blocks achtereenvolgens toe aan vrije middelen, dus de uitvoeringsvolgorde verandert met het GPU-model en de belasting. Als een thread op een waarde rekent die door een andere thread is geschreven, kan dat toevallig goed werken maar in een andere omgeving fout gaan. Als een volgorde nodig is, gebruikt men __syncthreads() binnen een block, het splitsen van de kernel tussen blocks en atomaire bewerkingen of reductie voor sommatie.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over GPU-programmeren

  1. Wat is het belangrijkste doel van het laten lopen via shared memory bij het transponeren van een grote matrix op een GPU (b[j][i] = a[i][j])?
  2. Welke uitspraak is in het algemeen juist over wat er in CUDA gebeurt direct nadat het programma aan de CPU-zijde een kernel start?
  3. Welke uitspraak over het verschil in ontwerpfilosofie tussen CPU en GPU is juist?
  4. Welk kenmerk van werk dat op een GPU snel kan worden verwerkt is het meest passend?
  5. Welke bewerking wordt op een GPU waarschijnlijk inefficiënt uitgevoerd?

Vergelijkingen bij dit onderwerp