Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2005-08-17 09:39:30


On Aug 17, 2005, at 8:48 AM, Jeff Squyres wrote:

>> Request for 0 bytes (coll_basic_reduce_scatter.c, 80)
>> Request for 0 bytes (coll_basic_reduce.c, 194)
>> Request for 0 bytes (coll_basic_reduce_scatter.c, 80)
>> Request for 0 bytes (coll_basic_reduce.c, 194)
>> Request for 0 bytes (coll_basic_reduce_scatter.c, 80)
>> Request for 0 bytes (coll_basic_reduce.c, 194)
>
> Hum. I was under the impression that George had fixed these, but I get
> the same warnings. I'll have a look...

Ok, I tracked this down -- not George's fault. :-)

Brian noted that this is an illegal program -- PMB is calling
MPI_Reduce() with a count == 0, but MPI-1 specifically states in the
description of MPI_REDUCE (p114, 1st paragraph):

"Each process can provide one element, or a sequence of elements, in
which case the combine operation is executed...."

A similar situation is true for MPI_REDUCE_SCATTER -- PMB is passing in
an array of recvcounts that are all 0.

I'll do 2 things for this:

1. Mail the PMB guys and tell them about this problem
2. Add an "if" statement for REDUCE to make it return MPI_SUCCESS
immediately if the count is 0, and similarly for REDUCE_SCATTER (I'm
unhappy about this -- adding a conditional branch and a loop in
performance-critical paths... grumble... I'll add it in the parameter
checking section, so at least it won't affect optimized builds)

-- 
{+} Jeff Squyres
{+} The Open MPI Project
{+} http://www.open-mpi.org/