C++11 包含时出现编译器错误<;chrono>;在CUDA程序中-即使使用--std=c++;11

C++11 包含时出现编译器错误<;chrono>;在CUDA程序中-即使使用--std=c++;11,c++11,compiler-errors,cuda,nvcc,C++11,Compiler Errors,Cuda,Nvcc,我尝试在CUDA程序中测量时间 为此,我想使用: #include <chrono> 我已尝试输入选项-std=c++11,-std=c++14,-std=c++17 他们都没有工作。有什么建议吗?这条信息不是来自CUDA工具链,而是来自gcc(和一个相当旧的gcc版本,可能是4.3)。该消息准确地告诉您要做什么——您需要将-std=c++0x作为一个选项传递给gcc。任何主机编译器选项都通过-Xcompiler选项从nvcc传递 $ nvcc -Xcompiler="--std=

我尝试在CUDA程序中测量时间

为此,我想使用:

#include <chrono>
我已尝试输入选项
-std=c++11
-std=c++14
-std=c++17


他们都没有工作。有什么建议吗?

这条信息不是来自CUDA工具链,而是来自gcc(和一个相当旧的gcc版本,可能是4.3)。该消息准确地告诉您要做什么——您需要将
-std=c++0x
作为一个选项传递给gcc。任何主机编译器选项都通过
-Xcompiler
选项从nvcc传递

$ nvcc -Xcompiler="--std=c++0x" .....

应该可以解决编译器拒绝导入的问题,消息不是来自CUDA工具链,而是来自gcc(可能是gcc的较旧版本,可能是4.3)。该消息准确地告诉您要做什么——您需要将
-std=c++0x
作为一个选项传递给gcc。任何主机编译器选项都通过
-Xcompiler
选项从nvcc传递

$ nvcc -Xcompiler="--std=c++0x" .....

应该解决编译器拒绝导入代码> <代码> >

我想添加到@ TalnMees的正确答案中,并提醒您仔细考虑您是否真的想编写自己的代码来执行计时。CUDA提供了一个用于计时内核和CUDA运行时API调用的分析器;您还可以使用它的C(ish)API在程序的时间轴上标记段和点


< P>我想添加到@ TalnMees的正确答案,并提醒你仔细考虑你是否真的想编写自己的代码来做计时。CUDA提供了一个用于计时内核和CUDA运行时API调用的分析器;您还可以使用它的C(ish)API在程序的时间轴上标记段和点


nVIDIA的马克·哈里斯(Mark Harris)写了一篇关于使用个人资料的文章,你可能想看看。

这给了我一个巨大的错误列表。它的一部分是这样写的:
/usr/lib/gcc/x86\u 64-redhat-linux/4.4.7/../../../../../include/c++/4.4.7/exception\u ptr.h(114):错误:复制类“std::\uu exception\u ptr::exception\u ptr”的构造函数可能没有“std::\uu exception\u ptr::exception\u ptr/../../../../usr/lib gcc/x86\u 64-redhat-linux/4.4.7/../../../../../include/c++/c.1844++/chron:错误:嵌套模板参数列表的相邻“>”分隔符之间需要空格(“>>”是右移位运算符)已达到错误限制。编译终止
因此,您的编译器提供了一个已损坏的
chrono
实现,或者您使用它不正确。GCC的官方文档称,GCC4.7中引入了官方的C++11支持。您正在使用GCC4.4。这一切都与库达无关。你说得对。我有
gcc(gcc)4.4.7 20120313(Red Hat 4.4.7-17)
这给了我一个巨大的错误列表。它的一部分是这样写的:
/usr/lib/gcc/x86\u 64-redhat-linux/4.4.7/../../../../../include/c++/4.4.7/exception\u ptr.h(114):错误:复制类“std::\uu exception\u ptr::exception\u ptr”的构造函数可能没有“std::\uu exception\u ptr::exception\u ptr/../../../../usr/lib gcc/x86\u 64-redhat-linux/4.4.7/../../../../../include/c++/c.1844++/chron:错误:嵌套模板参数列表的相邻“>”分隔符之间需要空格(“>>”是右移位运算符)已达到错误限制。编译终止
因此,您的编译器提供了一个已损坏的
chrono
实现,或者您使用它不正确。GCC的官方文档称,GCC4.7中引入了官方的C++11支持。您正在使用GCC4.4。这一切都与库达无关。你说得对。我有
gcc(gcc)4.4.7 20120313(Red Hat 4.4.7-17)