构建一个使用 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 版本。
我运行以下命令:
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 版本。