Github user kaknikhil commented on a diff in the pull request:
https://github.com/apache/madlib/pull/319#discussion_r217498702
--- Diff: src/ports/greenplum/dbconnector/dbconnector.hpp ---
@@ -32,6 +32,24 @@ extern "C" {
#include "Compatibility.hpp"
+#if PG_VERSION_NUM >= 90000
+ // MADlib aligns the pointers returned by palloc() to 16-byte
boundaries
+ // (see Allocator_impl.hpp). This is done to allow Eigen vectorization
(see
+ // http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization for
more
+ // info). This vectorization has to be explicitly disabled if
pointers are
+ // not 16-byte aligned.
+ // Further, the pointer realignment invalidates a header that palloc
creates
+ // just prior to the pointer address. Greenplum after commit <> fails
due
+ // to this invalid header. Hence, the pointer realignment (and Eigen
+ // vectorization) is disabled below for Greenplum 6 and above.
+ #define DISABLE_POINTER_ALIGNMENT_FOR_GREENPLUM
--- End diff --
Do we really need this macro ? We can use the `EIGEN_DONT_VECTORIZE` macro
instead.
---