blocked index sets

Barry Smith bsmith at mcs.anl.gov
Wed Aug 27 14:10:16 CDT 2008


On Aug 27, 2008, at 1:34 PM, Dmitry Karpeev wrote:

> I would say that IS appears to be a *non-scalable* parallel object,  
> since the only parallel call
> available for it seems to be ISAllGather (and variants).

    Yes this is non-scalable. Vecs have some nonscalable stuff in them  
also.
>
> It also seems to me that the real use for an IS is as input to the  
> ISLocalToGlobalMapping routines and it is
> the mapping object that is truly global.

    Actually they were created for VecScatterCreate() and  
MatGetSubMatrices(), in both these cases
it is natural to think of the IS as a parallel object (though I agree  
you can also think of it as not
a parallel object). For ISLocalToGlobalMapping() create, I agree there  
is nothing that would make one
demand that the IS is parallel.

>
>
> As a test for IS being global, can one imagine a circumstance when  
> the same IS
> can be used with two different mappings which carry different comms?

    I don't understand this test. On the processes that are in both  
comms you could use
the same (sequential) IS, for example, to create a VecScatter.  
Possible  but unliikely.

    Even if an object (class) has NO collective operations, if, when  
you use that object, you must have partners are all
other processes in a MPI_Comm then I think it is a good approach to  
have that be a parallel
object that shares the comm.

   Barry

>
>
> I also want to point out that, in retrospect, Sieve is an evolution  
> of the IS/ISLocalToGlobalMapping
> set of ideas.
>
> Dmitry.
>
> On Wed, Aug 27, 2008 at 1:16 PM, Matthew Knepley <knepley at gmail.com>  
> wrote:
> On Wed, Aug 27, 2008 at 1:08 PM, Barry Smith <bsmith at mcs.anl.gov>  
> wrote:
> >
> > On Aug 27, 2008, at 12:13 PM, Matthew Knepley wrote:
> >
> >> On Wed, Aug 27, 2008 at 12:06 PM, Lisandro Dalcin <dalcinl at gmail.com 
> >
> >> wrote:
> >>>
> >>> So, Do all us agree my proposed fix should be pushed? I'll wait  
> for
> >>> Matt comments/complaints...
> >>
> >> I complain that IS is a fake parallel object.
> >
> >  In what way is IS a fake parallel object? Maybe we can resolve
> > your concern about it being a fake parallel object.
>
> I said fake because it has a single collective operation (or even one
> with communication).
> We even use IS in situations where GetSize() makes no sense, or at  
> least are not
> careful about the comm used. Also, none of the other functions work
> over the comm.
> For instance, the ISIsPermutation() or ISSorted() do not look at the
> indices collectively.
>
>  Matt
>
> >   Barry
> >
> >
> >> However, if
> >> GetSize/GetLocalSize already
> >> do this, then yes we should change the ISBlock version as well.
> >>
> >>  Matt
> >>
> >>> On Wed, Aug 27, 2008 at 1:13 PM, Barry Smith  
> <bsmith at mcs.anl.gov> wrote:
> >>>>
> >>>> On Aug 27, 2008, at 10:23 AM, Matthew Knepley wrote:
> >>>>
> >>>>> There is no concept of global for IS. They are purely serial.  
> AO is the
> >>>>> only
> >>>>> global construct with indices.
> >>>>
> >>>>  This is kind of true, and maybe used to be completely true.  
> But IS does
> >>>> have a communicator and that communicator can be MPI_COMM_WORLD  
> or
> >>>> any parallel communicator.  In other words the IS is evolving  
> to be an
> >>>> object
> >>>> that can be parallel in the same sense as vecs or mats
> >>>>
> >>>>  There are already ISGetSize() and ISGetLocalSize() so it sure  
> makes
> >>>> sense
> >>>> to have the same paradgm for the ISGetBlockSize().
> >>>>
> >>>>
> >>>>  Barry
> >>>>
> >>>> Originally IS had no parallel concept, then we added the
> >>>> ISGetSize/LocalSize
> >>>> but forgot to do it for the ISBlock...
> >>>>
> >>>>
> >>>>>
> >>>>>
> >>>>> Matt
> >>>>>
> >>>>> On Wed, Aug 27, 2008 at 10:09 AM, Lisandro Dalcin <dalcinl at gmail.com 
> >
> >>>>> wrote:
> >>>>>>
> >>>>>> I believe we have to review the interface of ISBlock.  
> Currently,
> >>>>>> ISBlockGetSize() return the number of LOCAL block indices.  
> This is not
> >>>>>> consistent with other naming conventions for getting local  
> and glocal
> >>>>>> sizes. I propose to change this to the following
> >>>>>>
> >>>>>> 1) change: ISBlockGetSize() returns the number global blocks
> >>>>>> 2) addition:  ISBlockGetLocalSize() return the number of  
> local blocks
> >>>>>>
> >>>>>> Comments?
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Lisandro Dalcín
> >>>>>> ---------------
> >>>>>> Centro Internacional de Métodos Computacionales en Ingeniería  
> (CIMEC)
> >>>>>> Instituto de Desarrollo Tecnológico para la Industria Química  
> (INTEC)
> >>>>>> Consejo Nacional de Investigaciones Científicas y Técnicas  
> (CONICET)
> >>>>>> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> >>>>>> Tel/Fax: +54-(0)342-451.1594
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> 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
> >>>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Lisandro Dalcín
> >>> ---------------
> >>> Centro Internacional de Métodos Computacionales en Ingeniería  
> (CIMEC)
> >>> Instituto de Desarrollo Tecnológico para la Industria Química  
> (INTEC)
> >>> Consejo Nacional de Investigaciones Científicas y Técnicas  
> (CONICET)
> >>> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> >>> Tel/Fax: +54-(0)342-451.1594
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> 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
>
>




More information about the petsc-dev mailing list