首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >串行CPU与GPU代码

串行CPU与GPU代码
EN

Stack Overflow用户
提问于 2011-12-09 03:23:04
回答 4查看 1.2K关注 0票数 0

我正在写一篇关于异构计算可能性的理论作业。我需要比较在CPU或GPU上以串行方式执行的单线程(不可并行化)的有效性。

我知道这是一个奇怪的问题,因为在GPU上执行单个线程是没有意义的,但我真的可以使用我正在开发的启发式方法的指导线比率。

我知道它很容易测试,但我既没有CUDA也没有OpenCL的实际经验,而且我很着急。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-09 03:38:28

GPU执行单元往往是有序的,并且(至少在nVidia GPU的情况下)在单线程上下文中,您通常每4个时钟只能获得一条指令。与现代超标量CPU相比,在现代超标量CPU中,您通常可以获得每个时钟>1条指令的吞吐量,并且CPU在逐个时钟的基础上胜出4倍或更多。CPU时钟频率往往比GPU时钟高得多,因此时钟速度可能很容易进一步增加3倍,使CPU相对于GPU高达12倍或更多。

票数 4
EN

Stack Overflow用户

发布于 2011-12-09 20:51:44

单个GPU内核比CPU内核弱很多,另外还有数据传输的开销。GPU在并行代码上获胜的原因是同时在100个内核上运行的线程的绝对数量。考虑这个例子:

代码语言:javascript
复制
for(int i=0; i<1000; i++)
  a[i]= /*some value*/

如果你只使用一个线程,它必须迭代1000次。CPU肯定会比GPU更快。但是为了从GPU中获益,我们创建了1000个线程,每个线程都将值插入到内存'a‘的相应位置。这可能会导致CPU的性能提升。

票数 2
EN

Stack Overflow用户

发布于 2011-12-09 04:30:52

NVidia特斯拉GPU以40次/时钟的速度执行某些操作。

GPU上的内存带宽通常比CPU<->main RAM更快,并且有一些针对2d结构的巧妙缓存功能。

但通常不需要-如果您不需要对>256个项目执行相同的操作,则使用CPU

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

https://stackoverflow.com/questions/8436443

复制
相关文章

相似问题

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