使用带有gcc 5.2.0和c ++ 11的CUDA 7.0

时间:2015-09-03 07:45:07

标签: c++11 gcc cuda nvcc

我正在尝试使用nvcc编译C ++文件。该命令如下所示:

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 个答案:

答案 0 :(得分:3)

由于CUDA工具链允许在同一源文件中混合设备和主机代码,因此需要与主机工具链进行相当紧密的集成。因此,CUDA工具链通常不适用于比NVIDIA测试和支持的版本更新的主机工具链。

每个CUDA版本都附带一个&#34;入门&#34;文档,说明支持主机工具链的哪个版本。该文档有三个特定于操作系统的版本;您的问题中的信息表明您使用的是Linux平台,因此您需要查阅Linux版本的#34;入门&#34;。

由于CUDA 7.0是目前CUDA的最新发布版本,因此Linux版本的#34;入门&#34;文档也可以在网上找到here。它显示支持各种版本的gcc 4.8和gcc 4.9,具体取决于您使用的Linux的特定版本。