| /* Test large vector lengths. */ |
| |
| #include <assert.h> |
| |
| #define n 10000 |
| int a1[n], a2[n]; |
| |
| #define gentest(name, outer, inner) \ |
| void name () \ |
| { \ |
| long i, j, t1, t2, t3; \ |
| _Pragma(outer) \ |
| for (i = 0; i < n; i++) \ |
| { \ |
| t1 = 0; \ |
| t2 = 0; \ |
| _Pragma(inner) \ |
| for (j = i; j < n; j++) \ |
| { \ |
| t1++; \ |
| t2--; \ |
| } \ |
| a1[i] = t1; \ |
| a2[i] = t2; \ |
| } \ |
| for (i = 0; i < n; i++) \ |
| { \ |
| assert (a1[i] == n-i); \ |
| assert (a2[i] == -(n-i)); \ |
| } \ |
| } \ |
| |
| gentest (test1, "acc parallel loop gang vector_length (128) firstprivate (t1, t2)", |
| "acc loop vector reduction(+:t1) reduction(-:t2)") |
| |
| gentest (test2, "acc parallel loop gang vector_length (128) firstprivate (t1, t2)", |
| "acc loop worker vector reduction(+:t1) reduction(-:t2)") |
| |
| gentest (test3, "acc parallel loop gang worker vector_length (128) firstprivate (t1, t2)", |
| "acc loop vector reduction(+:t1) reduction(-:t2)") |
| |
| gentest (test4, "acc parallel loop firstprivate (t1, t2)", |
| "acc loop reduction(+:t1) reduction(-:t2)") |
| |
| |
| int |
| main () |
| { |
| test1 (); |
| test2 (); |
| test3 (); |
| test4 (); |
| |
| return 0; |
| } |