C++ 构建一个使用boost的.cu文件
我运行了以下命令:C++ 构建一个使用boost的.cu文件,c++,boost,cuda,nvcc,noncopyable,C++,Boost,Cuda,Nvcc,Noncopyable,我运行了以下命令: nvcc -arch=sm_70 foo.cu -o predatorPrey -I $BOOST_ROOT -L $BOOST_LIBRARY_PATH -lboost_timer 并得到以下编译错误: boost/include/boost/core/noncopyable.hpp(42): error: defaulted default constructor cannot be constexpr because the corresponding implici
nvcc -arch=sm_70 foo.cu -o predatorPrey -I $BOOST_ROOT -L $BOOST_LIBRARY_PATH -lboost_timer
并得到以下编译错误:
boost/include/boost/core/noncopyable.hpp(42): error: defaulted default constructor cannot be constexpr because the corresponding implicitly declared default constructor would not be constexpr
谷歌搜索引导了我
在采取变通办法之前,所有的希望似乎都破灭了。
不过,作为一名初级程序员,我不明白他说的是什么意思
使用g++11 open从源代码构建boost解决了这个问题
这是否意味着从头开始重建增压?默认情况下,它与building boost有何不同
那么,在同一个项目中同时使用和CUDA的实际解决方法是什么呢?对于主机代码的使用:
在使用CUDA工具链构建第三方库时,唯一一个成功概率很高的通用解决方案是以这样的方式安排您的项目,即第三方代码位于以.cpp结尾的文件中,并由主机编译器处理,例如linux上的g++和windows上的cl.exe
对于默认处理行为,CUDA代码(如内核等)需要位于文件名以.cu结尾的文件中
如果需要在.cu文件中的函数中使用此第三方代码/库功能,则需要在.cpp文件中构建包装函数,以提供作为可调用函数的必要行为,然后根据需要从.cu文件中调用这些包装函数
在项目层面将所有这些联系在一起
如果对具体问题进行分析,可能会采取其他方法。例如,有时更新到第三方库的最新版本和/或CUDA版本可能会解决此问题
在设备代码中使用:
没有通用的兼容性方法。如果您希望某些行为在设备代码中可用,并且遇到类似这样的编译错误,则需要专门解决该问题
一般建议可能仍然适用,例如更新到您正在使用的第三方库的最新版本和/或CUDA的最新版本。有关主机代码的使用:
在使用CUDA工具链构建第三方库时,唯一一个成功概率很高的通用解决方案是以这样的方式安排您的项目,即第三方代码位于以.cpp结尾的文件中,并由主机编译器处理,例如linux上的g++和windows上的cl.exe
对于默认处理行为,CUDA代码(如内核等)需要位于文件名以.cu结尾的文件中
如果需要在.cu文件中的函数中使用此第三方代码/库功能,则需要在.cpp文件中构建包装函数,以提供作为可调用函数的必要行为,然后根据需要从.cu文件中调用这些包装函数
在项目层面将所有这些联系在一起
如果对具体问题进行分析,可能会采取其他方法。例如,有时更新到第三方库的最新版本和/或CUDA版本可能会解决此问题
在设备代码中使用:
没有通用的兼容性方法。如果您希望某些行为在设备代码中可用,并且遇到类似这样的编译错误,则需要专门解决该问题
一般建议可能仍然适用,例如更新到您正在使用的第三方库的最新版本和/或CUDA的最新版本