我正在编写异构计算中可能性的理论分配。 我需要比较在CPU或GPU上以串行方式执行的单个线程(不可并行化)的有效性。
我知道这是一个奇怪的问题,因为在GPU上执行单个线程没有意义,但我确实可以使用引导线比率来开发我正在开发的启发式。
我知道它可以很容易地进行测试,但我对CUDA和OpenCL都没有任何实际经验,而且我很着急。
答案 0 :(得分:4)
GPU执行单元往往是有序的,并且(至少在nVidia GPU的情况下)在单线程上下文中通常每4个时钟只能获得一条指令。将其与现代超标量CPU进行比较,您通常可以获得>的吞吐量。每个时钟1个指令,CPU以时钟为基础赢得4倍或更多倍。 CPU时钟频率往往远高于GPU时钟频率,因此时钟速度可能会轻松超过3倍,相对于GPU,CPU的速度可达12倍或更高。
答案 1 :(得分:2)
单GPU核心的数量比CPU弱,加上数据传输的开销。 GPU在并行代码上获胜的原因是同时在100多个内核上运行的线程数量。考虑这个例子:
for(int i=0; i<1000; i++)
a[i]= /*some value*/
如果只使用1个线程,则必须迭代1000次。 CPU绝对会比GPU快得多。但是为了从GPU中受益,我们创建了1000个线程,每个线程将值插入到相应位置的内存“a”。这可能会导致CPU的性能提升。
答案 2 :(得分:1)
NVidia Tesla GPU以4ops / clock的速度执行一些操作 GPU上的内存带宽通常比CPU主RAM快,并且对于2D结构有一些聪明的缓存功能。
但一般情况下没有 - 如果你不需要对&gt; 256项使用CPU做同样的事情
答案 3 :(得分:1)
您还应该考虑GPU运行的时钟速率(1-2 GHz),这与CPU相比非常低。当代码不平行时,GPU的性能确实不是一个选择。