MPI Java矩阵乘法错误 包msj; 导入mpi。*; 公共类HelloWorld2{ 公共静态最终整数N=10; 公共静态void main(字符串[]args){ MPI.Init(args); long startTime=System.currentTimeMillis(); int rank=MPI.COMM_WORLD.rank(); int size=MPI.COMM_WORLD.size(); int tag=10,peer=(秩==0)?1:0; 如果(秩==0){ double[]a=新的double[N][N]; 对于(int i=0;i

MPI Java矩阵乘法错误 包msj; 导入mpi。*; 公共类HelloWorld2{ 公共静态最终整数N=10; 公共静态void main(字符串[]args){ MPI.Init(args); long startTime=System.currentTimeMillis(); int rank=MPI.COMM_WORLD.rank(); int size=MPI.COMM_WORLD.size(); int tag=10,peer=(秩==0)?1:0; 如果(秩==0){ double[]a=新的double[N][N]; 对于(int i=0;i,java,matrix,mpi,mpj-express,Java,Matrix,Mpi,Mpj Express,我无法运行此程序。 当我没有在for循环中的变量前面写入int时,会出现一个错误:for(int I=0;I

我无法运行此程序。
当我没有在for循环中的变量前面写入int时,会出现一个错误:
for(int I=0;I

问题是否与此相关?
你知道吗,代码中没有问题,如果“rank==1”变为真,你会得到“java.lang.ArrayIndexOutOfBoundsException:10”。这是因为您在嵌套for循环中编写了

“for(int j=0;j 你增加我两次。此异常会停止您的方法

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

您遇到了什么错误?sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)在java.lang.reflect.Method.invoke(未知源)运行时,在java.lang.Thread.run(未知源)处运行.starter.MultiRestarter$1.run(MultiRestarter.java:281),原因是:msj.HelloWorld2.fillToken(HelloWorld2.java:272)处的java.lang.NullPointerException位于msj.HelloWorld2.main(HelloWorld2.java:40)。。。6 moreOkey现在我明白了,谢谢,以前共享过相同的代码,但是解决方案还没有达到,所以我问了againNo问题。我的荣幸。
    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() ;
                }

}