Opened 8 years ago
Closed 6 years ago
#10420 closed Bugs (fixed)
icpc issue when mixing boost and cuda.
Reported by: | 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 , 8 years ago
comment:2 by , 8 years ago
the int128 issue seems to be fixed in [0a34d7b07e592663a407ee408dc6c943ee2743a8]
follow-up: 4 comment:3 by , 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...
comment:4 by , 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 , 6 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
I believe this is indeed fixed now.... closing down.
I have a fix, but this is my first attempts to using boost through github so it will take some hours..