从功耗角度理解的性能优化

简介: 通常的性能优化都会以在规定时间范围内完成的逻辑运算为目标,但是有趣的是我们发现也许追求相同目标下的减少额外功耗是我们真正的方向,性能仅仅是产物而非目标,为此我们提出性能的公式: 信息有效密度/处理所需数据量需要的功耗,该公式表明我们需要提升信息有效密度,同时减少数据处理功耗,这样才能帮助我们最终提升性能。 提升有效信息密度: 文章 Deep learning has a size prob

通常的性能优化都会以在规定时间范围内完成的逻辑运算为目标,但是有趣的是我们发现也许追求相同目标下的减少额外功耗是我们真正的方向,性能仅仅是产物而非目标,为此我们提出性能的公式: 信息有效密度/处理所需数据量需要的功耗,该公式表明我们需要提升信息有效密度,同时减少数据处理功耗,这样才能帮助我们最终提升性能。


提升有效信息密度:
文章 Deep learning has a size problem
中,作者看到当前为了准确性,深度学习模型参数不断扩张甚至达到83亿,该模型导致需要使用512块 NVIDA V00 GPU计算9.2天,用于训练该模型的能源量是美国人平均年能源消耗量的3倍以上以上,因此作者提出了“I couldn’t help but ask myself: is deep learning going in the right direction?", 同时作者发现当前很多深度学习模型在优化模型使用更少的数据(也就是提升有效信息密度),得到几乎相同的准确率,同时提升效率,最后作者的结论是“Shifting from state-of-the-art accuracy to state-of-the-art efficiency”


减少数据处理功耗:
虽然摩尔定律仍然持续,但是RC延迟得到的优化很少,因此从内存取8个字节到计算单元需要1000pj, 而计算单元运行需要10pj,根据性能公式我们需要做3件事:1. 相同结果下减少数据访问量(也就是提升有效信息密度),2. 减少存储单元与计算单元的距离,减少功耗,3. 增大处理单元的并行度,减少数据在计算和存储单元的乒乓过程,减少功耗。上述2. ,3.两个方法也是都被FPGA或者GPU,CPU所使用,也是他们优化的方向,比如内嵌内存,增大缓存,甚至 processor in memory,并且增大计算向量宽度. 虽然我们没有提到性能提升,但是性能的改善已经很明显,前者减少延迟,后者增加吞吐,最终数据处理能力在加快.


深入背后的原因发现,所有优化工作都应该围绕减少运行过程中状态的变化(信息擦除产生功耗 = K W T,K是玻尔兹曼系数,W为需要擦除的bit数,T是环境开尔文温度),也就是减少功耗(提升信息密度也是为了减少bit的翻转),其包括OS上下文切换,OS页面缓存缺失,CPU跳转指令预测失败,CPU缓存缺失,CPU执行通道冲突等,如果用1,0分别代表缓存命中和缺失,有0101和0011两种情况,我们应该会选择后者,甚至应会选择0001,因为前者有三种变化,后者只有一种变化, ISCA 论文《A Case for MLP-Aware Cache Replacement》就完整的描述了这个过程,他努力去获取连续缺失或者连续命中的场景。即使我们关注的是性能,但这个却是结果,而不是行动的原因,反之仅仅考虑速度(例如CPU 频率),那就会落入intel P4的结局,也就是频率虽然快,但是单位时间内可输出的逻辑运算确很低。


当前很热的量子计算机具有超强的计算能力,然而真正推动他前进的是可逆计算(从计算输出可以知道输入,无状态改变,例如“非”运算就是典型的可逆计算)导致量子计算机超低的功耗。所以真正推动性能优化前进是提升信息密度,减少处理数据产生的功耗,最终减少由于状态变换产生的额外功耗,这是一只看不见的手,推动我们前行。


科学家利用狮子躲避牛头,攻击牛尾部的特点在牛尾部画两只眼睛,有效的解决了问题。

目录
打赏
0
0
0
0
38
分享
相关文章
如何优化前端性能提升用户体验
在Web应用中,前端性能是影响用户体验和转化率的关键因素之一。本文将介绍一些优化前端性能的方法,包括减少HTTP请求、使用缓存、压缩代码等。
性能优化在实时系统中的应用
性能优化在实时系统中的应用
性能优化在嵌入式系统中的应用
性能优化在嵌入式系统中的应用
92 3
性能优化:提升系统效率的关键
性能优化:提升系统效率的关键
131 1
提升系统的整体性能
提升系统的整体性能
121 2
探究现代操作系统的架构与性能优化
本文将深入探讨现代操作系统的核心架构,并重点分析其性能优化的关键策略。我们将从宏观和微观两个角度出发,解释操作系统的基本组成部分及其相互作用,并通过具体实例展示如何通过各种技术手段提升系统性能。无论是软件开发者还是计算机专业的学生,都能从中受益,获得对操作系统更深层次的理解。
倚天710规模化应用 - 性能优化 - 软件预取分析与优化实践
软件预取技术是编程者结合数据结构和算法知识,将访问内存的指令提前插入到程序,以此获得内存访取的最佳性能。然而,为了获取性能收益,预取数据与load加载数据,比依据指令时延调用减小cachemiss的收益更大。
【性能优化篇】U3D游戏卡顿大作战:内存与渲染效率的极致提升
【7月更文第12天】在Unity3D游戏开发领域,性能优化是决定玩家体验好坏的关键一环。游戏频繁卡顿,不仅破坏了沉浸式体验,还可能造成玩家流失。本文将深入探讨如何有效解决U3D游戏卡顿问题,特别聚焦于内存管理和渲染效率两大核心领域,助力开发者打造流畅丝滑的游戏世界。
767 0
如何提升写入效率?Schemaless 写入性能优化实践分享
TDengine 是一款时序数据库,其Schemaless模式适应物联网数据动态变化。通过分析火焰图,发现parser和insert操作是性能瓶颈。优化措施包括减少标签解析、排序和子表生成的重复执行,提前判断schema变更,改进数据插入方法,减少内存分配和拷贝。通过这些优化,如在3.0版本中,line协议性能提升了2.5倍,telnet提升2倍,json提升近5倍。使用工具如火焰图和perf进行性能分析,以识别和解决瓶颈,实现性能提升。
71 0
【C/C++ 性能优化】了解cpu 从而进行C++ 高效编程
【C/C++ 性能优化】了解cpu 从而进行C++ 高效编程
545 0

热门文章

最新文章

下一篇
oss创建bucket