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..