ein*_*ica 3 compatibility cuda g++ libstdc++ gcc6
我正在尝试使用GCC 6.2.1构建一些CUDA代码,这是我的发行版的默认编译器(注意:不是CUDA正式支持的GCC版本,所以你可以称之为实验).这是使用GCC 4.9.3和CUDA版本7.5和8.0构建的代码.
好吧,如果我构建以下(接近)最小的示例:
#include <tuple>
int main() { return 0; }
Run Code Online (Sandbox Code Playgroud)
使用命令行
nvcc -std=c++11 -Wno-deprecated-gpu-targets -o main main.cu
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/usr/local/cuda/bin/../targets/x86_64-linux/include/math_functions.h(8897): error: cannot overload functions distinguished by return type alone
/usr/local/cuda/bin/../targets/x86_64-linux/include/math_functions.h(8901): error: cannot overload functions distinguished by return type alone
2 errors detected in the compilation of "/tmp/tmpxft_000071fe_00000000-9_b.cpp1.ii".
Run Code Online (Sandbox Code Playgroud)
这是为什么?我该如何纠正/规避这个?
TL; DR:忘了它.仅使用带有GCC 5.x的CUDA 8.x和带有GCC 6.x的CUDA 9或更高版本
似乎其他人已经在GCC 6.1.x中看到了这个问题,并且建议将以下标志添加到nvcc :( -Xcompiler -D__CORRECT_ISO_CPP11_MATH_H_PROTO是的,两个连续的标志; nvcc --help有关详细信息,请参阅参考资料).(但我不能报告完全成功,因为其他问题会突然出现.)
但请记住,GCC 5.4.x是最新支持的版本,这可能有一个很好的理由,因此将GCC 6.x强加于其上是一种疯狂的追逐 - 特别是当CUDA 9现在可用时.
| 归档时间: |
|
| 查看次数: |
4099 次 |
| 最近记录: |