sandbox/bugs/reductions.c
Reductions for user-defined macros
When the code below attempts an automatic reduction on the
iterator loop via the macro syntax, it does not work. I
noticed that generated -source file does not add the
relevant MPI lines to the user-defined macro, which it does for
foreach(). See also the output.
macro iterator (int start, int end, int index, Reduce reductions = None) {
for (int index = start; index <= end; index++)
{...}
}
int main() {
int total = 0, end = 16;
iterator (1, end, i, reduction(+:total))
total++;
if (pid() == 0)
printf ("%d %d\n", total, npe()*end);
int total2 = 0;
init_grid (16);
foreach(reduction(+:total2))
total2++;
if (pid() == 0)
printf ("%d %d %d\n", total2, sq(N), npe());
assert (total2 == sq(N));
assert (total == npe()*end);
}