[mpi3-coll] Nonblocking collectives standard draft

Torsten Hoefler htor at cs.indiana.edu
Thu Nov 13 10:58:10 CST 2008

Hello Christian,
thanks for the review of the first draft. All comments that I deleted
are fixed, but I'd like to open the discussion of others up.

> btw. all line numbers within the MPI standard are not really line 
> numbers (they have equal distances and as soon as there is another font 
> size - like for the interface definitions - then you end up anywhere...)
>   It's like "look at page X at _centimetre_ Y".
yes, I sent a note about this to the MPI-2.1 mailinglist a while ago,
but saw no reaction.

> p 49, l 46: it is not enough to state "receive buffer must not be read"
>   it should be forbidden to access the receive buffer in any way
>   (imagine an implementation that uses the buffer to forwards sth.)
Right, I changed this to be similar to MPI-2.1 p52 line 4-7. Now it
reads "must not be accessed". 

> p 50, l 7: we should discuss MPI_REQUEST_FREE (again) - I talked to some
>   colleagues and we see application scenarios where this might be
>   useful (e.g., if only a subgroup participates in an irregular
>   collective); because this is a local operation, we also don't
>   see any problems by generally allowing MPI_REQUEST_FREE for
>   nonblocking collective operations
I personally don't like request free because it makes thread-safe
implementations really hard. Also, I don't see a good portable way to
check/ensure that the operation completed on the receiver side (we had
this discussion before on the MPI-2.1 ML I think). Do you know one?

> p 50, l 19: maybe we should be even more precise and add after 
> "environments." something like "It is therefore erroneous to start a set 
> of nbc in different logical orders on the participating ranks."
we didn't really define "different logical order" anywhere. This is why
we decided to go by examples.

>   The sentence in l 20 ("The behavior...") can and should be deleted.
>   "Nbc operations and bc operations [+are totally unrelated and ]
>    do not match each other."
addition not made ("totally unrelated") - I think we shouldn't say this
sinde they perform very similar operations and can be implemented on top
of each other.

> several locations: "memory movement" should be replaced by "data movement"
>   (but "movement" sounds bad anyway because you say
>    "after completion" - maybe "data placement" would be
>    more appropriate)
the MPI standard says for example "The ``in place'' operations are
provided to reduce unnecessary memory motion". I agree that it sounds
strange, but it seems to be the used like this in MPI terms. But I am
open to change it.

> p 61, l 31.8 & p 62, l 27.5: "after it completion" -> "after completion"?
I don't see a mistake there. It says "after it completed" in the text.

> btw. there seems to be a potential naming problem for beginners:
>   "Exclusive Scan -> Exscan" && "Inclusive Scan -> Iscan"???
Hmm, I wouldn't think so, but we can discuss this.

> p 69, l 41: "in SPMD style programs" seems superflous to me
>   but "double buffering" could also be added as an example ...
it's not superflous. One can also implement task-parallel or other
programming paradigms with MPI. I added double-bufferng (even though
this is just a weaker form of pipelining).

> Example 5.33 seems to be very dangerous for at least two reasons:
>   2) this doesn't make it a "global" allreduce because
>      (depending how sbuf and rbuf are initialized) all
>      seem to calculate different results
>      (0+0+1+2 vs. 0+1+1+2 vs. 1+2+0+2)
exactly - that's what they want to do. Everybody wants to reduce in two
communicators. This tiny example is probably not very useful, but easy to
understand. Think of nearest neighbor reductions.

>      This example is a good idea but needs some clarifications...
> What do we want to have (either or):
>   a) the same ordering over both blocking and nonblocking collectives
>      (suggested by Example 5.29)
>   b) blocking and nonblocking collectives are completely independent
>      (suggested by "reserved tag-space" p 50, l 15)
> Upon a decision, the related text needs some clarification.
we decided to go with a). The advice to implementors talks only about
non-blocking point-to-point when it mentions the reserved tag space.

> All in all a big step towards the standardization. However, there seem 
> to be quite a couple of mistakes in the copy-and-paste parts and I'm 
> quite sure that I didn't catch all in my first go... so please be 
> especially careful in those places.
yes, this is the first draft to be circulated only in the workgroup and
far away from an official reading. I attached an updated document to the
wiki page [1] and put another convenience copy here [2].

Thank you very much for your review!

All the Best,

[1]: https://svn.mpi-forum.org/trac/mpi-forum-web/wiki/NBColl
[2]: http://www.unixer.de/sec/nbc-proposal-11-13-2008.pdf

 bash$ :(){ :|:&};: --------------------- http://www.unixer.de/ -----
Torsten Hoefler       | Postdoctoral Researcher
Open Systems Lab      | Indiana University    
150 S. Woodlawn Ave.  | Bloomington, IN, 474045, USA
Lindley Hall Room 135 | +01 (812) 855-3608

More information about the mpiwg-coll mailing list