将CPU与GPU进行比较 - 它总是有意义的吗?

时间:2012-02-10 04:07:31

标签: benchmarking cpu gpu intel nvidia

我正在阅读关于GPU速度与CPU速度的this article。由于CPU有很多责任,GPU不需要,为什么我们甚至首先比较它们?引用“我不记得另一次我看到一家公司推出的竞争性基准测试速度慢了一个数量级”,这听起来像英特尔和NVIDIA都在制造GPU。

显然,从程序员的角度来看,您想知道将应用程序移植到GPU是否值得您花费时间和精力,在这种情况下(公平)比较是有用的。但总是比较它们是否有意义?

我所追求的是技术解释为什么英特尔推广其速度低于NVIDIA-GPU的基准测试可能是奇怪的,正如Andy Keane似乎认为的那样。

2 个答案:

答案 0 :(得分:2)

  

由于CPU有很多责任,GPU不需要   我们为什么甚至首先将它们比作那样呢?

好吧,如果CPU提供比GPU更好的性能,人们会使用额外的CPU作为协处理器,而不是使用GPU作为协处理器。这些额外的CPU协处理器不一定与主要主机CPU具有相同的行李。

  

显然,从程序员的角度来看,你想知道是否移植了你的   GPU的应用程序值得您花费时间和精力,在这种情况下   (公平)比较是有用的。但它总是有意义的   比较一下?

我认为比较它们是有道理的,也是公平的;毕竟,它们都是各种处理器,并且知道在什么情况下使用一个是有益的或有害的可能是非常有用的信息。要记住的重要一点是,在某些情况下,使用CPU是一种非常优越的方法,使用GPU的情况更有意义。 GPU不会加速每个应用程序。

  

我所追求的是技术解释为什么它可能是奇怪的   正如Andy所说,英特尔推广其速度低于NVIDIA-GPU的基准测试   基恩似乎在想

听起来英特尔没有选择一个特别好的应用程序示例,如果他们唯一的观点是CPU与GPU相比并不是那么糟糕。他们可能已经选择了CPU确实更快的例子;没有足够的数据并行性或算术强度或SIMD程序行为,以使GPU高效。如果你选择分形生成程序来显示CPU只比GPU慢14倍,那你就是愚蠢的;你应该计算一系列术语,或运行一个具有大量分支差异的并行作业或每个线程执行完全不同的代码。英特尔本可以做得比14倍好; NVIDIA知道这一点,研究人员和从业者都知道这一点,编写NVIDIA嘲笑论文的布偶应该已经知道了。

答案 1 :(得分:1)

答案取决于要执行的代码类型。 GPU非常适合高度可并行化的任务或需要高内存带宽的任务,并且加速可能确实非常高。但是,它们不适合具有大量顺序操作或复杂控制流的应用程序。

这意味着数字几乎没有说什么,除非您非常清楚他们正在进行基准测试的应用程序以及该用例与您希望加速的实际代码的相似程度。根据您运行的代码,GPU可能比CPU快100倍或慢100倍。典型的使用场景需要混合使用不同类型的操作,因此通用CPU尚未死亡,并且不会持续很长时间。

如果您要解决特定任务,那么比较特定任务的CPU与GPU的性能可能是有意义的。但是,从比较中得到的结果通常不会直接转换为不同基准的结果。