[Beowulf] Performance characterising a HPC application
ashley at quadrics.com
Wed Apr 4 07:33:43 PDT 2007
Christian Bell wrote:
> On Wed, 04 Apr 2007, Ashley Pittman wrote:
>> GasNet does however get extra credit for having a asynchronous
>> collective, namely barrier. Unfortunately when you read the spec it's
>> actually a special case asynchronous reduce which is almost impossible
>> to optimise anything like as well as barrier which is a shame.
> GASNet's named split-phase barriers cater to a language-level feature
> in UPC to generate mismatches if the name doesn't match, which can be
> a useful debugging tool. The same primitive has a flags option to
> make it unnamed, which probably has the properties you want (being
> split-phase without the need to reduce a value across processors).
> This one could be implemented over a faster split-phase notify/wait
> if the interconnect can offer one
So it does, it's clearly been a while since I looked at this, the
GASNET_BARRIERFLAG_ANONYMOUS implys exactly the semantics I would have
preferred, I take it all back.
"Named barriers" as you say are incredibly useful as you say and not
just for debugging, I'm not trying to beat on them but they are
effectively AllReduce when it comes to implementation them which is
significantly slower/harder to do.
> (although yes, this would require
> bending the rules somewhat at the language-level since one local proc
> doing what it thinks is an unnamed barrier would have to assume that
> all of its peers also used an unnamed barrier).
Looking at it carefully I don't think any rules would actually be
broken, in particular passing both GASNET_BARRIERFLAG_ANONYMOUS and
GASNET_BARRIERFLAG_MISMATCH would appear to not be allowed so you could
use a different barrier implementation for the fast (anonymous) case and
the named case. It is as you say the language bending it's own rules here.
More information about the Beowulf