2015-09-03 97 views
1

我想用nvcc編譯C++文件。命令如下:使用CUDA 7.0與GCC 5.2.0和C++ 11

nvcc -std=c++11 file.cu -o file 

編譯器版本如下:

$ nvcc --version 
Cuda compilation tools, release 7.0, V7.0.27 
$ gcc --version 
gcc (GCC) 5.2.0 

的錯誤看起來像NVCC是不符合最新的gcc版本兼容。

/usr/include/c++/5.2.0/bits/stl_iterator_base_types.h(154): error: class "std::vector<Pixel, std::allocator<Pixel>>" has no member "iterator_category" 
     detected during: 
     instantiation of class "std::__iterator_traits<_Iterator, void> [with _Iterator=std::vector<Pixel, std::allocator<Pixel>>]" 
/usr/include/c++/5.2.0/type_traits(1492): error: class "std::__is_convertible_helper<<error-type>, std::input_iterator_tag, false>" has no member class "type" 
     detected during instantiation of class "std::is_convertible<_From, _To> [with _From=<error-type>, _To=std::input_iterator_tag]" 
/usr/include/c++/5.2.0/type_traits(1492): error: not a class or struct name 
     detected during instantiation of class "std::is_convertible<_From, _To> [with _From=<error-type>, _To=std::input_iterator_tag]" 
[...] 

有沒有人遇到過類似的問題?谷歌搜索沒有幫助我在那裏。也許我在這裏錯過了一些東西,對我來說,cuda還是新的東西。

在此先感謝!

+1

CUDA附帶的「入門」文檔闡述了特定CUDA版本支持的主機編譯器版本。你會想要查閱該文檔的Linux版本。 – njuffa

回答

3

由於CUDA工具鏈允許將設備和主機代碼混合在同一個源文件中,因此需要與主機工具鏈緊密集成。因此,CUDA工具鏈通常不適用於比NVIDIA測試和支持的版本更新的主機工具鏈。

每個CUDA版本都附帶一個「Getting Started」文檔,用於說明支持哪個版本的主機工具鏈。這個文檔有三個特定於操作系統的版本;您的問題中的信息表明您處於Linux平臺上,因此您需要查閱Linux版本的「入門指南」。

由於CUDA 7.0目前是CUDA的最新發布版本,因此也可以在線找到Linux版本的「入門」文檔here。它顯示了各種版本的gcc 4.8和gcc 4.9都受支持,具體取決於您使用的特定版本的Linux。

+0

非常感謝。應該看看文檔:/ btw我在arch linux上。 – japedo