This bugzilla service is closed. All entries have been migrated to https://gitlab.com/libeigen/eigen
Bug 1106 - SparseQR fails to compile with Intel C++ Compilers on Windows
Summary: SparseQR fails to compile with Intel C++ Compilers on Windows
Status: RESOLVED FIXED
Alias: None
Product: Eigen
Classification: Unclassified
Component: Sparse (show other bugs)
Version: 3.2
Hardware: x86 - 64-bit Windows
: Normal Compilation Problem
Assignee: Nobody
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 3.3
  Show dependency treegraph
 
Reported: 2015-11-06 14:20 UTC by Semih
Modified: 2019-12-04 15:08 UTC (History)
2 users (show)



Attachments
Workaround (781 bytes, patch)
2015-11-10 10:38 UTC, Gael Guennebaud
no flags Details | Diff

Description Semih 2015-11-06 14:20:38 UTC
This is the same problem as in 
Commit 09c5bd1: Fix compilation with ICC/MSVC combo (eigen/eigen)

Following code fails compile with Intel C++ Compilers on windows 7 x64.
I tested it in two different configurations;

win7 x64 - Intel C++ 2015.1.148 integrated on vs2013
win7 x64 - Intel C++ 2011.0.104 integrated on vs2010

No problem with VC++ compilers!

Code is as follows;

#include <Eigen/SparseQR>
using namespace Eigen;
int main() {
  typedef Eigen::SparseMatrix< double > SparseDoubleMatrix;

  SparseQR< SparseDoubleMatrix, COLAMDOrdering<int> > solver;

  SparseDoubleMatrix A(10,10);   // Just dummy matrix for now (I know how to use SparseMatrices properly :)) 
  solver.compute(A);
}

Error stack is as follows;

U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/Core/Block.h(110): error : class "Eigen::BlockImpl<const Eigen::SparseMatrix<double, 0, int>, -1, 1, 1, Eigen::Sparse>" has no member "operator="
        EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Block)
        ^
            detected during:
              instantiation of class "Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel> [with XprType=const Eigen::SparseMatrix<double, 0, int>, BlockRows=-1, BlockCols=1, InnerPanel=1]" at line 260 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseBlock.h"
              instantiation of "const Eigen::SparseMatrixBase<Derived>::ConstInnerVectorReturnType Eigen::SparseMatrixBase<Derived>::innerVector(Eigen::SparseMatrixBase<Derived>::Index) const [with Derived=Eigen::SparseMatrix<double, 0, int>]" at line 64 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparsePermutation.h"
              instantiation of "void Eigen::internal::permut_sparsematrix_product_retval<PermutationType, MatrixType, Side, Transposed>::evalTo(Dest &) const [with PermutationType=Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, MatrixType=Eigen::SparseMatrix<double, 0, int>, Side=2, Transposed=0, Dest=Eigen::SparseMatrix<double, 0, int>]" at line 61 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/Core/ReturnByValue.h"
              instantiation of "void Eigen::ReturnByValue<Derived>::evalTo(Dest &) const [with Derived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>, Dest=Eigen::SparseMatrix<double, 0, int>]" at line 180 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseMatrixBase.h"
              instantiation of "Derived &Eigen::SparseMatrixBase<Derived>::operator=(const Eigen::ReturnByValue<OtherDerived> &) [with Derived=Eigen::SparseMatrix<double, 0, int>, OtherDerived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>]" at line 734 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseCore/SparseMatrix.h"
              instantiation of "Eigen::SparseMatrix<_Scalar, _Options, _Index> &Eigen::SparseMatrix<_Scalar, _Options, _Index>::operator=(const Eigen::ReturnByValue<OtherDerived> &) [with _Scalar=double, _Options=0, _Index=int, OtherDerived=Eigen::internal::permut_sparsematrix_product_retval<Eigen::PermutationBase<Eigen::PermutationMatrix<-1, -1, mplab::Index={Eigen::DenseIndex={ptrdiff_t={int}}}>>, Eigen::SparseMatrix<double, 0, int>, 2, 0>]" at line 508 of
                        "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseQR/SparseQR.h"
              instantiation of "void Eigen::SparseQR<_MatrixType, _OrderingType>::factorize(const Eigen::SparseQR<_MatrixType, _OrderingType>::MatrixType &) [with _MatrixType=Eigen::SparseMatrix<double, 0, int>, _OrderingType=Eigen::COLAMDOrdering<int>]" at line 87 of "U:\Development\trunk\libs\eigen-mp-3.2\Eigen\src/SparseQR/SparseQR.h"
              instantiation of "void Eigen::SparseQR<_MatrixType, _OrderingType>::compute(const Eigen::SparseQR<_MatrixType, _OrderingType>::MatrixType &) [with _MatrixType=Eigen::SparseMatrix<double, 0, int>, _OrderingType=Eigen::COLAMDOrdering<int>]" at line 731 of "ArithmeticOperators.cpp"
Comment 1 Gael Guennebaud 2015-11-10 10:38:42 UTC
Created attachment 624 [details]
Workaround

Could you try the following patch (for eigen 3.2.x), thanks.
Comment 2 Semih 2015-11-10 19:17:17 UTC
great it seems this patch fixed the problem..

thank you
Comment 3 Gael Guennebaud 2015-11-11 16:06:33 UTC
Pushed: https://bitbucket.org/eigen/eigen/commits/70e0e28516d0/combo
Comment 4 Nobody 2019-12-04 15:08:46 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/1106.

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