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?
- ADe CPU staat altijd stil tot de kernel klaar is en kan niets doen
- BDe kernel wordt op de CPU uitgevoerd
- 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.