annotate gcc/testsuite/c-c++-common/goacc/reduction-6.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Check if different occurences of the reduction clause on
kono
parents:
diff changeset
2 OpenACC loop nests will compile. */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 int foo (int N)
kono
parents:
diff changeset
5 {
kono
parents:
diff changeset
6 int a = 0, b = 0, c = 0, d = 0, e = 0;
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 #pragma acc parallel
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 #pragma acc loop
kono
parents:
diff changeset
11 for (int i = 0; i < N; i++)
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 #pragma acc loop reduction(+:a)
kono
parents:
diff changeset
14 for (int j = 0; j < N; j++)
kono
parents:
diff changeset
15 a += 1;
kono
parents:
diff changeset
16 }
kono
parents:
diff changeset
17 }
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 #pragma acc parallel
kono
parents:
diff changeset
20 {
kono
parents:
diff changeset
21 #pragma acc loop reduction(+:b)
kono
parents:
diff changeset
22 for (int i = 0; i < N; i++)
kono
parents:
diff changeset
23 {
kono
parents:
diff changeset
24 #pragma acc loop
kono
parents:
diff changeset
25 for (int j = 0; j < N; j++)
kono
parents:
diff changeset
26 b += 1;
kono
parents:
diff changeset
27 }
kono
parents:
diff changeset
28 }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 #pragma acc parallel
kono
parents:
diff changeset
31 {
kono
parents:
diff changeset
32 #pragma acc loop reduction(+:c)
kono
parents:
diff changeset
33 for (int i = 0; i < N; i++)
kono
parents:
diff changeset
34 {
kono
parents:
diff changeset
35 #pragma acc loop reduction(+:c)
kono
parents:
diff changeset
36 for (int j = 0; j < N; j++)
kono
parents:
diff changeset
37 c += 1;
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 #pragma acc parallel loop
kono
parents:
diff changeset
42 for (int i = 0; i < N; i++)
kono
parents:
diff changeset
43 {
kono
parents:
diff changeset
44 #pragma acc loop reduction(+:d)
kono
parents:
diff changeset
45 for (int j = 0; j < N; j++)
kono
parents:
diff changeset
46 d += 1;
kono
parents:
diff changeset
47 }
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 #pragma acc parallel loop reduction(+:e)
kono
parents:
diff changeset
50 for (int i = 0; i < N; i++)
kono
parents:
diff changeset
51 {
kono
parents:
diff changeset
52 #pragma acc loop reduction(+:e)
kono
parents:
diff changeset
53 for (int j = 0; j < N; j++)
kono
parents:
diff changeset
54 e += 1;
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 return a + b + c + d + e;
kono
parents:
diff changeset
58 }