OpenCL for GPU与FPGA

时间:2012-09-08 16:45:14

标签: cuda opencl fpga

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

  

可重配置设备可以从峰值获得更低的功耗   值,因为只有芯片的配置部分是活动的

基于上述说法,我有一个问题 - 这是否意味着,如果某些CU [计算单元]没有执行任何工作项,它仍会消耗功率? (如果是的话 - 它为什么消耗能量?)

4 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:3)

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

对于功耗,对于GPU来说,合适的工作负载通常会使所有执行单元都处于忙碌状态,所以它有点是一个全有或全无的主张。

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

对@hamzed表示感谢,但OpenCL并未将控制权从FPGA上的OpenCL设计者手中夺走。实际上,它具有两全其美的优点:具有所有自定义并行算法的FPGA的完全可编程性以及与RTL相比更好的设计完成速度。通过巧妙地移动和不移动数据,您可以获得接近于FPGA的理论性能。请参阅此参考文献中的最后一个图表:https://www.iwocl.org/wp-content/uploads/iwocl2017-andrew-ling-fpga-sdk.pdf