gpt4 book ai didi

c - 多次启动代码时处理时间减少

转载 作者:太空宇宙 更新时间:2023-11-04 03:00:16 24 4
gpt4 key购买 nike

我目前正在使用 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 秒左右。连续运行 10 次,我可以缩短到 0.1 秒。

我真正担心的是 Visual Profiler 根据 15 次运行计算其统计数据,这让我的第一次运行被其他 14 次真正快速的运行所淹没。

我的程序后面会偶尔跑一次,所以我要优化的是第一次跑的时间。

因此,我的问题是,有没有办法解决这个问题,或者知道它来自哪里?

谢谢!

编辑:

我在上网本上运行 Windows 7、CUDA 4.2 工具包(2.1 功能)

最佳答案

如果您的目标是提供快速启动,请确保您的可执行文件包含将在其上运行的 GPU 架构的目标代码。

您可以为多种体系结构编译带有目标代码的“胖二进制文件”,其中在运行时选择合适的代码版本。您甚至可以(并且应该!)包含 PTX 代码,以防没有合适的目标代码版本(例如,支持 future 的设备)。

只需向 nvcc 提供多个 -gencode 选项,一个用于您要包含目标代码的每个物理架构(“sm_20”),以及至少一个虚拟架构(“compute_20” "), 生成 PTX 代码。

关于c - 多次启动代码时处理时间减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com