reduce中的MPI-min函数
我试图在整数数组中找到最小值,但是它返回0reduce中的MPI-min函数,mpi,min,reduce,Mpi,Min,Reduce,我试图在整数数组中找到最小值,但是它返回0 import mpi.*; import java.util.Random; class AddIntSR { public static void main(String[] params) throws Exception { MPI.Init(params); int me = MPI.COMM_WORLD.Rank(); int size = MPI.COMM_WORLD.Size(); final int C
import mpi.*;
import java.util.Random;
class AddIntSR
{
public static void main(String[] params) throws Exception
{
MPI.Init(params);
int me = MPI.COMM_WORLD.Rank();
int size = MPI.COMM_WORLD.Size();
final int CHUNKSIZE = 1;
final int ROOT = 0;
Random rg = new Random();
int [] bigBuf = new int[CHUNKSIZE *size];
int [] smallBuf = new int[CHUNKSIZE];
int [] minBuf = new int[1];
int localTotal = 0;
if (me == ROOT)
{
for(int i = 0; i< bigBuf.length; i++)
bigBuf[i] = rg.nextInt(10);
for(int i = 0; i< bigBuf.length; i++)
System.out.println("bigBuf "+bigBuf[i]);
}
MPI.COMM_WORLD.Scatter(bigBuf,0,CHUNKSIZE,MPI.INT,smallBuf,0,CHUNKSIZE,MPI.INT,ROOT);
if(me!= ROOT)
{
System.out.println("smallBuf "+me+ ": "+smallBuf[0]);
for(int i = 0; i < smallBuf.length; i++)
localTotal += smallBuf[i];
}
MPI.COMM_WORLD.Reduce(new int[]{localTotal},0,bigBuf,0,1,MPI.INT,MPI.MAX,ROOT);
MPI.COMM_WORLD.Reduce(new int[]{localTotal},0,minBuf,0,1,MPI.INT,MPI.MIN,ROOT);
if(me == ROOT)
{
System.out.println(bigBuf[0]);
System.out.println(minBuf[0]);
}
}
}
导入mpi.*;
导入java.util.Random;
类附加
{
公共静态void main(字符串[]参数)引发异常
{
MPI.Init(参数);
int me=MPI.COMM_WORLD.Rank();
int size=MPI.COMM_WORLD.size();
最终int CHUNKSIZE=1;
最终整数根=0;
随机rg=新随机();
int[]bigBuf=新int[CHUNKSIZE*size];
int[]smallBuf=新int[CHUNKSIZE];
int[]minBuf=新int[1];
int localTotal=0;
if(me==根)
{
for(int i=0;i
我不知道为什么它不起作用。最大功能似乎工作正常。
另外,如何访问发送到处理器0的整数,以便将其包含在最小/最大比较中
谢谢。减少
MIN
总是导致0
,因为localTotal
在秩根中总是0
,这确实是最小值
调用MPI.COMM\u WORLD.Scatter
后,所有进程(包括ROOT
在内)将在其smallBuf
中有一段数据。因此,您应该删除以下条件,即:
if(me!=ROOT)
{
System.out.println(“smallBuf”+me+:“+smallBuf[0]);
对于(int i=0;i
应该简单地变成:
System.out.println(“smallBuf”+me+:“+smallBuf[0]);
对于(int i=0;i
非常感谢!非常感谢!