Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: Re: [OMPI users] MPI::Request::Test not working
From: devendra rai (rai.devendra_at_[hidden])
Date: 2012-01-04 11:21:51


Hi Jeff Thanks a lot. Yeah, I figured that out. Anyway, even in C++ program, I am using C interfaces for the MPI bit. For me, its lot easier to understand the documentation and help this way. Thanks a lot once again. Best, Devendra ________________________________ From: Jeff Squyres <jsquyres_at_[hidden]> To: devendra rai <rai.devendra_at_[hidden]>; Open MPI Users <users_at_[hidden]> Sent: Wednesday, 4 January 2012, 13:21 Subject: Re: [OMPI users] MPI::Request::Test not working It looks like you are using C++ improperly.  I would suggest something like this (typed in email; not verified with a compiler): MPI::Request Isend_request; Isend_request = MPI::COMM_WORLD.Isend(...); MPI::Status status; if (Isend_request.Test(status)) {     // ... } On Dec 30, 2011, at 10:21 PM, devendra rai wrote: > Hello Everyone, > > I wrote a small C++ MPI program to do an ISend: > > /*some declarations here */ > MPI::Request Isend_request_status; > ... > ... > > /* do the transmission */ > Isend_request_status = MPI::COMM_WORLD.Isend(this->transmitbuffer, this->transmissionsize, MPI_BYTE, (this->dbIterator)->first, std::get<0>(this->TransmissionDetails)); > > /* Check if the transmit was successful */ > if (MPI::Request::Test(Isend_request_status)) > { >    /* done :) */ > } > > However, building it gives the error: > > no matching function for call to ‘MPI::Request::Test(MPI::Request&)’ > > I am using gcc-4.6 on Linux, with OpenMPI- 1.4.3. > > I looked up the headers for the calls: > > inline MPI::Request > MPI::Comm::Isend(const void *buf, int count, >          const MPI::Datatype & datatype, int dest, int tag) const > > So, the MPI::COMM_WORLD::ISend(...) should return me variable of type MPI::Request. > > And, > > inline bool > MPI::Request::Test(MPI::Status &status) > > This takes in the variable of type MPI::Status. > > > So, two questions: > > (1). Is there a problem due to incompatible types? If so, how do I fix it? > (2). Why would the MPI::Request::Test take in a different type than what is returned by MPI::COMM_WORLD::ISend(...)? > > It would really help if you could help me fix the example that I have shown. > > I understand it would be easier to do this in C, but there are project requirements that led me to C++. > > Can someone please help? > > Thanks a lot. > > > Devendra > sd > _______________________________________________ > users mailing list > users_at_[hidden] > http://www.open-mpi.org/mailman/listinfo.cgi/users -- Jeff Squyres jsquyres_at_[hidden] For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/