0

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

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

我知道它可以很容易地进行测试,但是我对 CUDA 和 OpenCL 都没有任何实际经验,而且我很着急。

4

4 回答 4

4

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

于 2011-12-08T19:38:27.730 回答
2

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

for(int i=0; i<1000; i++)
  a[i]= /*some value*/

如果只使用 1 个线程,则必须迭代 1000 次。CPU 肯定会比 GPU 非常非常快。但是为了从 GPU 中受益,我们创建了 1000 个线程,每个线程将值插入到内存“a”的相应位置。这可能会导致性能超过 CPU。

于 2011-12-09T12:51:44.287 回答
1

NVidia Tesla GPU 以 4ops/clock 执行一些操作。
GPU 上的内存带宽通常比 CPU<-> 主 RAM 更快,并且有一些用于 2d 结构的巧妙缓存功能。

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

于 2011-12-08T20:30:52.303 回答
1

您还应该考虑 GPU 运行的时钟频率(1-2 GHz),与 CPU 相比,它非常低。当代码不并行时,GPU 的性能确实不是一个选择。

于 2012-01-03T12:58:09.627 回答