MPI_Barrier()导致退出代码11

时间:2017-11-13 12:15:20

标签: c mpi

我正在尝试使用MPI和C编写矩阵vektor乘法程序。 不知何故,当我使用MPI_Barrier命令时,它总是给我这个错误信息:

=============================================== ======================== =未终止您的申请流程之一

= PID 4547在localhost上运行

=退出代码:11

=清理剩余的过程========================================== ===============================

然后我删除了MPI_Barrier命令并同步我使用sleep()函数的进程,并且它工作正常。然后我想我的代码是正确的。有没有人遇到过类似的问题? 我很迷茫。

整个代码如下所示:

#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
#include <unistd.h>
int main (int argc, char **argv)
{

/* MPI Parameter */
int         err;
int         size, rank;

/* loop-parameters */
int i, j, p, m, l, k, t, v, w, d, z;


int      r, q;
double **A_r;
double  *x_q;
double  *mybuf;
double  *b_r;


/* Initialize MPI-Umgebung */
err = MPI_Init (&argc, &argv);


err = MPI_Comm_rank (MPI_COMM_WORLD, &rank);
err = MPI_Comm_size (MPI_COMM_WORLD, &size);

我在这里跳过了不相关的部分。

 /* Output of each process */
for (p = 0; p < size; p++)
{
    if (rank == p)
    {
        printf ("Prozess %d: A_r\n", p);
        for (i = 0; i < r; i++)
        {
            for (j = 0; j < m; j++)
                printf ("%4.2f ", A_r[i][j]);
            printf ("\n");
        }

        printf ("\nProzess %d: x_q\n", p);
        for (j = 0; j < q; j++)
            printf ("%4.2f ", x_q[j]);
        printf ("\n");

        printf ("\nProzess %d: b_r\n", p);
        for (i = 0; i < r; i++)
            printf ("%4.2f ", b_r[i]);
        printf ("\n\n\n");
    }
    MPI_Barrier(MPI_COMM_WORLD);
    }
for (i = 0; i < r; i++)
    free (A_r[i]);
free (A_r);
free (x_q);
free (mybuf);
free (b_r);

err = MPI_Finalize ();

return 0;
}
编辑:对不起,我希望现在好多了。如果我把&#34; //&#34;那么Thing就在最后一个for循环之前。在MPI_Barrier之前,程序可以工作,但是如果我实际上在我的代码中它会给我上面提到的错误。

0 个答案:

没有答案