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. 


---

Reply via email to