Re: [eigen] BDCSVD update |

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

*To*: eigen <eigen@xxxxxxxxxxxxxxxxxxx>*Subject*: Re: [eigen] BDCSVD update*From*: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>*Date*: Wed, 21 Aug 2013 16:49:02 +0200*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=XiIm1F83x00YcWsNjCeaCvjy1ysyLMe43KgelUT7r+8=; b=WduHsS9M9K4Gg3BWT0YoRc44GQO2rhiV3x5+KRlYeVAMyQPucO53j1yxk756CpmpId qUKAUUHYKwxRZ9QYiLXm42mV6b/KmvDCyVpghZK1F/ZTxHeD0eb2Tq2O50f/CB3NGxqm IKKtHrgd9/EGBS3vzTRJO+k3dD+A2nUDWoHEeqN6/pFyQD5LsKAV8LDIODTOVgwLhEct GuwV2cW0Z5+efRiypuSqqoCg6aOPEKr5GjYDvadJoYDXKdxPodBCQyhFB+gXP8aFG5tG cvmpb/+MJxNrik7277Cc/tCSa2xILE14lyF2ojAJnWwg9EUlCSuUV4rLQvLSCquH4Puy JHsA==

That's awesome. Needless to say, on such large matrices, JacobiSVD would be considerably slower.

Benoit2013/8/21 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>

Hi,some fresh numbers after last Jitse commit. Computation times in second for a 1000x1000 random matrix, compared to Lapack's D&C implementation:BDCSVD: 4.49042BDCSVD U+V: 14.3293dgesdd_: 1.82801dgesdd_ U+V: 3.16488Actually, when only the singular values are computed, the bidiagonalization step takes about 90% of the computation time. Making it work on blocks (or better tiles), would likely permit to catch up with Lapack.gael.On Tue, Aug 20, 2013 at 5:16 PM, Gael Guennebaud <gael.guennebaud@xxxxxxxxx> wrote:

excellent!Lapack is using rational approximations to help solving the non-linear equation. There is also this paper [1] that suggest using the fast-multipole-method, but before moving to other algorithms we should make some performance analysis to see how far we can get with that one.gaelOn Tue, Aug 20, 2013 at 3:34 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:

Benoit\o/Thanks Jitse, that's very useful work!

2013/8/20 Jitse Niesen <jitse@xxxxxxxxxxxxxxxxx>

Hello,

I continued work on the BDCSVD (bidiagonalizing divide-and-conquer SVD), building on the excellent work of the group of students at ensimag in Grenoble. The basic algorithm is now fully implemented. It took me longer than expected; small mistakes and short-cuts that I took lead to loss of accuracy. However, at the moment all tests pass, it seems accurate on random matrices, and it's faster than JacobiSVD (about a factor of four for a 160-by-160 matrix).

I used the bisection method to solve the nonlinear equation at the heart of the algorithm, which is hardly state-of-the-art. In fact, I think most of the lines of code I added can be improved, so I intend to spend some time optimizing and fine-tuning the BDCSVD class.

Thanks again to Gauthier, Ncolas, Jean and Pierre for their work. Their well-documented code and their report made it easy for me to get started.

Jitse

**References**:**[eigen] BDCSVD update***From:*Jitse Niesen

**Re: [eigen] BDCSVD update***From:*Benoit Jacob

**Re: [eigen] BDCSVD update***From:*Gael Guennebaud

**Re: [eigen] BDCSVD update***From:*Gael Guennebaud

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] BDCSVD update** - Next by Date:
**[eigen] SparseLU - crash on singular matrix** - Previous by thread:
**Re: [eigen] BDCSVD update** - Next by thread:
**Re: [eigen] BDCSVD update**

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