我尝试在CUDA计划中测量时间。
为此,我想使用:
#include <chrono>
我收到错误:
error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
我试图包含选项-std=c++11
,-std=c++14
,-std=c++17
。
他们都没有奏效。有什么建议吗?
答案 0 :(得分:2)
该消息不是来自CUDA工具链,而是来自gcc(以及相当旧版本的gcc,可能是4.3)。并且该消息告诉您完全该做什么 - 您需要将-std=c++0x
作为选项传递给gcc。任何主机编译器选项都是通过-Xcompiler
选项从nvcc传递的,所以
$ nvcc -Xcompiler="--std=c++0x" .....
应解决编译器拒绝导入<chrono>
的问题。
答案 1 :(得分:0)
我想添加@ talonmies的正确答案,并提醒您要仔细考虑是否确实要编写自己的代码来进行计时。 CUDA为定时内核和CUDA Runtime API调用提供了一个分析器;您还可以使用其C(ish)API在程序的时间轴上标记段和点。
nVIDIA的Mark Harris写了一篇关于使用个人资料的blog post/tutorial,你可能想看一下。