PGI compile problem with lanczos_sse2.hpp

I am trying to link to a library that uses some code from boost. So far I have been able to build the code under gcc, intel and pathscale compilers. However, I get about 100 errors from this file under pgi (versions 7.1, 7.2 and 10.1) boost/boost/math/special_functions/detail/lanczos_sse2.hpp I have copied the first few error messages to the end of this email. My suspicion is that some settings are not correct for this compilation under PGI. I did check that the header files used by "lanczos_sse2.hpp" were present. I don't have any experience with the SSE/SSE2 optimizations. FYI, our build system uses bjam, so there is a Jamfile for boost, which I can send if needed. Thanks for any assistance, -Brian ****** pgi 7.1 compile errors ******** "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 26: error: identifier "align" is undefined static const ALIGN16 double coeff[26] = { ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 26: error: expected a ";" static const ALIGN16 double coeff[26] = { ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 54: error: a global-scope declaration may not have this storage class register __m128d vx = _mm_load1_pd(&x); ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 54: error: identifier "x" is undefined register __m128d vx = _mm_load1_pd(&x); ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 55: error: a global-scope declaration may not have this storage class register __m128d sum_even = _mm_load_pd(coeff); ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 55: error: identifier "coeff" is undefined register __m128d sum_even = _mm_load_pd(coeff); ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 56: error: a global-scope declaration may not have this storage class register __m128d sum_odd = _mm_load_pd(coeff+2); ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 57: error: a global-scope declaration may not have this storage class register __m128d nc_odd, nc_even; ^ "/scratch/SIERRA_TRILINOS/code/TPLs_src/boost/boost/math/special_functions/detail/lanczos_sse2.hpp", line 57: error: a global-scope declaration may not have this storage class register __m128d nc_odd, nc_even; ^

I am trying to link to a library that uses some code from boost. So far I have been able to build the code under gcc, intel and pathscale compilers. However, I get about 100 errors from this file under pgi (versions 7.1, 7.2 and 10.1)
boost/boost/math/special_functions/detail/lanczos_sse2.hpp
I have copied the first few error messages to the end of this email. My suspicion is that some settings are not correct for this compilation under PGI. I did check that the header files used by "lanczos_sse2.hpp" were present. I don't have any experience with the SSE/SSE2 optimizations.
FYI, our build system uses bjam, so there is a Jamfile for boost, which I can send if needed.
Sigh... I'm guessing that the compiler is pretending to be GCC but isn't actually implementing everything that's needed? Oh wait, the following code: #if defined(__GNUC__) || defined(__PGI) #define ALIGN16 __attribute__((aligned(16))) #else #define ALIGN16 __declspec(align(16)) #endif should have set the ALIGN16 macro, is __PGI not defined so it takes the wrong branch? If so what macro should I be testing for there? Thanks, John.
participants (2)
-
Brian Carnes
-
John Maddock