GPU-programmeren
In een CUDA-kernel wordt met bovenstaande formule het nummer i van elke thread bepaald. Wat is i voor de thread met blockIdx.x=2, blockDim.x=256 en threadIdx.x=5?
int i = blockIdx.x * blockDim.x + threadIdx.x;
- A517
- B263
- C2565
Antwoord en toelichting tonen
Antwoord: A. 517
blockIdx.x is het nummer van het block binnen het grid, blockDim.x het aantal threads per block en threadIdx.x het nummer van de thread binnen het block. Block 0 behandelt 0 tot 255 en block 1 behandelt 256 tot 511, dus de thread met nummer 5 in block 2 krijgt 2×256+5=517. Met deze formule krijgt elke thread een doorlopend, niet-overlappend nummer waarmee wordt bepaald welk array-element hij behandelt.