1/12
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
1
__global__ void reduce3(float in, float out, int n) {

2
extern __shared__ float sdata[];

3
unsigned int tid = threadIdx.x;

4
unsigned int i = blockIdx.x * (blockDim.x * 2) + threadIdx.x;

5
float sum = (i < n) ? in[i] : 0;

6
if (i + blockDim.x < n) sum += in[i + blockDim.x];

7
sdata[tid] = sum;

8
__syncthreads();

9
for (unsigned int s = blockDim.x / 2; s > 0; s >>= 1) {

10
if (tid < s) {

11
sdata[tid] += sdata[tid + s];
}

12
__syncthreads();
}

13
if (tid == 0) out[blockIdx.x] = sdata[0];