GPU-programmeren

Welke uitspraak is in het algemeen juist over wat er in CUDA gebeurt direct nadat het programma aan de CPU-zijde een kernel start?

  1. ADe CPU staat altijd stil tot de kernel klaar is en kan niets doen
  2. BDe kernel wordt op de CPU uitgevoerd
  3. CHet starten is asynchroon, dus de CPU gaat zonder op het einde van de kernel te wachten verder met de volgende bewerking, en vóór het gebruik van het resultaat moet worden gesynchroniseerd
Antwoord en toelichting tonen

Antwoord: C. Het starten is asynchroon, dus de CPU gaat zonder op het einde van de kernel te wachten verder met de volgende bewerking, en vóór het gebruik van het resultaat moet worden gesynchroniseerd

Het starten van een kernel voegt alleen een bewerking toe aan de reeks opdrachten voor de GPU, en de besturing keert direct terug naar de CPU. De CPU kan dus terwijl de GPU rekent al de volgende data voorbereiden. Voordat het resultaat op de CPU wordt gelezen, moet echter het einde van de kernel worden vastgesteld, met cudaDeviceSynchronize of het kopiëren van het resultaat (in dezelfde stream wordt gewacht tot de voorgaande bewerking klaar is). Ook bij het meten van tijd kan de tijd van de kernel zonder synchronisatie niet juist worden gemeten.

Dit onderwerp oefenen Naar de onderwerppagina

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