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/