从 FLOPS(浮点运算)数估算功耗?

Posted

技术标签:

【中文标题】从 FLOPS(浮点运算)数估算功耗?【英文标题】:Power consumption estimation from number of FLOPS (floating point operations)? 【发布时间】:2016-08-11 16:17:36 【问题描述】:

我已经提取了我的每个算法消耗了多少次触发器(浮点运算),

我想知道我是否在 FPGA 或 CPU 上实现此算法,是否可以预测(至少大致)将消耗多少功率?

CPU 或 ASIC/FPGA 中的两种功耗估计对我都有好处。我正在寻找类似公式的东西。我有 this journal paper,用于 Intel CPU。它给出了每条指令的功耗(不仅是浮点运算,还有所有那些寻址、控制等指令),所以我需要更通用的东西来根据 FLOPS 而不是特殊处理器中代码的指令数来提供功耗。

【问题讨论】:

我在这个“top500.org/files/green500/…”中找到了一篇论文,它是针对某个特定处理器的。 这在很大程度上取决于路由的确切结果和 FPGA 架构。使用 FPGA 工具包的功耗估算工具(基于良好的 PAR 后仿真数据)有什么问题? 它的 HDL 编码 FPGA 实现花费了我大量时间,而这只是我工作的一小部分。 如果您无法使用 HLS 或 HDL 或其他方式创建电路设计,那么估算电路的功耗就没有实际意义。 正如我再次说过的,这实际上取决于确切的路由结果和流程技术(尽管存在经验法则,但它们并不总是有效的)。功耗将与逻辑元件的数量以及信号的开关频率相关(因为 CMOS 逻辑在其他方面是静态的并且主要以晶体管泄漏为特征) 【参考方案1】:

Re CPU:这在现代架构中是不可能的。假设您的程序在裸机上运行(即避免现代操作系统、其他应用程序、中断处理、优化编译器等的复杂性)。未使用的电路,现代处理器将以降低的功率水平运行。还有一些硬件节能状态,例如 P(电源)和 C(睡眠)状态,它们与指令无关,即使使用相同的指令序列也会改变您的功耗。即使我们假设您的应用程序受 CPU 限制(这意味着没有足够长的时间让处理器进入硬件节能状态),我们也无法预测电源使用情况,除非是在总体统计级别。指令流是流水线的、乱序的、融合的等。这甚至不包括内存层次结构等。

FPGA:哦,见鬼。我对 FPGA 的经验太老了,我真的不想说从什么时候开始的。我只能说,在那个时候,当巨大的怪物在地球上漫游时,你可以估计功耗,因为你知道电路设计,以及开关门的功耗。我无法想象现代 FPGA 中没有内置现代节能技术。即便如此,我浏览的小文献表明,许多 FPGA 电源技术是基于先验分析和优化的。请参阅 Design techniques for FPGA power optimization 和 40-nm FPGA Power Management and Advantages。 (顺便说一下,我只是快速搜索和扫描了论文,所以不要太在意我的结论。)

【讨论】:

以上是关于从 FLOPS(浮点运算)数估算功耗?的主要内容,如果未能解决你的问题,请参考以下文章

神经网络学习小记录72——Parameters参数量FLOPs浮点运算次数FPS每秒传输帧数等计算量衡量指标解析

算法基础TOPSTOPS和FLOPs的区别

机器学习笔记:FLOPs

封底计算(估计)

如何通过频率来计算cpu的浮点运算能力滴?

PyTorch 打印模型的FLOPs(torchstat)