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/

Reply via email to