[mpich-discuss] ISend problem

Jierui XIE jierui.xie at gmail.com
Fri Nov 11 16:56:22 CST 2011


Hello,

I want to use MPI_ISend but got errors.

For EACH process,  I used a loop to post MPI_ISend() to other
processes(not all) and the number of iteration is large (say 100,000)
I am wondering if there is a limit(max number) for posting MPI_ISend().

If I replace it with a blocking MPI_Send, then it is fine. Why?


Jerry
Thanks.

==============Erorr===============================
rank 6 in job 223  node08_42506   caused collective abort of all ranks
  exit status of rank 6: return code 1
Fatal error in MPI_Isend: Other MPI error, error stack:
MPI_Isend(146)...............: MPI_Isend(buf=0x12da9e8, count=2,
MPI_INT, dest=6, tag=1, MPI_COMM_WORLD, request=0x7fff0f363068) failed
MPIDI_EagerContigIsend(535)..: failure occurred while attempting to
send an eager message
MPID_nem_tcp_iSendContig(400): writev to socket failed - Connection
reset by peer


==============Code===============================

for(int t=1;t<maxT;t++){
		MPI_Request req_s[totalMsgOut],req_r[totalMsgIn];
		int tag=t;

		//------------------------------------
		int msgArr[totalMsgIn][2];
		for(int i=0;i<totalMsgIn;i++)
			MPI_Irecv(&msgArr[i],2,MPI_INT,MPI_ANY_SOURCE,tag,MPI_COMM_WORLD,&req_r[i]);

		//-------------------------------------------------------------
		//		post send ****(problem)
		//-----------------------------------------------------------
		int dest,p=0;
		for(int i=0;i<subNODES.size();i++){
				MPI_Isend(v->msg,2,MPI_INT,dest,tag,MPI_COMM_WORLD,&req_s[p++]);
//just b,not &b

				//MPI_Send(v->msg,2,MPI_INT,dest,tag,MPI_COMM_WORLD); //just b,not &b
			}
		}
		

		//------------------------------------
		//wait
		MPI_Waitall(totalMsgIn, req_r, MPI_STATUSES_IGNORE);

		//------------------------------------
		//wait
		MPI_Waitall(totalMsgOut, req_s, MPI_STATUSES_IGNORE); //request is
just the *name* of array
	
	}


More information about the mpich-discuss mailing list