使用 Intel 编译器和 -std=c++11 标志时 NVCC 不工作

NVCC is not working when Intel compiler and -std=c++11 flag are used

我正在尝试使用英特尔编译器作为主机编译器来编译 cuda 程序。 cuda 程序是用 C++ 编写的,使用了 C++11 的特性。如果我使用默认的主机编译器 g++,那么它运行良好。但我想试试 Intel 编译器,因为 g++ 可能存在性能问题。

我使用的编译器是CUDA 7.5和Intel 16.0.3。它们是最新的编译器,因此它们都支持 c++11 特性。

这是我用一个小测试文件尝试的结果:

nvcc -std=c++11 -ccbin=icpc -Xcompiler=-std=c++11 test.cu -o test

这是输出:

nvcc warning : The -c++11 flag is not supported with the configured host compiler. Flag will be ignored.
/usr/local/gcc-4.8.2/include/c++/4.8.2/x86_64-unknown-linux-gnu/bits/c++config.h(190): error: identifier "nullptr" is undefined

/usr/local/gcc-4.8.2/include/c++/4.8.2/x86_64-unknown-linux-gnu/bits/c++config.h(190): error: expected a ";"

/usr/local/gcc-4.8.2/include/c++/4.8.2/exception(63): error: expected a ";"

有没有人遇到同样的问题,如何解决?谢谢

CUDA 7.5 不支持您尝试执行的操作。在 CUDA 7.5 中使用 icc 作为主机编译器目前不支持 C++11 语法,CUDA 7.5 不支持 icc 16。

CUDA 8.0RC 支持使用 ICC 作为带有 std=c++11 标志的主机编译器(也支持 ICC 16.0)