我有一个.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文件和包括铜文件这个文件 - 同样的问题。 在主机代码我定义的表面的参考将在设备代码中使用。 所以这是我需要在铜文件和主机代码包括要由设备代码分别知名的原因。