公平的绩效比较

时间:2017-09-12 22:05:35

标签: cuda gpu intel gpgpu

我正在为CUDA上的算法创建一个实现,并在使用CUDA而不是CPU时测量性能增益。

我正在比较多线程CUDA与单线程CPU。

所以,基于上述情况,比较这些处理器的计算时间是否公平?

2 个答案:

答案 0 :(得分:2)

当然,进行这种比较是不公平的。

  1. 为什么要用单线程执行来限制CPU?
  2. 有时,不同的算法在不同的硬件上表现更好。
  3. 我假设你已经编写了实现。你可能偏向于支持GPU。
  4. 为什么这些替代方案之间的选择对任何人来说都是真实的情景?
  5. 还有其他一些原因。

    另外,请确保使用正确的指标。时间/成本或时间/功率可能比仅测量时间更有意义。或者它可能是“你可以在一台机器上获得最快的性能”等。

答案 1 :(得分:-1)

我相信你确实有一个非常公平的研究问题要回答,但我确实分享了@einpoklum的大多数问题,但我相信也许你的比较可以是公平的

作为一名研究员,我在迁移到CUDA之前,曾多次问过同样的问题。

但是,恕我直言,是的,如果你考虑到一些问题,一些比较对于列出的硬件来说是公平的:

  1. 比较原因:我确实认为硬件成本和运营成本(投资折旧和功耗)是最有趣的,因为如果您可以使用CUDA进行编写,则意味着您也可以使用CPU群集但是,从我的角度来看,升级GPU比CPU更便宜(即普通计算机可以处理多个GPU,而管理两个处理器的主板并不常见)。
  2. 程序目标:听起来可能很明显,但很容易忽略代码目标,因为某些程序通过自己的方法有太多的依赖关系,而其他程序则更容易以并行的方式运行(即蒙特卡罗模拟在GPU上的表现应该优于CPU,而如果你的目标是解决混合模型,则情况恰恰相反)
  3. 实施:正如@einpoklum所提到的,如果您编写代码,您的实施很有可能会产生偏差,在这种情况下,我会恳求您选择广泛的解决方案对于每种方法(例如blas vs cublas);
  4. 您的结果将仅限于上述三点的组合,因此您无法将结果推断为远。另一方面,如果目标是进行探索性研究以解决或开发新事物的解决方案,那么可以接受使用已经存在的GPU和CPU成熟实现的东西,其目标和方法类似于“模型”,以便推断出结果。
  5. 为了清楚起见,我不是CUDA开发人员,但我正在使用它来解决一些统计方程式,一旦我找到了揭示并行部分的方法,GPU方法就会成为最佳解决方案用户需要(即使用专用硬件快速解决方案)