构建一个使用 boost 的 .cu 文件

Build a .cu file that uses boost

我运行以下命令:

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

google 搜索引导我 here

this guy 使用解决方法之前,所有的希望似乎都破灭了。 虽然,作为初级程序员,我不明白他所说的

是什么意思

Built boost from source with g++11 open solved the problem

这是否意味着从头开始重建提升?它与默认构建 boost 有何不同?

那么在同一项目中同时使用 CUDA 和 CUDA 的实际解决方法是什么?

主机代码用法:

在使用 CUDA 工具链构建第 3 方库时,唯一成功概率较高的通用解决方法是安排您的项目,使第 3 方代码位于以 .cpp 结尾的文件中,并且由主机编译器处理(例如 linux 上的 g++,windows 上的 cl.exe)。

您的 CUDA 代码(例如内核等)需要位于文件名以 .cu 结尾的文件中(用于默认处理行为)。

如果您需要在 .cu 文件中的函数中使用此第 3 方 code/library 功能,则需要在 .cpp 文件中构建包装函数以提供必要的行为作为可调用函数,然后根据需要从您的 .cu 文件中调用这些包装函数。

Link 所有这些都在项目级别。

具体问题具体分析,可能还可以采取其他方法。例如,有时更新到最新版本的第 3 方库 and/or CUDA 版本,可能会解决问题。

在设备代码中的用法:

没有通用的兼容性方法。如果您希望某些行为在设备代码中可用,而您 运行 遇到这样的编译错误,则需要专门解决该问题。

一般建议可能仍然适用,例如更新到您正在使用的第 3 方库的最新版本,and/or 最新 CUDA 版本。