首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速计算

加速计算
EN

Stack Overflow用户
提问于 2013-04-12 05:20:34
回答 1查看 905关注 0票数 4

我有一个用C和CUDA编写的模拟应用程序。为了测量加速比,我记录了两种情况下的时间。在CUDA中,我使用CUDA事件来测量时间,然后将GPU的时间除以CPU (通常是这样做的)。加速的图像如下所示。

关于加速图的奇怪之处在于,加速比首先增加到55倍,然后减少到35倍,然后随着线程总数的增加而再次增加。我不确定为什么会发生这种情况,以及我如何能够弄清楚这种输出背后的原因。我使用的是448核的GTX 560ti GPU卡。每个块的线程数量是1024 (最大数量),因此每个SM一次一个块。这是因为占用率问题而发生的吗?我如何才能确定这种加速图背后的原因?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-12 15:52:11

加速比中的峰值似乎与CPU中的执行时间有关。分析GPU时间,似乎随着代理数量的增加而线性增加。然而,CPU时间在[0.6,1.6] aprox范围内有一个下降时间,在[2.6,3.1] aprox范围内有一些峰值。

考虑到上述因素,您55倍的最大加速比将在0.6,1.1的范围内降低。因为你的CPU时间也减少了。因此,将加速比计算为CPU time / GPU time是正常的,结果较小。这同样适用于范围[2.6,3.1]中的第二个。

我怎么才能弄清楚这种加速图背后的原因呢?我猜CPU被一些外部事件(I/O、CPU中运行的其他程序、操作系统...)中断了。

为了更准确地计算加速比,在单独执行时重复实验10次,即不要在您的主函数中创建循环来执行10次。对于10次、20次、30次甚至更多的单独执行,您可以计算平均时间,以及方差。然后,研究执行时间:一个或两个峰值可能被认为是特殊情况(忽略它们)。如果你看到了一种趋势,那么应该进行更深入的研究。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15959058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档