Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: George Bosilca (bosilca_at_[hidden])
Date: 2005-09-20 02:55:46


Greg,

I'm currently working on removing the 1 barrier for the some operations
(Test and Wait). It will get inside in few days. Anyway, the MPI standard
does not say that 1 is not a valid answer :)

   Thanks,
     george.

On Mon, 19 Sep 2005, Greg Watson wrote:

> Yes, I found a bug in my code that was causing the problem. I was setting the
> first argument of MPI_Testsome() to the number of outstanding sends, rather
> than the total number of sends. It seems to be working now, though I notice
> that MPI_Testsome() always returns 1 for count.
>
> Thanks for your help,
>
> Greg
>
> On Sep 19, 2005, at 3:52 AM, George Bosilca wrote:
>
>> MPI_Testsome return MPI_UNDEFINED only when in the set of requests there
>> are no more active requests. Basically at this point the array of requests
>> (in your example) should contain only MPI_REQUEST_NULL. I check the
>> different possibilities inside, and I'm pretty confident that we are
>> correct from the MPI standard point of view. I run your test example and
>> the behaviour was correct. Moreover, it never miss one request.
>>
>> Can you forward me your exact example to see what was wrong inside ?
>>
>> Thanks,
>> george.
>>
>>
>> On Mon, 19 Sep 2005, George Bosilca wrote:
>>
>>
>>> Guys I'll take care of that. When I was working on the examples for the
>>> tutorial here at Euro PVM I notice a similar problem with MPI_Waitsome.
>>>
>>> george.
>>>
>>> On Sun, 18 Sep 2005, Jeff Squyres wrote:
>>>
>>>
>>>> Yes -- Tim, can you check? Sounds like something in the request
>>>> progress is not occurring correctly.
>>>>
>>>> Thanks!
>>>>
>>>>
>>>> On Sep 18, 2005, at 5:59 PM, Greg Watson wrote:
>>>>
>>>>
>>>>> Jeff,
>>>>>
>>>>> Yes, count is 2, but completed returns 1 on the first call and -32766
>>>>> on the second call. Sounds like this may be a bug?
>>>>>
>>>>> Greg
>>>>>
>>>>> On Sep 17, 2005, at 8:11 AM, Jeff Squyres wrote:
>>>>>
>>>>>
>>>>>> (composing this in an airport on Saturday; may not actually be sent
>>>>>> until Monday or so)
>>>>>>
>>>>>> -32766 is Open MPI's value for MPI_UNDEFINED. This is what is
>>>>>> returned
>>>>>> when there are no active requests in the array that is passed to
>>>>>> MPI_TESTSOME (see MPI-1.1:.
>>>>>>
>>>>>> Just to verify that this behavior isn't a bug, can you confirm some
>>>>>> things:
>>>>>>
>>>>>> - is count > 1?
>>>>>>
>>>>>> - if more than one request finished in that single call to
>>>>>> MPI_TESTSOME
>>>>>> where completed was returned with a value of 1 (e.g., multiple
>>>>>> requests
>>>>>> in your array turned into MPI_REQUEST_NULL), then this is a bug --
>>>>>> i.e., completed should return an accurate value.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sep 16, 2005, at 8:45 PM, Greg Watson wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Just for a change, I don't have a build problem!
>>>>>>>
>>>>>>> However, I have a question about the MPI_Testsome() call. I'm using
>>>>>>> MPI_Testsome() to check the completion status of a number of
>>>>>>> outstanding ISend() requests. I'm doing something like this:
>>>>>>>
>>>>>>> int outstanding;
>>>>>>>
>>>>>>> main()
>>>>>>> {
>>>>>>> tids = (int *)malloc(sizeof(int) * count);
>>>>>>> stats = (MPI_Status *)malloc(sizeof(MPI_Status) * count);
>>>>>>> reqs = (MPI_Request *) malloc(sizeof(MPI_Request) * count)
>>>>>>>
>>>>>>> do_sends();
>>>>>>>
>>>>>>> outstanding = count;
>>>>>>>
>>>>>>> while (outstanding > 0)
>>>>>>> check_completed();
>>>>>>> }
>>>>>>>
>>>>>>> do_sends()
>>>>>>> {
>>>>>>> for (i = 0; i < count; i++)
>>>>>>> MPI_ISend(buf, len, MPI_CHAR, i, 0, MPI_COMM_WORLD, &reqs
>>>>>>> [i]);
>>>>>>> }
>>>>>>>
>>>>>>> check_completed()
>>>>>>> {
>>>>>>> int completed;
>>>>>>>
>>>>>>> if (MPI_Testsome(count, reqs, &completed, tids, stats) !=
>>>>>>> MPI_SUCCESS) {
>>>>>>> printf("error in testsome\n");
>>>>>>> exit(1);
>>>>>>> }
>>>>>>> outstanding -= completed;
>>>>>>> }
>>>>>>>
>>>>>>> The thing is, MPI_Testsome() returns with completed = 1 the first
>>>>>>> time I call it, then completed = -32766 the second time I call it. It
>>>>>>> always returns MPI_SUCCESS though.
>>>>>>>
>>>>>>> Does anyone know what's going on? Am I doing something dumb?
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Greg
>>>>>>> _______________________________________________
>>>>>>> devel mailing list
>>>>>>> devel_at_[hidden]
>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> {+} Jeff Squyres
>>>>>> {+} The Open MPI Project
>>>>>> {+} http://www.open-mpi.org/
>>>>>>
>>>>>> _______________________________________________
>>>>>> devel mailing list
>>>>>> devel_at_[hidden]
>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> devel mailing list
>>>>> devel_at_[hidden]
>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>> "We must accept finite disappointment, but we must never lose infinite
>>> hope."
>>> Martin Luther King
>>>
>>> _______________________________________________
>>> devel mailing list
>>> devel_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>
>>>
>>
>> "We must accept finite disappointment, but we must never lose infinite
>> hope."
>> Martin Luther King
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>

"We must accept finite disappointment, but we must never lose infinite
hope."
                                   Martin Luther King