Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] OpenMPI Nonblocking Send/Recv
From: Rayson Ho (raysonlogin_at_[hidden])
Date: 2011-09-13 15:26:51


Hi Xin,

Since it is not Open MPI specific, you might want to try to work with
the SciNet guys first. The "SciNet Research Computing Consulting
Clinic" is specifically formed to help U of T students & researchers
develop and design compute-intensive programs.

http://www.scinet.utoronto.ca/
http://www.scinet.utoronto.ca/support/Research_Computing_Consulting_Clinic.htm

The service is free, so just send them an email... Of course, they
can't help you with your coursework! :-D

Rayson

=================================
Grid Engine / Open Grid Scheduler
http://gridscheduler.sourceforge.net

On Tue, Sep 13, 2011 at 12:49 PM, Xin Tong Utoronto <x.tong_at_[hidden]> wrote:
> I am new to openmpi. I am not sure whether my logic below will work or not.
> Can someone please confirm for me on that ? Basically, what this does is
> trying to check whether there are anything to send, if there are, send it
> right away and set sentinit to true. Then check whether there are anything
> to receive, if there are receive it. I am running this on a client-server
> model (2 nodes sending and receiving data between each other)
> for (;;)  {
>                if (sendinit && MPI_Test(&sendreq, &sendcomplete,
> &sendstatus)) {
>                       if (sendcomplete) {
>                          if (pollv[1].revents & POLLIN) {
>                              printf("Trying to send in rank %d\n", rank);
>                              nx=vde_recv(conn,sendbuff,BUFSIZE-2,0);
>                              vdestream_mpisend(vdestream,sendbuff, nx,
> GET_PAIR_RANK(rank), &sendreq);
>                          } else {
>                              // no in-flight request.
>                              sendinit = false;
>                          }
>                       }
>                    } else {
>                       // no in-flight request. try to start one
>                       if (!sendinit && pollv[1].revents & POLLIN) {
>                            nx=vde_recv(conn,sendbuff,BUFSIZE-2,0);
>                            printf("Trying to send in rank %d\n", rank );
>                            vdestream_mpisend(vdestream,sendbuff, nx,
> GET_PAIR_RANK(rank), &sendreq);
>                            sendinit = true;
>                        }
>                    }
>
>                    if (recvinit && MPI_Test(&recvreq, &recvcomplete,
> &recvstatus)) {
>                       if (recvcomplete) {
>                           printf("Receive completed\n");
>                           // get the actual number of byet received.
>                           MPI_Get_count(&recvstatus, MPI_CHAR, &recvcount);
>                           vdestream_recv(vdestream, recvbuff, recvcount);
>                           // no more in-flight recv.
>                           recvinit = false;
>                       }
>                    } else {
>                       if (!recvinit) {
>                          printf("Trying to receive in rank %d\n", rank);
>                          // no in-flight recv. try to start one.
>                          vdestream_mpirecv(vdestream, recvbuff, BUFSIZE-2,
> GET_PAIR_RANK(rank), &recvreq);
>                          recvinit = true;
>                       }
>                    }
> }
>
> --
> Kind Regards
>
> Xin Tong
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>