【问题标题】:Fair Performance Comparison公平的性能比较
【发布时间】:2018-02-21 11:36:58
【问题描述】:

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

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

那么,根据上述情况,比较这些处理器的计算时间是否公平?

【问题讨论】:

  • 恕我直言,这不是一个真正的编程问题。除此之外:如果您只在 CPU 上使用 single 线程,则比较永远不会公平。如果您可以并行化您的代码,也可以并行化您的 CPU 代码。
  • 这取决于你所说的“公平”。如果公平地说,你的意思是你在程序员、硬件和电费上投资的钱——我认为不,不是。

标签: cuda gpu intel gpgpu


【解决方案1】:

当然,这样比较是不公平的。

  1. 为什么要用单线程执行来限制 CPU?
  2. 有时,不同的算法在不同的硬件上表现更好。
  3. 我假设您已经编写了实现。您可能偏向于 GPU。
  4. 为什么在这些替代方案之间进行选择对任何人来说都是现实生活中的场景?

还有很多其他原因。

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

【讨论】:

  • CPU 实现应该是多线程和矢量化,并且还使用最好的可用编译器和库。其他可能有趣的指标是:性能/能源(毕竟,能源是你为公用事业支付的费用)、性能/开发人员的工作时间(对于员工是主要成本因素的环境)
  • @njuffa。优秀的评论。这个问题的唯一答案是什么让您最物有所值,并且考虑到这么多因素,只有您才能回答。
  • @Chiel:并非生活中的一切都与金钱有关。更不用说性能/成本是更容易以各种方式“博弈”的衡量标准之一。
  • @einpoklum。对不起,我不是字面上的意思。我只是想说他应该根据他的边界条件来优化它。
  • 比较的目的是检查GPU是否能超越CPU。我有三个实现单线程 CPU、多线程 CPU 和多线程 GPU。并检查哪一个做得更好。因为我需要公平比较,所以我需要 CPU 和 GPU 具有可比性。也就是说,将全新 GPU 与奔腾 4 CPU 的性能进行比较是不公平的。所以我的问题是,这些硬件在性能而非成本和能源方面是否具有可比性?
【解决方案2】:

我相信你确实有一个非常公平的研究问题要回答,但我确实同意@einpoklum 的大部分担忧,但我确实相信也许你的比较可能是公平的

作为一名研究型科学家,在迁移到 CUDA 之前,我多次问过自己同样的问题。

但是,恕我直言,是的,如果您考虑到一些问题,对列出的硬件进行一些比较是公平的:

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

需要说明的是,我不是 CUDA 开发人员,但我正在使用它来解决一些统计方程,一旦我找到了一种公开并行部分的方法,GPU 方法本身就是考虑到的最佳解决方案用户需求(即使用专用硬件的快速解决方案)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2014-08-03
    相关资源
    最近更新 更多