代码之家  ›  专栏  ›  技术社区  ›  YAKOVM

GPU与FPGA的OpenCL

  •  3
  • YAKOVM  · 技术社区  · 13 年前

    我最近读到关于FPGA与GPU的OpenCL/CUDA 正如我所理解的,FPGA在功率标准上获胜。 我在一些文章中找到了对此的解释:

    可重新配置的设备可以具有比峰值低得多的功耗 值,因为只有芯片的配置部分是活动的

    基于以上所述,我有一个问题——这是否意味着,如果某个CU(计算单元)不执行任何工作项,它仍然会耗电?(如果是的话,那是因为它耗电吗?)

    4 回复  |  直到 13 年前
        1
  •  4
  •   Paul S    12 年前

    是的,空闲电路仍然消耗电力。它没有消耗那么多,但它仍然消耗了一些。这是因为晶体管是如何工作的,以及CMOS逻辑门是如何消耗功率的。

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

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

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

        2
  •  3
  •   ArchaeaSoftware    13 年前

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

    至于功耗,对于GPU来说,合适的工作负载通常会让所有执行单元都很忙,所以这有点像要么全有要么全无。

        3
  •  1
  •   hamzed    7 年前

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

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

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

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

        4
  •  1
  •   My Name    7 年前

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