New user self-registration is disabled due to spam. Please email eigen-core-team @ lists.tuxfamily.org if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!
Bug 865 - SelfAdjointEigenSolver::compute() should work with C++11 move semantics when available.
Summary: SelfAdjointEigenSolver::compute() should work with C++11 move semantics when ...
Status: CONFIRMED
Alias: None
Product: Eigen
Classification: Unclassified
Component: Eigenvalues (show other bugs)
Version: unspecified
Hardware: All All
: Normal Feature Request
Assignee: Nobody
URL:
Whiteboard:
Keywords: JuniorJob
Depends on:
Blocks:
 
Reported: 2014-08-26 06:50 UTC by Jim Garrison
Modified: 2014-08-26 13:14 UTC (History)
4 users (show)



Attachments

Description Jim Garrison 2014-08-26 06:50:46 UTC
Currently, SelfAdjointEigenSolver::compute() takes a matrix by const reference.  It then copies this matrix (or, rather, a lower triangular view of it if not using MKL) to m_eivec, and operates only on m_eivec throughout the remainder of the calculation.  This is suboptimal, as it means that the original matrix must be stored in memory for the duration of the calculation, even if it is to be thrown away immediately afterward.  If SelfAdjointEigenSolver were to support C++11 move semantics, the user could avoid this inefficiency, saving nearly a factor of two on the amount of memory needed to diagonalize a matrix.
Comment 1 Gael Guennebaud 2014-08-26 13:14:12 UTC
Patch welcome. Note that we already have the macro EIGEN_HAVE_RVALUE_REFERENCES to detect whether rvalue references can be used.

Note You need to log in before you can comment on or make changes to this bug.