GPU-Programmierung
In einem CUDA-Kernel wird die Nummer i jedes Threads mit der oben gezeigten Formel bestimmt. Welchen Wert hat i für den Thread mit blockIdx.x=2, blockDim.x=256 und threadIdx.x=5?
int i = blockIdx.x * blockDim.x + threadIdx.x;
- A517
- B263
- C2565
Antwort und Erläuterung anzeigen
Antwort: A. 517
blockIdx.x ist die Nummer des Blocks im Grid, blockDim.x die Zahl der Threads pro Block und threadIdx.x die Nummer des Threads im Block. Block 0 ist für 0 bis 255 zuständig, Block 1 für 256 bis 511; der Thread mit Nummer 5 in Block 2 hat daher 2×256+5=517. Mit dieser Formel erhält jeder Thread eine eindeutige, überschneidungsfreie laufende Nummer, die das zugewiesene Array-Element bestimmt.