[petsc-dev] Non-scalable matrix operations

Mark F. Adams mark.adams at columbia.edu
Fri Dec 23 13:31:19 CST 2011


On Dec 23, 2011, at 2:17 PM, Jed Brown wrote:

> On Fri, Dec 23, 2011 at 13:11, Mark F. Adams <mark.adams at columbia.edu> wrote: 
>> Sure, but what does the user need to provide? How much code can we reuse between the matrix-based implementation and the nonlinear implementation?
> 
> You just have to provide a method like 
> 
> int applyGS( Mat mat, Vec lhs, Vec rhs, IS eqs, Bool reverse)
> 
> that applies G-S to the local rows in "eqs" and processes them in reverse order if "reverse" is true.  Reverse is just to symmetrize the operator.  Since this is probably best used for non-symetric operators we could simplify the algorithm a bit and get rid of this ...
> 
> Sure, so this update lhs for some equations, but there is no Mat (because it's nonlinear). To create the ISs, we'll have to specify the connections between nodes (could use a matrix to denote that).

Ah yes, by "mat" I'm assuming a shell in this case.  The construction of these ISs needs a graph -- its not magic -- its a parallel multiplicative method.

Note, with one vertex per processor this algorithm degenerates to standard coloring G-S, so you can think of it in that way.  If you did dumb coloring then you would need to use this new primitive on each color, and you need a graph to do the coloring.

Mark

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20111223/ca22fb91/attachment.html>


More information about the petsc-dev mailing list