我目前正在使用 C 和 CUDA 编写应用程序。我有在纯 C 中工作的算法并将其转换为 CUDA。
结果很好,我现在正在优化我的代码。
我使用一个简单的方法来分析内核获取结果所需的时间
clock_t start, end;
double cpu_time_used;
start = clock();
. . . my memcopies and my kernel . . .
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
令我惊讶的是,当我连续多次运行整个程序时,处理时间大大减少。当只运行一次时,我平均大约 0.9 秒。连续运行十次我可以下降到 0.1 秒。
我真正担心的是,Visual Profiler 会根据 15 次运行来计算其统计数据,这使得我的第一次运行被真正快速的 14 次运行所淹没。
我的程序稍后会偶尔运行一次,所以我要优化的是第一次运行的时间。
因此,我的问题是,有没有办法解决这个问题,或者知道它来自哪里?
谢谢 !
编辑:
我在上网本上运行 Windows 7、CUDA 4.2 Toolkit(2.1 功能)