Opened 14 years ago

Closed 12 years ago

#2107 closed Bugs (invalid)

Preprocessor Token Conflict with Intel Math Kernel Library (MKL)

Reported by: Brad Howes <howes@…> Owned by: Aleksey Gurtovoy
Milestone: Component: mpl
Version: Boost 1.35.0 Severity: Regression
Keywords: Cc:

Description

A very obscure bug just cropped up in our code when we moved to Boost 1.35 from 1.34.1. We use VSPL++, which uses LAPACK, which is provided in our installation by Intel's Math Kernel Library (MKL). After including <vsip/math.hpp> which brings in the LAPACK and MKL stuff, we cannot compile code using Boost routines that uses stuff from <boost/mpl>. In particular, we get a compile failure in various files found in the <boost/mpl/aux_/preprocessed> directory that have templates with a parameter called P4. This is defined in an MKL header to have the value 2 on our machine, which makes the template useless.

I doubt that I can get Intel to not pollute the token space with 'P4'. I will try and get the VSIPL++ coders to '#undef P4' in a key spot in their code, and might be able to convince them that it would be OK to do so. But I was wondering if general uglification is necessary in the Boost code to reduce this type of problem in the future. I'll understand if the answer is "No" and this is rejected.

Change History (5)

comment:1 by anonymous, 14 years ago

I wonder why Intel wouldn't agree to depollute the token namespace..

in reply to:  1 comment:2 by Noel Belcourt, 13 years ago

Replying to anonymous:

I wonder why Intel wouldn't agree to depollute the token namespace..

Brad,

With Intel 11.1.046 on my Leopard system I have no problem compiling MKL lapack headers and files from MPL. Can you provide more information such as the OS, compiler, which version of MKL, and whether this is still a problem with 1.41?

-- Noel

comment:3 by Marshall Clow, 12 years ago

Noel --

If you never got an answer back, and the problem no longer occurs, can we close this bug? I see that the MPL stuff still uses template parameters P4, so I'm wondering: Is the MLK still #define-ing P4?

in reply to:  3 comment:4 by kbelco@…, 12 years ago

Replying to marshall:

Noel --

If you never got an answer back, and the problem no longer occurs, can we close this bug? I see that the MPL stuff still uses template parameters P4, so I'm wondering: Is the MLK still #define-ing P4?

Hi Marshall,

I didn't get a response so I'd say close this issue. I haven't checked if MKL defines P4.

-- Noel

comment:5 by viboes, 12 years ago

Resolution: invalid
Status: newclosed

Closed as it seems Intel has removed the P4 macro.

Note: See TracTickets for help on using tickets.