On Tue, 22 Apr 2008, Matthew Knepley wrote: > On 4/22/08, tribur at vision.ee.ethz.ch <tribur at vision.ee.ethz.ch> wrote: > > Dear Matt, > > > > > This does not make sense to me. You decide how PETSc partitions things (if > > > you want), And, I really do not understand what you want in parallel. > > > If you mean > > > that you solve the local Schur complements independently, then use a local > > > matrix for each one. The important thing is to work out the linear algebra > > prior > > > to coding. Then wrapping it with PETSc Mat/Vec is easy. > > > > > > > The linear algebra is completely clear. Again: I have the local Schur > > systems given (and NOT the solution of the local Schur systems), and I would > > like to solve the global Schur complement system in parallel. The global > > Schur complement system is theoretically constructed by putting and adding > > elements of the local systems in certain locations of a global matrix. > > Wrapping this with PETSc Mat/Vec, without the time-intensive assembling, is > > not easy for me as a PETSc-beginner. But I'm curious of the solution you > > propose... > > Did you verify that the Schur complement matrix was properly preallocated > before > assembly? This is the likely source of time. You can run with -info and search > for "malloc" in the output.
Isn't this using MATDENSE? If that the case - then I think the problem is due to wrong partitioning - causing communiation during MatAssembly(). -info should clearly show the communication part aswell. The fix would be to specify the local partition sizes for this matrix - and not use PETSC_DECIDE. Satish
