2012-08-22 402 views
8

我无法找到哪个版本/ CUDA 5.0支持哪些C++概念。 我在CUDA 5.0 RC随附的“编程指南”或“参考指南”中找不到任何信息。特别是我想知道CUDA 5.0是否支持C++ 11。有人可以指引我去一个地方寻找这些信息吗?cuda 5.0支持的C++版本

+0

你在问C++设备代码支持还是主机代码? – talonmies

回答

1

它不支持GCC 4.7,以便some of the c++11 features不可用:

- Non-static data member initializers 
- Template aliases :(
- Delegating constructors 
- User-defined literals 
- Extended friend declarations 
- Explicit virtual overrides 
+0

不好意思接受这个,最初我希望能够参考cuda的文档,但是这个列表是一个很好的开始。 – soriak

4

的发行说明,其中GCC的版本都支持支持平台,包括列表,则5.0 Release Candidate release notes显示,支持的最新GCC是4.6对于某些分布(对于其他分布更老)。

一旦知道支持哪个GCC版本,请与GCC C++0x/C++11 feature list比较。

+1

只有主机代码是用GCC编译的。 – Dude

+0

@Dude:nvcc有效地将主文件编译器(在本例中为GCC)和设备编译器进行编译的单个文件进行编译。链接器最终将设备对象和主机对象链接在一起。我不太明白你的意思,只说主机代码是用GCC编译的,没有人说任何不同,但nvcc只支持某些版本(见发行说明)。不知道它保证了一个downvote! – Tom

+0

OP正在询问C++ 11的功能。你确定设备编译器实现了它们吗? – Dude

7

显然没有C++ 11功能在5.0 RC中可用。 NVCC仍然不理解在标准中使用C++ 11语法包括GCC 4.6 (见Error while using CUDA and C++11):

$ NVCC --version

nvcc: NVIDIA (R) Cuda compiler driver 
Copyright (c) 2005-2012 NVIDIA Corporation 
Built on Tue_Jul_31_17:46:14_PDT_2012 
Cuda compilation tools, release 5.0, V0.2.1221 

$猫test.cu

int main() 
{ 
} 

$ NVCC -Xcompiler “-std = C++ 0X” test.cu

/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error: identifier "nullptr" is undefined 

/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error: expected a ";" 

/usr/include/c++/4.6/bits/exception_ptr.h(93): error: incomplete type is not allowed 

...

0

现在如果您询问Cuda/C++或THRUST库。推力库与stl C++在容器,迭代器和算法方面非常相似,但它不是C++ 11.

nvcc编译gpu代码。 nvcc支持(Cuda C和Cuda C++ /推力) gcc编译cpu代码。 gcc(支持C和C++)。