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
