New user self-registration is disabled due to spam. Please email eigen-core-team @ if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!
Bug 861 - _mm_malloc() and _mm_free() incorrectly selected when compiling with Portland Group compiler
Summary: _mm_malloc() and _mm_free() incorrectly selected when compiling with Portland...
Alias: None
Product: Eigen
Classification: Unclassified
Component: General (show other bugs)
Version: 3.2
Hardware: x86 - 64-bit Linux
: Normal Compilation Problem
Assignee: Nobody
Depends on:
Reported: 2014-08-20 20:11 UTC by drnairb
Modified: 2014-08-26 13:03 UTC (History)
3 users (show)

Enable posix_memalign with PGI (961 bytes, patch)
2014-08-22 09:00 UTC, Gael Guennebaud
no flags Details | Diff

Description drnairb 2014-08-20 20:11:07 UTC
When compiling with the Portland Group C++ compiler (v14.4, haven't tried anything older), the macro EIGEN_HAS_MM_MALLOC is activated, which sets the pointer function aligned_malloc() to use _mm_malloc(), and the pointer function aligned_free() to use _mm_free() in Eigen/src/Core/util/Memory.h. The Portland compiler does not implement either of these functions, causing an error during compilation.

The macro is activated because Eigen activates EIGEN_VECTORIZE_SSE in the file "Core". I think this macro in turn is activated through the definition of EIGEN_SSE2_ON_NON_MSVC_BUT_NOT_OLD_GCC.

I believe the correct function to use for Portland is posix_memalign() (see this thread: This means that the macro EIGEN_HAS_POSIX_MEMALIGN should be defined instead of EIGEN_HAS_MM_MALLOC. I have forced this definition in Memory.h and Portland does indeed compile without error.
Comment 1 Gael Guennebaud 2014-08-22 09:00:52 UTC
Created attachment 487 [details]
Enable posix_memalign with PGI

Could you test the attached fix and confirm that it is doing the job. Thank you.
Comment 2 drnairb 2014-08-22 17:03:12 UTC
That patch does indeed fix the compilation error. The resulting code produces the correct results as well. Thanks for the quick response.

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