Opened 8 years ago

Closed 6 years ago

#10420 closed Bugs (fixed)

icpc issue when mixing boost and cuda.

Reported by: Alain Miniussi <alain@…> Owned by: John Maddock
Milestone: To Be Determined Component: config
Version: Boost Development Trunk Severity: Problem
Keywords: Cc:

Description

There are 2 problems when using nvcc with intel's compiler and including boost headers. Considering the following truc.cu file:

#include "boost/container/vector.hpp"

int
main() {
  return 0;
}

The compilation raises the following two issues:

[alainm@gurney bug]$ nvcc -ccbin=icpc -c ./truc.cu  -I../include
nvcc warning : The 'compute_10' and 'sm_10' architectures are deprecated, and may be removed in a future release.
In file included from ../include/boost/config.hpp(39),
                 from ../include/boost/container/detail/config_begin.hpp(12),
                 from ../include/boost/container/vector.hpp(18),
                 from ./truc.cu(1):
../include/boost/config/compiler/intel.hpp(40): warning #47: incompatible redefinition of macro "BOOST_COMPILER" (declared at line 11 of "../include/boost/config/compiler/nvcc.hpp")
  #define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
          ^

../include/boost/config/suffix.hpp(496): error: identifier "__int128" is undefined

../include/boost/config/suffix.hpp(497): error: expected a ";"

../include/boost/type_traits/is_integral.hpp(73): error: namespace "boost" has no member "uint128_type"

../include/boost/type_traits/is_integral.hpp(73): error: class "boost::is_integral<boost::int128_type>" has already been defined

../include/boost/type_traits/is_integral.hpp(73): error: namespace "boost" has no member "uint128_type"

../include/boost/type_traits/is_integral.hpp(73): error: class "boost::is_integral<const boost::int128_type>" has already been defined

../include/boost/type_traits/is_integral.hpp(73): error: namespace "boost" has no member "uint128_type"

../include/boost/type_traits/is_integral.hpp(73): error: class "boost::is_integral<volatile boost::int128_type>" has already been defined

../include/boost/type_traits/is_integral.hpp(73): error: namespace "boost" has no member "uint128_type"

../include/boost/type_traits/is_integral.hpp(73): error: class "boost::is_integral<const volatile boost::int128_type>" has already been defined

../include/boost/functional/hash/hash.hpp(116): error: namespace "boost" has no member "uint128_type"

../include/boost/functional/hash/hash.hpp(468): error: namespace "boost" has no member "uint128_type"

../include/boost/functional/hash/hash.hpp(468): error: class "boost::hash<boost::int128_type>" has already been defined

../include/boost/functional/hash/hash.hpp(468): error: namespace "boost" has no member "uint128_type"

../include/boost/functional/hash/hash.hpp(468): error: namespace "boost" has no member "uint128_type"

../include/boost/type_traits/make_unsigned.hpp(77): error: namespace "boost" has no member "uint128_type"

../include/boost/type_traits/make_unsigned.hpp(109): error: namespace "boost" has no member "uint128_type"

17 errors detected in the compilation of "/tmp/tmpxft_000052b6_00000000-6_truc.cpp1.ii".
[alainm@gurney bug]$ 

The two problem are the double definition of BOOST_COMPILER (handled with gcc and visualc) and the absence of int128 in that mode.

Change History (5)

comment:1 by Alain Miniussi <alain@…>, 8 years ago

I have a fix, but this is my first attempts to using boost through github so it will take some hours..

comment:2 by Alain Miniussi <alain@…>, 8 years ago

the int128 issue seems to be fixed in [0a34d7b07e592663a407ee408dc6c943ee2743a8]

comment:3 by Alain Miniussi <alain@…>, 8 years ago

There's a pull request with a fix available: https://github.com/boostorg/config/pull/37 It's my first modification through github so I might have missed something...

in reply to:  3 comment:4 by Alain Miniussi <alain@…>, 8 years ago

Replying to Alain Miniussi <alain@…>:

There's a pull request with a fix available: https://github.com/boostorg/config/pull/37 It's my first modification through github so I might have missed something...

And yes I did. starting from scratch...

comment:5 by John Maddock, 6 years ago

Resolution: fixed
Status: newclosed

I believe this is indeed fixed now.... closing down.

Note: See TracTickets for help on using tickets.