MPI_Sendrecv的问题

时间:2015-10-29 04:47:32

标签: c mpi

我想将n*n矩阵均匀地分发到所有处理器,以便每个处理器使用MPI_Sendrecv()从主处理器接收(n /处理器)行。但是,我一直收到错误,终端冻结了。以下是我的代码的一部分:

    MPI_Comm_rank(MPI_COMM_WORLD, &Rank); 
    MPI_Comm_size(MPI_COMM_WORLD, &Proc);
    MPI_Status status[Proc];

    int **Matrix;
    Matrix= malloc(n * sizeof(int *));
    for (int i = 0; i < n; i++) {
        Matrix[i] =  malloc(n * sizeof(int));
    }

    int chunk = n/Proc;
    for(i=0; i<Proc ;i++) { 
        k = i*chunk;
        k1 = (i+1)*chunk;
        for(j=k;j<k1;j++) {
            MPI_Sendrecv(Matrix[j], n, MPI_INT, i, TAG,
                         Matrix[j], n, MPI_INT, i, TAG,
                         MPI_COMM_WORLD, &status[i]);
        }
    }

注意到,我故意逐行发送,因为我声明**Matrix以便使用传统方法维持对每个元素的正常访问,即Matrix[i][j]。你们建议有什么解决方法吗?

0 个答案:

没有答案