3

我最近阅读了有关 FPGA 与 GPU 的 OpenCL/CUDA 据我了解,FPGA 在功率标准方面胜出。我在一些文章中找到了对此的解释:

由于只有芯片的配置部分处于活动状态,可重构设备的峰值功耗可以低得多

基于上面所说,我有一个问题 - 这是否意味着,如果某些 CU [Compute Unit] 不执行任何工作项,它仍然会消耗电力?(如果是的话 - 它为什么会消耗电力?)

4

4 回答 4

4

是的,空闲电路仍然消耗功率。它不会消耗那么多,但它仍然会消耗一些。其原因在于晶体管如何工作,以及 CMOS 逻辑门如何消耗功率。

传统上,CMOS 逻辑(所有现代芯片上的类型)仅在切换状态时才消耗功率。与之前一直消耗功率的技术相比,这具有非常低的功率。即便如此,每次出现时钟边沿时,即使没有工作可做,某些逻辑也会改变状态。时钟频率越高,使用的功率就越多。GPU 往往具有高时钟频率,因此它们可以完成大量工作;FPGA 往往具有低时钟速率。这是第一个影响,但可以通过不对没有工作的电路进行计时来缓解(称为“时钟门控”)

随着晶体管的尺寸越来越小,切换时使用的功率量变得越来越小,但其他影响(称为泄漏)变得更加显着。现在我们处于泄漏功率非常显着的地步,它乘以设计中的门数。复杂的设计具有高泄漏功率;简单的设计具有低泄漏功率(在非常基本的术语中)。这是第二个效果。

因此,对于简单的任务,使用小型专用低速 FPGA 可能比大型复杂但高速/通用 CPU/GPU 更节能。

于 2012-09-10T14:29:36.797 回答
3

与往常一样,这取决于工作量。对于原生 GPU 硬件(例如浮点、纹理过滤)良好支持的工作负载,我怀疑 FPGA 能否与之竞争。有趣的是,我听说 FPGA 具有竞争力或更好的图像处理工作负载。这是有道理的,因为 GPU 并未针对小整数进行优化。(因此,GPU 通常与运行 SSE2 优化图像处理代码的 CPU 相比没有竞争力。)

至于功耗,对于 GPU 而言,合适的工作负载通常会使所有执行单元保持忙碌状态,因此这是一个全有或全无的命题。

于 2012-09-08T20:27:24.597 回答
1

根据我对 FPGA 及其工作方式的研究,这些设备可以设计为非常节能,并且可以针对一项特殊任务(例如算法)进行微调,并使用尽可能少的资源(因此能耗更低)除 ASIC 之外的所有可能选择中的消耗)

在使用 FPGA 实现车削完成算法时,设计人员可以选择展开他们的算法以使用提供的最大并行度或使用紧凑的顺序设计。每种方法都有其自身的成本效益;前者以更高的资源消耗为代价帮助最大化性能,后者以最小化性能为代价通过重用硬件来帮助最小化面积和资源消耗。

在为 GPU 开发时,不存在对算法实现的这种级别的控制。开发人员可以控制使用最有效的算法,但他们并不是决定算法最终精确硬件实现的人。与 FPGA 设计人员在计算其设计的硬件实现时甚至计算“纳秒”(使用布局后工具)不同,GPU 开发人员依靠可用的框架来自动增强他们的所有实现细节。与 FPGA 设计人员相比,它们的开发水平要高得多。

因此,这里也出现了众所周知的权衡主题;您想以更长的开发时间为代价对硬件实现进行精确控制吗?选择 FPGA。您想要并行性,但已经下定决心放弃对硬件实现的精确控制并希望使用现有的软件技能进行开发?使用 OpenCL。

于 2018-06-04T03:13:42.507 回答
0

感谢@hamzed,但 OpenCL 并没有从 FPGA 上的 OpenCL 设计者手中夺走控制权。它实际上提供了两全其美的优势:FPGA 的完全可编程性与所有自定义并行算法的优势以及比 RTL 更好的设计收敛速度。通过巧妙地处理算法移动和不移动数据,您可以获得接近 FPGA 的理论性能。请参阅本参考资料中的最后一张图表:https ://www.iwocl.org/wp-content/uploads/iwocl2017-andrew-ling-fpga-sdk.pdf

于 2018-06-22T20:10:14.697 回答