【问题标题】:CUDA 6.5 with g++ does not support c++11?带有 g++ 的 CUDA 6.5 不支持 c++11?
【发布时间】:2015-01-05 02:09:13
【问题描述】:

我在这里读到 CUDA 6.5 已开始支持 C++11:

https://groups.google.com/forum/#!topic/thrust-users/R37GIkMG4tk

但是当我编译下面的示例代码时,我得到了

$ nvcc -std=c++11 cu-gcc11.cu -o 测试

nvcc 警告:配置的主机编译器不支持 -c++11 标志。标志将被忽略。

cu-gcc11.cu(7):错误:缺少显式类型(假定为“int”)

我的设置:CUDA 6.5、g++ 4.5、ubuntu 12.04

代码:

#include <cuda.h>
#include <iostream>

__host__ void test() {
  float a = 12.;
  double b = 3.;
  auto c = a * b;
  std::cout << c << std::endl;
}

int main()
{
  test();
  return 0;
}

【问题讨论】:

  • 升级你的 gcc 可能吗? gcc4.5 已经很老了。
  • 对我来说编译得很好。 (CUDA 6.5.12,g++-4.8.2,Ubuntu 12.04)。
  • 大家好,我知道 4.5 已经过时了。事实上,我在这里有 gcc-4.6,但我创建了一个指向 4.5 的符号链接。 CUDA doc中不是说nvcc不支持任何> 4.5的东西吗?
  • “CUDA doc”中没有说明 nvcc 不支持任何 > 4.5 的东西。一般来说,对于特定的 cuda 版本,支持的配置列在getting started guide 中(包括每个配置/发行版的 gcc 版本支持)。

标签: c++ c++11 cuda


【解决方案1】:

nvcc 中的 C++11 支持目前处于试验阶段。为了正确使用它,您将需要适当的配置。这在 AFAIK 的任何地方都没有记录,但是您应该使用 Fedora 20 或 Ubuntu 14.04 获得良好的结果,这两者都是 cuda 6.5 支持的配置并包括 GCC 4.8.x。

在您的情况下,您的 GCC 版本太旧了。

【讨论】:

  • 我终于让它工作了。只是凭经验证明nvcc对gcc-4.8.1没有问题。所以我早期的恐惧是没有根据的。
  • 更新:从 CUDA 7 开始,正式支持 C++11。
【解决方案2】:

我认为-std=c++11 在 GCC 4.5 中不可用。试试-std=c++0x

【讨论】:

  • 不起作用:nvcc 致命:没有为选项“std”定义值“c++0x”
猜你喜欢
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 2015-07-10
相关资源
最近更新 更多