I've run into the following problem. Eigen PardisoSupport contains a 64x1 int member array, which eigen wants to align in memory. That fails for me (at least under windows). One possible solution is given below, simply add Eigen::DontAlign, because this is anyhow a parameter array, which is never used in compute intense calculations. I hope this helps, Brian --- a/libs/alg/math/include/Eigen/src/PardisoSupport/PardisoSupport.h +++ b/libs/alg/math/include/Eigen/src/PardisoSupport/PardisoSupport.h @@ -100,6 +100,8 @@ class PardisoImpl { typedef internal::pardiso_traits<Derived> Traits; public: + //EIGEN_MAKE_ALIGNED_OPERATOR_NEW; + typedef typename Traits::MatrixType MatrixType; typedef typename Traits::Scalar Scalar; typedef typename Traits::RealScalar RealScalar; @@ -142,7 +144,7 @@ class PardisoImpl /** \warning for advanced usage only. * \returns a reference to the parameter array controlling PARDISO. * See the PARDISO manual to know how to use it. */ - Array<Index,64,1>& pardisoParameterArray() + Array<Index,64,1,Eigen::DontAlign>& pardisoParameterArray() { return m_iparm; } @@ -295,7 +297,7 @@ class PardisoImpl bool m_initialized, m_analysisIsOk, m_factorizationIsOk; Index m_type, m_msglvl; mutable void *m_pt[64]; - mutable Array<Index,64,1> m_iparm; + mutable Array<Index,64,1,Eigen::DontAlign> m_iparm; mutable IntColVectorType m_perm; Index m_size; @@ -488,6 +490,7 @@ class PardisoLLT : public PardisoImpl< PardisoLLT<MatrixType friend class PardisoImpl< PardisoLLT<MatrixType,_UpLo> >; public: + //EIGEN_MAKE_ALIGNED_OPERATOR_NEW; enum { UpLo = _UpLo }; using Base::compute;
-- 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/498.