【发布时间】:2018-05-25 15:28:18
【问题描述】:
我需要一些帮助。我有一个 mpi 程序,它只是发送和接收消息。但是程序不能正常工作。我阅读并看到了另一个例子,我认为我的程序必须工作。当程序运行时,消息被发送但程序没有完成。好像它在等待什么。这是代码
#include<stdio.h>
#include<mpi.h>
int main( int argc, char* argv[] ) {
int this_proc, total_procs;
MPI_Init( &argc, &argv );
MPI_Comm_size( MPI_COMM_WORLD, &total_procs );
MPI_Comm_rank( MPI_COMM_WORLD, &this_proc );
int i;
int* localI;
localI=(int*)malloc(sizeof(double));
if (this_proc != 0)
{
MPI_Send(&this_proc, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
printf("Enviado %d\n",this_proc );
}
else
{
for (i = 1; i < total_procs; i++)
{
MPI_Recv(localI, 1, MPI_INT, i, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf("Recibiendo mensaje del proceso nro %d \n", *localI);
}
// This is only called for the process that enters the else block
}
MPI_Finalize();
printf("Finalizando %d\n", this_proc);
}
我为 5 个进程运行我的程序
mpirun -np 5 holaMundo
输出是下一个:
Recibiendo mensaje del proceso nro 1 Recibiendo mensaje del proceso nro 2 Recibiendo mensaje del proceso nro 3 Recibiendo mensaje del proceso nro 4
就像您可以看到程序没有完成一样。 我认为它有工作... 感谢您的帮助,再次为我的英语感到抱歉。
【问题讨论】:
-
您的程序无法编译。先修复缩进,再修复程序。