Open MPI logo

Open MPI User's Mailing List Archives

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

Subject: [OMPI users] MPI::Request::Test not working
From: devendra rai (rai.devendra_at_[hidden])
Date: 2011-12-30 22:21:38


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