GPU-Programmierung
Ein Array mit 1000 Elementen soll mit 256 Threads pro Block verarbeitet werden, wobei jeder Thread ein Element bearbeitet. Wie viele Blöcke müssen gestartet werden?
- A3
- B4
- C1000
Antwort und Erläuterung anzeigen
Antwort: B. 4
1000÷256≈3,9; bei Abrunden auf 3 Blöcke würden nur 256×3=768 Elemente verarbeitet, und der Rest bliebe unbearbeitet. Es werden daher aufgerundet 4 Blöcke (1024 Threads) gestartet, und die 24 überzähligen Threads tun nichts. Allgemein wird mit „(n + 256 - 1) / 256“ aufgerundet. Damit die überzähligen Threads nicht außerhalb des Arrays lesen oder schreiben, muss im Kernel die Nummer geprüft werden.