将 CUDA 7.0 与 gcc 5.2.0 和 c++11 结合使用
Using CUDA 7.0 with gcc 5.2.0 and c++11
我正在尝试使用 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 对我来说还是新的。
提前致谢!
因为 CUDA 工具链允许在同一个源文件中混合设备和主机代码,所以它需要与主机工具链相当紧密地集成。因此,CUDA 工具链通常不能与比 NVIDIA 测试和支持的版本更新的主机工具链工作。
每个 CUDA 版本都附带一个 "Getting Started" 文档,说明支持哪些版本的主机工具链。本文档共有三个 OS 特定版本;您问题中的信息表明您使用的是 Linux 平台,因此您需要查阅 "Getting Started".
的 Linux 版本
由于CUDA 7.0是目前最新发布的CUDA版本,"Getting Started"文档的Linux版本也可以在网上找到here。显示支持各种版本的gcc 4.8和gcc 4.9,具体看你用的是哪个版本Linux。
我正在尝试使用 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 对我来说还是新的。
提前致谢!
因为 CUDA 工具链允许在同一个源文件中混合设备和主机代码,所以它需要与主机工具链相当紧密地集成。因此,CUDA 工具链通常不能与比 NVIDIA 测试和支持的版本更新的主机工具链工作。
每个 CUDA 版本都附带一个 "Getting Started" 文档,说明支持哪些版本的主机工具链。本文档共有三个 OS 特定版本;您问题中的信息表明您使用的是 Linux 平台,因此您需要查阅 "Getting Started".
的 Linux 版本由于CUDA 7.0是目前最新发布的CUDA版本,"Getting Started"文档的Linux版本也可以在网上找到here。显示支持各种版本的gcc 4.8和gcc 4.9,具体看你用的是哪个版本Linux。