leave my rows alone

Thomas Geenen geenen at gmail.com
Wed Aug 16 14:58:44 CDT 2006


On Wednesday 16 August 2006 18:41, Satish Balay wrote:
> On Wed, 16 Aug 2006, Thomas Geenen wrote:
> > On Wednesday 16 August 2006 18:21, Matthew Knepley wrote:
> > > On 8/16/06, Thomas Geenen <geenen at gmail.com> wrote:
> > > > dear petsc users,
> > > >
> > > > is there a way to prevent Petsc during the assembly phase from
> > > > redistributing matrix rows over cpu's ?? i like the way the rows are
> > > > assigned to the cpu's during the setvalues phase.
> > >
> > > Actually,  the layout of a matrix is fully determined after
> > > MatSetSizes(), or equivalently MatCreate***(). We do not redistribute
> > > at assembly.
> > >
> > > setValues() will take values for any row, and send it to the correct-
> > > process. The
> >
> > send it to the correct process sounds a lot like redistributing but
> > that's probably a matter of semantics
>
> No its not redistribution.  When you create the matrix - the ownership
> of a given row is determined. [it doesn't change]
>
> If row 10 belongs to proc 2 [determined with MatSetSizes()] , but you
> invoke MatSetValues(row=10) on proc 5, clearly this value has to be
> communicated to proc2. This happens in MatAssembly***().

in matcreate i tell petsc that cpu0 owns 10 rows in matsetvalue i tell him 
which rows (maybe 1,9,23,46 etc) but petsc automatically assumes that cpu0 
owns the first 10 rows
matsetsizes also just tells petsc the number of rows. 0-9 for cpu0

so if i want to keep row 23 on cpu0 i have to do some sort of renumbering 
making row23 <10

>
> Satish




More information about the petsc-users mailing list