Re: Static Pivoting

Anshul Gupta <[email protected]> Fri, 15 Sep 2006 00:36:55 -0400 (EDT)
Newsgroups gmane.comp.mathematics.csc
Message-ID <[email protected]>
Since a number of colleagues have already weighed in on the 
nomenclature aspect of "static pivoting," I am going to stir 
up some controversy (and hopefully stimulate further discussion)
over another quote from Iain's original posting.

Iain writes about static pivoting, "This clearly has important 
implications for limiting storage and for parallelism."

The statement would probably have been more accurate a few years
ago, but I believe that it does not really reflect the current
state of the art in direct solvers for general matrices.

Lets first closely examine if static pivoting really helps limit
storage.  I think what helps limit the storage is the unsymmetric 
permutation to maximize the magnitude of the product of the diagonals 
and the corresponding scaling that precede static pivoting, not
static pivoting itself.  There are numerous recent results in the 
literature that show that dynamic pivoting requires a fairly small
threshold and very few swaps if preceded by the same preprocessing
steps for most matrices.  This translates to very little extra
memory consumption due to pivoting.  If a matrix is such that even
after this preprocessing, it requires a large number of swaps in
dynamic pivoting, then static pivoting is likely to fail on this
matrix anyway because of excessive perturbation and/or excessive
growth.  So static pivoting typically works for only those coefficient 
matrices for which dynamic pivoting does not result in significant 
extra memory consumption, provided that the same preprocessing 
is applied in both cases.

Now lets focus on parallelism.  It appears quite intuitive that static
pivoting would parallelize and scale better than dynamic pivoting by
avoiding the communication overhead of the latter.  However, this 
holds only if we ignore the inevitable solve phase.  The solve phase
is memory/communication bound and scales fairly poorly compared to
factorization in a parallel setting.  As a result, whatever little
is gained in terms of communication by static pivoting during factorization
is lost during the additional steps of iterative refinement that are
usually required to recover the accuracy lost due to perturbation.

The real advantage of static pivoting, in my opinion, is that it
is easier to implement in parallel than dynamic pivoting.  So for 
the applications where it works, one can get away with a simpler solver.

-anshul