Reduction operation can reduce on multiple ranks?

Reduction operation can reduce on multiple ranks?

Theoretically, 

sum = __sec_reduce_add(a[:][:]); //sum across the whole array 'a'

sum_of_column[:]=__sec_reduce_add(a[:][:]); //sum across the column of 'a'

Actually, when I tested the second statement, the sum_of_column got always the sum across the whole array of a, no matter the rank of sum_of_column. 

For a given execution context of rank m and a reduction array section argument with rank n, where n>m, it is the last n-m ranks of the array section argument who should be reduced, right? What went wrong? 

Thank you for your help!

AttachmentSize
Downloadtext/x-c++src sec-reduce-add.cpp420 bytes
5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hello Phillippe,

     What compiler (and version) are you using?

 

Thanks,

 

Balaji V. Iyer.

I'm using icc version 13.1.0. 

To the person who is reporting and responding to this issue on behalf of Philippe, can you please send me a private message containing your personal email address.  There seems to be a profile conflict problem.

Belinda Liviero

Thanks for trying out our language feature. The reduction operations are simply defined---they always reduce everything down to a single scalar value. To do a column sum, an outer loop is needed:

 for (int i = 0; i < rows; i++) { sum[i] = __sec_reduce_add(a[i][:]); } 

Leave a Comment

Please sign in to add a comment. Not a member? Join today