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 <jsquy...@cisco.com>
To: devendra rai <rai.deven...@yahoo.co.uk>; Open MPI Users 
<us...@open-mpi.org> 
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
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/

Reply via email to