I will use Not Collective, Logically Collective, Neighbor-wise Collective and Collective
Barry On Jul 8, 2010, at 1:12 AM, Matthew Knepley wrote: > On Thu, Jul 8, 2010 at 2:11 AM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > Ok, we need a clear well-defined set of terms for type of function call > then. > > 1) Any process can call it, without regard to other processes calling it, > with any legal value. MatGetLocalSize() > > Yep, Not Collective here. > > 2) All processes must call it with the same legal value for the operation to > make mathematical sense VecScale() > > Coherent? I like this because you are demanding coherence of the calling > parameters. > > > 3) All processes must call it, but each process returns after only exchange > with some other processes called "neighbors" MatMult() > > Neighbor Collective is good I think. It is collective in the sense I > understand it, but with a smaller process group. > > 4) All processes must call it, requires a global synchronization before > returning on processes, VecDot() > > Collective. > > Matt > > In the manual pages I've been calling 1 Not Collective and 2-4 collective. > Suggestions for names? Perhaps 2) Mathematically collective 3) Neighbor > collective? Once we have good names I can change the manual pages > > > Barry > > > > > On Jul 6, 2010, at 12:07 AM, Matthew Knepley wrote: > >> This is a different definition of collective I think. I thought we were >> defining collective in the >> operational sense, meaning requires synchronization. That is what users need >> to know, since >> they will not check the implementation. I believe users know the semantics >> up front (why would >> semantics change from serial to parallel?) >> >> Matt >> >> On Tue, Jul 6, 2010 at 6:38 AM, Barry Smith <bsmith at mcs.anl.gov> wrote: >> >> I consider that VecScale() has to be considered a collective that requires >> all processors to pass the same value for the scalar in the same way that >> VecAXPY() is a collective operation that requires the same value for alpha. >> The reason is that though you can pass in different values on different >> processes or not call it on some processes it has no well defined >> mathematical meaning in that case since there result depends on the vector >> layout across processors. In fact I'd like to put a error check that does a >> global collective and make sure that the value pass in on all processes is >> the same in debug mode. >> >> Barry >> >> >> >> >> -- >> What most experimenters take for granted before they begin their experiments >> is infinitely more interesting than any results to which their experiments >> lead. >> -- Norbert Wiener > > > > > -- > What most experimenters take for granted before they begin their experiments > is infinitely more interesting than any results to which their experiments > lead. > -- Norbert Wiener -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20100708/58990ea7/attachment.html>
