[Coarray-ts] Collectives

Malcolm Cohen malcolm at nag-j.co.jp
Wed May 30 22:46:09 EDT 2012

>there should be a procedure for broadcasting values.

That's very vague ... I would guess that procedure either means "subroutine" or 
means "mechanism"... one might think that
  x[vector] = y
is an obvious syntax for broadcast.  I would further guess that that is not your 

Also, broadcast does not specify whether all images or simply several.

How about
  "there should be a subroutine that broadcasts a value on one image to a set of 
?  (change "a set of" to "all" if that's what you think we should intend).

Or even more specifically,
  "there should be a subroutine that assigns a value to a coarray on a set of 
since I presume we're thinking that "broadcast" means assigning a value to the 
same coarray on all those images.

BTW values don't need to be plural, an array has a single value (composed of at 
least zero element values), unless you are meaning assigning to multiple 
different variables, which I rather doubt...

>collectives are less controversial than teams
maybe so, but there seems to be an interaction....

>Collective subroutines offer [more performance]
I note that the paragraph still makes no definition of what a collective 
subroutine is.  Now maybe we all understand this, but then again maybe not.  Can 
I ask that this item begins with a definition of what a collective subroutine 
actually is, so that we are all on the same wavelength?  Maybe something like
  "A collective subroutine is an intrinsic subroutine that is executed by all 
images; it has internal synchronization and performs a computation based on the 
value of a coarray on all images."
[you already have later the fact that the result of the computation is available 
on one image or all, but that could also be rolled up into this basic 

Now, I want to talk about teams and collectives.  Do these mix?  If a member of 
a team calls a collective, is it the whole world that participates or just the 
team?  I would have thought, perhaps wrongly, that collectives that operate over 
the whole image space only are of limited use (it certainly rules them out for 
any library routine, since the synchronisation is over the whole image space). 
So I would have thought that even if we did not have teams, we would want 
team-like collectives.  If we do have teams, then the team mechanism would be 
the obvious one for selecting the participating images.

So in fact what *I* would expect a collective subroutine to do would be to 
perform a computation based on the value of a coarray on a set of images, not 
all images.  And the result of that computation would be made available on one 
or more of the participating images.  Should that be a set of the participating 
images, or limited to being one or all of them?  Just one or all is probably 
good enough I would guess.

................................Malcolm Cohen, Nihon NAG, Tokyo. 

More information about the Coarray-ts mailing list