Re: [eigen] SparseQR compilation error

[ Thread Index | Date Index | More Archives ]

On Mon, Aug 12, 2013 at 1:04 PM, Pavel Holoborodko <pavel@xxxxxxxxxxxxxxx> wrote:
I reported this issue on Intel C++ forum.  
From my experience Windows version of ICC seems to have many problems (as newer as more buggy).
Will probably try to roll back to older version.

ok, let's see.
How much SparseLU different from SparseQR architecture-wise? 

SparseLU has same interface and works just fine. Maybe we can do SparseQR in similar way ;)? 

beside the interface and the elimination tree, they have absolutely nothing in common! 



On Mon, Aug 12, 2013 at 7:51 PM, Gael Guennebaud <gael.guennebaud@xxxxxxxxx> wrote:

as already observed on the forum, this error seems to show up only with ICC on Windows. No problem with ICC 11, 12, 13 on Linux. Moreover, I don't understand this issue as the base class "Eigen::BlockImpl<const Eigen::SparseMatrix<double, 0, int>, -1, 1, 1, Eigen::Sparse>" does has an operator= line 194 in src/SparseCore/SparseBlock..h. So I'm clueless here.


On Sat, Aug 10, 2013 at 11:23 AM, Pavel Holoborodko <pavel@xxxxxxxxxxxxxxx> wrote:

I am testing solvers for sparse systems.
Intel C++ compiler chokes on this code:

typedef Eigen::SparseMatrix< double > SparseDoubleMatrix;

SparseQR< SparseDoubleMatrix, COLAMDOrdering<int> > solver;

SparseDoubleMatrix A(10,10);

Compiler points to solver.compute(A) with error message:
class "Eigen::BlockImpl<const Eigen::SparseMatrix<double, 0, int>, -1, 1, 1, Eigen::Sparse>" has no member "operator="

Error persist for any OrderingType.

Interestingly, error only shows for SparseQR. If I use SparseLU - everything compiles fine.

Full template instantiation chain lead to error is in attachment.

Would appreciate any help & pointers how to solve the problem. 

Thank you,

Mail converted by MHonArc 2.6.19+