[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