ホスト コードとデバイス コードの両方を含む .cu ファイルがあります。
// device code
__global__ void
myKernel() { ... }
// host code
#include <boost/thread/mutex.hpp>
boost::mutex myMutex;
int main() { ... }
ご覧のとおり、ブーストのミューテックス機能をインクルードします。ファイルをコンパイルすると、次の警告のためにエラーが発生します。
warning C4005: 'BOOST_COMPILER': Macro-Redefinition c:\boost\include\boost-1_49_0\boost\config\compiler\visualc.hpp
したがって、nvcc がデバイス コードとホスト コードの両方の前処理をすべて処理すると仮定します。はいの場合、どうすればそれを回避し、前処理も cl.exe (MSVC 2010、Win7) に渡すことができますか?
ホストコードを別のhpp/cppファイルに入れ、このファイルをcuファイルに含めようとしました-同じ問題です。ホスト コードでは、デバイス コードで使用されるサーフェス参照を定義します。これが、cu-file と host-code にインクルードして、それぞれデバイス コードで認識されるようにする必要がある理由です。