This bugzilla service is closed. All entries have been migrated to https://gitlab.com/libeigen/eigen

Bug 498

Summary: Aligned Member in PardisoImpl
Product: Eigen Reporter: brian <eigen3-bugs>
Component: SparseAssignee: Nobody <eigen.nobody>
Status: NEW ---    
Severity: Unknown    
Priority: Normal    
Version: 3.1   
Hardware: All   
OS: Windows   
Whiteboard:

Description brian 2012-08-15 14:48:46 UTC
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;
Comment 1 Nobody 2019-12-04 11:49:17 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/498.