Re: [eigen] [RFC] Full pivoting LDLT

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


hi,

my initial concern about removing the current LDLT behavior was about
performance (LDLt avoid the need of sqrt). Here are some benchmark for
small fixed size between the current LDLt and LLt:

size            no sqrt                           standard
fixed 2         0.00102645s (389.692 MFLOPS)    0.00183895s (217.515 MFLOPS)
fixed 3         0.00365066s (383.492 MFLOPS)    0.00431897s (324.152 MFLOPS)
fixed 4         0.00674173s (474.656 MFLOPS)    0.00709854s (450.797 MFLOPS)
fixed 5         0.015228s (394.01 MFLOPS)       0.0107528s (557.994 MFLOPS)
fixed 6         0.0210597s (474.84 MFLOPS)      0.0203626s (491.097 MFLOPS)
fixed 7         0.0291546s (528.218 MFLOPS)     0.0314288s (489.996 MFLOPS)
fixed 8         0.0511112s (438.26 MFLOPS)      0.0421623s (531.28 MFLOPS)
fixed 12        0.139711s (503.898 MFLOPS)      0.104209s (675.567 MFLOPS)
fixed 16        0.369657s (432.834 MFLOPS)      0.197822s (808.808 MFLOPS)

- for large size LLt is much faster than LDLt because the algorithm is
simpler (better cache friendliness, we can use fast matrix-vector
products, etc.)
- for very small sizes LDLt is not clearly better
- the solve operation for LDLt is more expensive than LLt because of
the product by D-1 (these bench does not include the solve step)

So all in all this is not going to be a big lost ! So go ahead !

gael.

On Tue, Feb 3, 2009 at 9:15 AM, Keir Mierle <mierle@xxxxxxxxx> wrote:
> http://codereview.appspot.com/14042/diff/1/4
>
> There are a couple of issues.
>
> 1. Pivoting is not optional. Any objections?
> 2. If the matrix is only semidefinite, then matrixL() gives wrong results
> (1's in diagonal where they shouldn't be).
>
> Minus objections, I'll commit this.
>
> Keir
>



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/