Re: [eigen] memory savings in Tridiagonalization::decomposeInPlace

[ Thread Index | Date Index | More Archives ]

Hi Mauro,

Just to say don't worry that nobody replied so far. It's just a combination of
1) holidays
2) holidays
3) the 1% of our brains that is still not drowning in goose fat is
busy with the tridiagonal stuff you got us thinking abot

2008/12/22 Mauro Iazzi <mauro.iazzi@xxxxxxxxx>:
> Hi again,
>  the change MatrixType->SquareMatrixType in SelfAdjointEigenSolver
> needs Gael approval. Tridiagonal support will require both this and
> the change to exclusive flags in Part.h. Since this will require some
> time, in the meanwhile I went serching for other low hanging fruits.
> I think that Tridiagonalization::decomposeInPlace unnecessarily
> creates a new matrix instead of reusing the one it is given. Reusing
> the old one reduces the space required to 2/3 for large matrices (can
> be aroung 200Mb in my simple examples). I attach the patch, again
> quite simple. For the sake of symmetry the matrixT() method could be
> changed as well like diagonal(), subDiagonal() and matrixQ() but it is
> not strictly necessary.
> There is a difference in the behaviour of decomposeInPlace(...). In my
> patch, if eigenvectors are not required, the given matrix is still
> overwritten, instead of staying unchanged. I think it is however
> preferrable to save memory in the general case. If the caller needs
> the original matrix it can simply store it... after all it is an
> "InPlace" method. What do you think?
> Cheers and happy holydays to everyone,
> mauro


Mail converted by MHonArc 2.6.19+