ошибка компиляции библиотеки nvcc и BOOST

nvcc бросает

/usr/include/boost/concept/detail/has_constraints.hpp:29: error: ‘&’ cannot appear in a constant-expression
/usr/include/boost/concept/detail/has_constraints.hpp:29: error: template argument 2 is invalid

в has_constraints.hpp уже есть подозрительный код:

#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580)
  // Work around the following bogus error in Sun Studio 11, by
  // turning off the has_constraints function entirely:
  //    Error: complex expression not allowed in dependent template
  //    argument expression
  inline no has_constraints_(...);
#else
  template <class Model>
  inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
  inline no has_constraints_(...);
#endif

Вопрос: это несовместимость с nvcc boost или что-то не так с моим кодом?


person Michael    schedule 16.12.2011    source источник
comment
На самом деле это может быть больше, чем вы ищете: forums.nvidia.com/index. php?showtopic=150025   -  person craniumonempty    schedule 16.12.2011
comment
nvcc: Драйвер компилятора NVIDIA (R) Cuda Copyright (c) 2005-2010 NVIDIA Corporation Построено на Wed_Nov__3_16:16:57_PDT_2010 Инструменты компиляции Cuda, выпуск 3.2, V0.2.1221   -  person Michael    schedule 16.12.2011
comment
g++ (Убунту 4.4.3-4Убунту5) 4.4.3   -  person Michael    schedule 16.12.2011
comment
Я постоянно сталкиваюсь с одним и тем же советом: forums.nvidia.com/index.php?showtopic= 215470 Существует известная проблема совместимости с boost и nvcc. Обходной путь заключается в разделении источников таким образом, чтобы вы компилировали код cuda с помощью nvcc и код повышения с помощью компилятора хоста. Если есть более новые версии (есть для gcc), и у вас есть возможность протестировать их, я бы попробовал. В противном случае, возможно, придерживайтесь совета.   -  person craniumonempty    schedule 16.12.2011


Ответы (3)


Почему у вас есть "&" перед "Model::constraints"? Я бы подумал, что это проблема. (// это не очевидно)

РЕДАКТИРОВАТЬ:

http://forums.nvidia.com/index.php?showtopic=182890 поговорите об этой проблеме и поработайте над чем-нибудь

http://forums.nvidia.com/index.php?showtopic=150025

РЕДАКТИРОВАТЬ2:

Что ж, побегав некоторое время, вот что я придерживаюсь:

http://forums.nvidia.com/index.php?showtopic=215470 «Существует известная проблема совместимости с boost и nvcc. Обходной путь заключается в разделении исходных кодов таким образом, чтобы код cuda компилировался с помощью nvcc, а код повышения — с хост-компилятором». Джастин Луитженс в группе: Сотрудники NVIDIA

Попробуйте, но если не получится, скомпилируйте отдельно, а потом свяжите их.

person craniumonempty    schedule 16.12.2011
comment
@Майкл Хм, я посмотрю. - person craniumonempty; 16.12.2011
comment
@Майкл .. хорошо, я вижу. boost.org/doc/libs/1_48_0/boost/ concept/detail/ Нужны ли для этого какие-либо параметры компилятора? - person craniumonempty; 16.12.2011
comment
есть много вариантов компилятора. Вы ищете что-то конкретное? - person Michael; 16.12.2011
comment
Хм, посмотрю ссылки - person Michael; 16.12.2011

У меня есть патч http://code.google.com/p/asadchev/source/browse/trunk/projects/boost/boost-1.46.0.nvcc.patch

Возможно, вы сможете увидеть, что изменилось, и исправить свой код аналогичным образом.

Имейте в виду, что исходный код виден как частям компилятора, подобным gcc, так и частям компилятора, подобным яйцам.

person Anycorn    schedule 20.12.2011

В конце мы отключили has_constraints_, как в примере, приведенном в вопросе для Sun Studio 11.

person Michael    schedule 13.01.2012