GPU-Programmierung
Welche Funktion hat __syncthreads() in CUDA?
- AEs lässt alle Threads der GPU über Blockgrenzen hinweg aufeinander warten
- BEs lässt alle Threads desselben Blocks an dieser Stelle aufeinander warten und macht die bis dahin erfolgten Schreibzugriffe auf den Shared Memory sichtbar
- CEs gleicht die Uhren von CPU und GPU ab
Antwort und Erläuterung anzeigen
Antwort: B. Es lässt alle Threads desselben Blocks an dieser Stelle aufeinander warten und macht die bis dahin erfolgten Schreibzugriffe auf den Shared Memory sichtbar
Bei Verarbeitungen mit Shared Memory muss ein von einem Thread geschriebener Wert fertig geschrieben sein, bevor ihn ein anderer Thread liest. __syncthreads() lässt warten, bis alle Threads des Blocks hier angekommen sind, und garantiert so z. B. die Reihenfolge, dass alle erst die Daten in den Shared Memory geladen haben, bevor die Berechnung beginnt. Aufeinander warten lassen sich nur Threads desselben Blocks.