2012-08-22 392 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++)。