-
Notifications
You must be signed in to change notification settings - Fork 18.6k
Description
Recently I pulled the latest dev
from origin
, which seemed to require boost 1.56 features that I didn't have on my boost 1.55 (homebrew version).
After upgrading, all nvcc builds failed with some nvcc compatibility issue with boost (seems to be a known issue to nVidia).
I managed to solve one obvious issue with __int128, but still nvcc seems unhappy about a lot of boost header files in head_traits, hash, atomic, etc. Here's a (partial) snippet of the errors:
/usr/local/include/boost/type_traits/is_abstract.hpp(72): error: identifier "__is_abstract" is undefined
/usr/local/include/boost/type_traits/is_abstract.hpp(72): error: function call is not allowed in a constant expression
/usr/local/include/boost/type_traits/is_abstract.hpp(72): error: type name is not allowed
/usr/local/include/boost/type_traits/is_convertible.hpp(486): error: identifier "__is_convertible_to" is undefined
/usr/local/include/boost/type_traits/is_convertible.hpp(486): error: function call is not allowed in a constant expression
/usr/local/include/boost/type_traits/is_convertible.hpp(486): error: type name is not allowed
/usr/local/include/boost/type_traits/is_convertible.hpp(486): error: type name is not allowed
/usr/local/include/boost/type_traits/is_enum.hpp(180): error: identifier "__is_enum" is undefined
These seem to have been caused by the boost references in common.hpp (and/or some headers it included) which is indirectly included by all .cu
files. Does anyone have a (quick and dirty, at least) solution to this?
From the Googling I've done (and things I've tried that didn't work), the best solution so far seems to be that we separate all CUDA compilations from anything that's related to boost, and let only the host compiler care about boost related stuff -- which hopefully someone more familiar with the project structure would come up with a good workaround.
Thanks in advance!