Dear all,

I have created a program in fortran and OpenMPI, I test it on my laptop and
it works.
I would like to use it on a cluster that has, unfortunately, intel MPI.

The program crushes on the cluster and 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)*

Do OpenMPI and MPI have some difference that I do not know?

this is my 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

Thank a lot your help



Diego

Reply via email to