我正在写一篇关于异构计算可能性的理论作业。我需要比较在CPU或GPU上以串行方式执行的单线程(不可并行化)的有效性。
我知道这是一个奇怪的问题,因为在GPU上执行单个线程是没有意义的,但我真的可以使用我正在开发的启发式方法的指导线比率。
我知道它很容易测试,但我既没有CUDA也没有OpenCL的实际经验,而且我很着急。
发布于 2011-12-09 03:38:28
GPU执行单元往往是有序的,并且(至少在nVidia GPU的情况下)在单线程上下文中,您通常每4个时钟只能获得一条指令。与现代超标量CPU相比,在现代超标量CPU中,您通常可以获得每个时钟>1条指令的吞吐量,并且CPU在逐个时钟的基础上胜出4倍或更多。CPU时钟频率往往比GPU时钟高得多,因此时钟速度可能很容易进一步增加3倍,使CPU相对于GPU高达12倍或更多。
发布于 2011-12-09 20:51:44
单个GPU内核比CPU内核弱很多,另外还有数据传输的开销。GPU在并行代码上获胜的原因是同时在100个内核上运行的线程的绝对数量。考虑这个例子:
for(int i=0; i<1000; i++)
a[i]= /*some value*/如果你只使用一个线程,它必须迭代1000次。CPU肯定会比GPU更快。但是为了从GPU中获益,我们创建了1000个线程,每个线程都将值插入到内存'a‘的相应位置。这可能会导致CPU的性能提升。
发布于 2011-12-09 04:30:52
NVidia特斯拉GPU以40次/时钟的速度执行某些操作。
GPU上的内存带宽通常比CPU<->main RAM更快,并且有一些针对2d结构的巧妙缓存功能。
但通常不需要-如果您不需要对>256个项目执行相同的操作,则使用CPU
https://stackoverflow.com/questions/8436443
复制相似问题