Community
cancel
Showing results for 
Search instead for 
Did you mean: 
diedro
Beginner
96 Views

MPI_WAITALL difference OpenMPI - MPI

Dear all,

I have written the following code:

 REQUEST = MPI_REQUEST_NULL
 !send data share with left
 IF(MPIdata%rank.NE.0)THEN
    MsgLength = MPIdata%imaxN
    DO icount=1,MPIdata%imaxN
            iNode = MPIdata%nodeFromUp(icount)
            send_messageL(icount) = R1(iNode)
    ENDDO
    CALL MPI_ISEND(send_messageL, MsgLength, MPIdata%AUTO_COMP, MPIdata%rank-1, MPIdata%rank, MPI_COMM_WORLD, REQUEST(1), MPIdata%iErr)
 ENDIF
 !
 !recive message FROM RIGHT CPU
 IF(MPIdata%rank.NE.MPIdata%nCPU-1)THEN
    MsgLength = MPIdata%imaxN
    CALL MPI_IRECV(recv_messageR, MsgLength, MPIdata%AUTO_COMP, MPIdata%rank+1, MPIdata%rank+1, MPI_COMM_WORLD, REQUEST(2), MPIdata%iErr)
 ENDIF
 CALL MPI_WAITALL(2,REQUEST,send_status_list,MPIdata%iErr)
 IF(MPIdata%rank.NE.MPIdata%nCPU-1)THEN
    DO i=1,MPIdata%imaxN
       iNode=MPIdata%nodeList2Up(i)
       R1(iNode)=recv_messageR(i)
    ENDDO
 ENDIF

The code works with fortran and OpenMPI. The same code does not work with intel MPI and I do not why. I get the following error:

Fatal error in MPI_Waitall: Invalid MPI_Request, error stack:
MPI_Waitall(271): MPI_Waitall(count=3, req_array=0x7445f0, status_array=0x744600) failed
MPI_Waitall(119): The supplied request in array element 2 was invalid (kind=0)

Can someone help me, please?

Thanks a lot

 

Tags (1)
0 Kudos
0 Replies
Reply