我的问题是什么! 下面是我的代码,我不知道为什么,它传输的是最小数据,但不是MPI_Reduce手册中所说的位置!
//where b is an array with N data, int
//and min and array with 2 data, int
MPI_Reduce(b, min, 1, MPI_2INT, MPI_MINLOC,0, MPI_COMM_WORLD);
if(rank==0){
printf("MIN from B table is =%d\n",min[1]);
printf("Position of minimum =%d\n",min[0]);
}
答案 0 :(得分:1)
MPI_MINLOC
不会返回最小值的位置,而是返回结构中第二个元素的值,在该元素中找到第一个元素的最小值。
此外,如果您使用count=1
,将仅使用第一对b
。
如果您认为自己使用正确,请使用Minimal, Complete and Verifiable Example
更新问题。