MPI Java Matrix乘法错误

时间:2017-02-27 17:09:14

标签: java matrix mpi mpj-express

    package msj;
    import mpi.*;
    public class HelloWorld2 {

    public static final int N = 10;

    public static void main(String[] args) {

        MPI.Init(args);

        long startTime = System.currentTimeMillis();

        int rank = MPI.COMM_WORLD.Rank();
        int size = MPI.COMM_WORLD.Size();
        int tag = 10, peer = (rank==0) ? 1:0;

        if(rank == 0) {
        double [][] a = new double [N][N];

        for(int i = 0; i < N; i++)
            for(int j = 0; j < N; j++)
             a[i][j] = 10.0;

        Object[] sendObjectArray = new Object[1];
        sendObjectArray[0] = (Object) a;
        MPI.COMM_WORLD.Send(sendObjectArray, 0, 1, MPI.OBJECT, peer, tag);
        } else if(rank == 1){
        double [][] b = new double [N][N];

        for(int i = 0; i < N; i++)
        for(int j = 0; j < N; i++)
        b[i][j] = 0;

        Object[] recvObjectArray = new Object[1];
        MPI.COMM_WORLD.Recv(recvObjectArray, 0, 1, MPI.OBJECT, peer, tag);
        b = (double[][]) recvObjectArray[0];

        for(int i = 0; i < 4; i++){
        for(int j = 0; j < N; i++)

        //long endTime = System.currentTimeMillis();

        //long endTime = System.currentTimeMillis();

        System.out.print(b[i][j]+"\t");
        System.out.println("\n");
        //System.out.println("Calculated in " +
                                  // (endTime - startTime) + " milliseconds");
            }
            }
                  MPI.Finalize() ;
                }

} 

我无法运行此程序。
当我在for循环中的变量之前没有写一个int时,我收到一个错误:for( int i = 0; i < N; i++)

问题与此有关吗?
你有任何想法,代码中没有问题

1 个答案:

答案 0 :(得分:0)

如果“rank == 1”变为true,则会出现“java.lang.ArrayIndexOutOfBoundsException:10”。这是因为你在嵌套的for循环中编写了

“for(int j = 0; j&lt; N; i ++)”而不是 “for(int j = 0; j

你增加我两次。此异常将停止您的方法。

先生。 复制和先生粘贴发送问候。 ; o)