OpenACC documentation updates.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c / subr.cu
blobe86e0fc53edd4bf303f7d6974fbf87e4aba05814
2 extern "C" __global__ void
3 delay (clock_t * d_o, clock_t delay)
5   clock_t start, ticks;
7   start = clock ();
9   ticks = 0;
11   while (ticks < delay)
12     ticks = clock () - start;
15 extern "C" __global__ void
16 delay2 (unsigned long *d_o, clock_t delay, unsigned long tid)
18   clock_t start, ticks;
20   start = clock ();
22   ticks = 0;
24   while (ticks < delay)
25     ticks = clock () - start;
27   d_o[0] = tid;
30 extern "C" __global__ void
31 sum (clock_t * d_o, int N)
33   int i;
34   clock_t sum;
35   __shared__ clock_t ticks[32];
37   sum = 0;
39   for (i = threadIdx.x; i < N; i += blockDim.x)
40     sum += d_o[i];
42   ticks[threadIdx.x] = sum;
44   syncthreads ();
46   for (i = 16; i >= 1; i >>= 1)
47     {
48       if (threadIdx.x < i)
49         ticks[threadIdx.x] += ticks[threadIdx.x + i];
51       syncthreads ();
52     }
54   d_o[0] = ticks[0];
57 extern "C" __global__ void
58 mult (int n, float *x, float *y)
60   int i = blockIdx.x * blockDim.x + threadIdx.x;
62   for (i = 0; i < n; i++)
63     y[i] = x[i] * x[i];