| /* Exercise nested function decomposition, gcc/tree-nested.c. */ |
| |
| int |
| main (void) |
| { |
| int j = 0, k = 6, l = 7, m = 8; |
| void simple (void) |
| { |
| int i; |
| #pragma acc parallel |
| { |
| #pragma acc loop |
| for (i = 0; i < m; i+= k) |
| j = (m + i - j) * l; |
| } |
| } |
| void collapse (void) |
| { |
| int x, y, z; |
| #pragma acc parallel |
| { |
| #pragma acc loop collapse (3) |
| for (x = 0; x < k; x++) |
| for (y = -5; y < l; y++) |
| for (z = 0; z < m; z++) |
| j += x + y + z; |
| } |
| } |
| void reduction (void) |
| { |
| int x, y, z; |
| #pragma acc parallel reduction (+:j) |
| { |
| #pragma acc loop reduction (+:j) collapse (3) |
| for (x = 0; x < k; x++) |
| for (y = -5; y < l; y++) |
| for (z = 0; z < m; z++) |
| j += x + y + z; |
| } |
| } |
| simple(); |
| collapse(); |
| reduction(); |
| return 0; |
| } |