/* Test large vector lengths. */ #include #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; }