Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Calling MPI_send MPI_recv from a fortran subroutine
From: Pradeep Jha (pradeep_at_[hidden])
Date: 2013-02-28 12:00:33


oh! it works now. Thanks a lot and sorry about my negligence.

2013/3/1 Ake Sandgren <ake.sandgren_at_[hidden]>

> On Fri, 2013-03-01 at 01:24 +0900, Pradeep Jha wrote:
> > Sorry for those mistakes. I addressed all the three problems
> > - I put "implicit none" at the top of main program
> > - I initialized tag.
> > - changed MPI_INT to MPI_INTEGER
> > - "send_length" should be just "send", it was a typo.
> >
> >
> > But the code is still hanging in sendrecv. The present form is below:
> >
>
> "tag" isn't iniitalized to anything so it may very well be totally
> different in all the processes.
> ALWAYS initialize variables before using them.
>
> > main.f
> >
> >
> > program main
> >
> > implicit none
> >
> > include 'mpif.h'
> >
> > integer me, np, ierror
> >
> > call MPI_init( ierror )
> > call MPI_comm_rank( mpi_comm_world, me, ierror )
> > call MPI_comm_size( mpi_comm_world, np, ierror )
> >
> > call sendrecv(me, np)
> >
> > call mpi_finalize( ierror )
> >
> > stop
> > end
> >
> > sendrecv.f
> >
> >
> > subroutine sendrecv(me, np)
> >
> > include 'mpif.h'
> >
> > integer np, me, sender, tag
> > integer, dimension(mpi_status_size) :: status
> >
> > integer, dimension(1) :: recv, send
> >
> > if (me.eq.0) then
> >
> > do sender = 1, np-1
> > call mpi_recv(recv, 1, mpi_integer, sender, tag,
> > & mpi_comm_world, status, ierror)
> >
> > end do
> > end if
> >
> > if ((me.ge.1).and.(me.lt.np)) then
> > send(1) = me*12
> >
> > call mpi_send(send, 1, mpi_integer, 0, tag,
> > & mpi_comm_world, ierror)
> > end if
> >
> > return
> > end
>
>
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>