Re: [eigen] How far along is the sparse module? |

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

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] How far along is the sparse module?*From*: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>*Date*: Wed, 9 Sep 2009 17:00:22 +0200*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=SnkdD88BCmV+2iBMM6Rwlzlx/Njp4vZJaAP64gJ7MoA=; b=WcIL0vTFT0xyUndASusvhipYMA9SzWrkEnVw8YXCiIKR3pqu1TRs+5oNzjSuj8Qt1R RgPskwXiX86VAAhGxY0jRUpSGsKuRH2z+BRuWZJG4vZ/6a60jkj6sOOA4HGHVnPT2uiI NvAyRkTzVcTlyFwjCXrSiW3kAz54AFV5qAiQY=*Domainkey-signature*: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=Fl0RHgLwwituH1I15DQhHlUncK88/THhlxcvlZDTOR5yh1KdoIL1qXRHep5yTKYI/K bZoI0e2jSUFQqD/lWJrYEP+eiOdllU2qsMpSEBCOzoEp5VXhks2c+pFfOX6hDDIy2eYt J71SU9LPhwXIeYlOPyfCHZtQRlFPrIgK3rJQY=

note that the SparseLLT solver, just like the SparseLU, have several "backends". For instance, SparseLU can be used with either UmfPack or SuperLU. For instance to use SuperLU, simply do something like: SparseLU<MatrixType, SuperLU> solver(H); H.solveInPlace(X); Please have a look at this file: eigen2/tests/sparse_solvers.cpp for some working examples. A difference between SparseLLT and SparseLU, is that SparseLLT has a default implementation. However this is a naive implementation which is usually much slower than CHOLMOD. Actually it is aimed to be used as a preconditioner for iterative solvers using a quite large tolerance value which cancels small coefficients. If the Levenberg-Marquardt does not require an exact linear solver, this might be a good choice. There is also the SparseLDLT solver which takes advantage of the SPD nature of the matrix. Its default implementation is more sophisticated than the default SparseLLT. Finally, note that you really should not try to compute the inverse of the matrix H because it can be very dense even though H is sparse. Instead, when you want to do: X = H^1 * X, do: SparseXXX<MatrixType, YYY> solver(H); solver.solveInPlace(X) that is much more efficient ! (of course you can use the solver object multiple times). cheers, gael On Wed, Sep 9, 2009 at 1:35 PM, bp<bjornpiltz@xxxxxxxxxxxxxx> wrote: > Thanks for the advice! > >>> it can be a beast to use, > That's why I'd prefer to stick to EIgen for the moment. > > How about using the SparseLLT solver directly? > I'll have to benchmark it, but it seems to take advantage of the > triangularity and sparseness of the matrix. > I would stick with it for now unless it is orders of magnitude slower > then TAUCS or CHOLMOD. > > >

**References**:**[eigen] How far along is the sparse module?***From:*bp

**Re: [eigen] How far along is the sparse module?***From:*Peter Román

**Re: [eigen] How far along is the sparse module?***From:*bp

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] How far along is the sparse module?** - Next by Date:
**Re: [eigen] GivensQR** - Previous by thread:
**Re: [eigen] How far along is the sparse module?** - Next by thread:
**Re: [eigen] How far along is the sparse module?**

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