[mpich-discuss] MPI_Finalize hangs
Jayesh Krishna
jayesh at mcs.anl.gov
Tue Jul 26 13:02:30 CDT 2011
Hi,
Are you able to ping from each node to every other node ? (Note that it is not enough to be able to ping all nodes from the node where you launch your job). I would recommend using two hosts for your initial tests. Ping from machine A to machine B AND from machine B to machine A. If that works try running cpi.exe on the two nodes, mpiexec -n 2 -machinefile mf.txt cpi.exe).
-Jayesh
----- Original Message -----
From: "shridhar mohan" <shri.emi at gmail.com>
To: "Jayesh Krishna" <jayesh at mcs.anl.gov>
Sent: Tuesday, July 26, 2011 12:20:32 PM
Subject: Re: MPI_Finalize hangs
Hi,
I can run the example CPI, on a single host.
When I try to run it on multiple hosts
it still works. But, it does not terminate
properly. It hags when i try to quit the CPi example.
-shridhar
On Mon, Jul 25, 2011 at 9:34 PM, Jayesh Krishna < jayesh at mcs.anl.gov > wrote:
Hi,
Can you run the example program provided with MPICH2 (C:\Progra~1\MPICH2\examples\cpi.exe)?
(PS: The MPI processes try to connect to each other to exchange data when MPI_Send() is called. So your problem could still be a network setup issue.)
Regards,
Jayesh
----- Original Message -----
From: "shridhar mohan" < shri.emi at gmail.com >
To: "Jayesh Krishna" < jayesh at mcs.anl.gov >
Cc: mpich-discuss at mcs.anl.gov
Sent: Monday, July 25, 2011 6:25:24 PM
Subject: MPI_Finalize hangs
Hi,
I found the problem.
It was not the firewall.
The process hangs at MPI_Finalize.
When i abort the process I Get correct the results.
I think the MPI_Send causes this problem.
I tried using non-blocking send but ran in to the same issue.
I have the same issue when i try running the CPi.c example
on multiple hosts.
The following is the code.
I don't see anything wrong with it.
What do you think causes this issue.
Program
#include < mpi .h>
#include <iostream>
#include <stdio.h> /* printf and BUFSIZ defined there */
#include <stdlib.h> /* exit defined there */
using namespace std;
int _tmain(int argc, char * argv[])
{
int numtasks, rank, dest, source, rc, tag=1;
char inmsg, outmsg='F';
MPI_Status Stat;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank == 0) {
dest = 1;
printf(" Process %d: testing \n",rank);
rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD);
printf(" Process %d: sent \n",rank);
}
else if (rank == 1) {
source = 0;
printf(" Process %d: testing \n",rank);
rc = MPI_Recv(&inmsg, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD,&Stat);
printf("Process %d: Received %c char(s) from task %d with tag %d \n",
rank, inmsg, Stat.MPI_SOURCE, Stat.MPI_TAG);
}
MPI_Finalize();
return 0;
}
-Regards
-shridhar
More information about the mpich-discuss
mailing list