【问题标题】:NVCC is not working when Intel compiler and -std=c++11 flag are used使用 Intel 编译器和 -std=c++11 标志时,NVCC 不工作
【发布时间】:2016-11-18 23:53:25
【问题描述】:

我正在尝试使用英特尔编译器作为主机编译器来编译 cuda 程序。 cuda 程序是用 C++ 编写的,并使用了 c++11 的特性。如果我使用默认的主机编译器 g++,那么它运行良好。但我想尝试英特尔编译器,因为 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 ";"

有没有人有同样的问题以及如何解决?谢谢。

【问题讨论】:

  • 只有 icc 15.0 被 CUDA 7.5 官方支持。
  • 尝试更新到 CUDA 8.0RC。

标签: c++ c++11 cuda intel nvcc


【解决方案1】:

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

CUDA 8.0RC 支持将 ICC 用作带有 std=c++11 标志的主机编译器(并且还支持 ICC 16.0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2011-04-12
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多