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

简介: 通常的性能优化都会以在规定时间范围内完成的逻辑运算为目标,但是有趣的是我们发现也许追求相同目标下的减少额外功耗是我们真正的方向,性能仅仅是产物而非目标,为此我们提出性能的公式: 信息有效密度/处理所需数据量需要的功耗,该公式表明我们需要提升信息有效密度,同时减少数据处理功耗,这样才能帮助我们最终提升性能。 提升有效信息密度: 文章 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的结局,也就是频率虽然快,但是单位时间内可输出的逻辑运算确很低。

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

目录
相关文章
|
监控 物联网 云计算
优化服务配置:提升效率与用户体验的关键
随着科技的迅猛发展,服务配置已经成为企业和个人生活中不可或缺的一部分。无论是云计算、移动应用、还是物联网设备,都需要良好的服务配置来确保顺畅的运行和卓越的用户体验。本文将探讨服务配置的重要性,以及如何优化配置以提高效率和用户满意度。
|
5月前
|
缓存 前端开发 JavaScript
如何优化前端性能提升用户体验
在Web应用中,前端性能是影响用户体验和转化率的关键因素之一。本文将介绍一些优化前端性能的方法,包括减少HTTP请求、使用缓存、压缩代码等。
|
3月前
|
SQL 缓存 Java
系统性能优化总结
系统性能优化总结
54 10
|
4月前
|
Java 数据库 图形学
论系统的木桶理论与性能瓶颈
论系统的木桶理论与性能瓶颈
53 7
|
3月前
|
监控 Java 图形学
【性能优化篇】U3D游戏卡顿大作战:内存与渲染效率的极致提升
【7月更文第12天】在Unity3D游戏开发领域,性能优化是决定玩家体验好坏的关键一环。游戏频繁卡顿,不仅破坏了沉浸式体验,还可能造成玩家流失。本文将深入探讨如何有效解决U3D游戏卡顿问题,特别聚焦于内存管理和渲染效率两大核心领域,助力开发者打造流畅丝滑的游戏世界。
162 0
|
5月前
|
移动开发 测试技术 Android开发
构建高效Android应用:从优化用户体验到提升性能表现
【5月更文挑战第15天】 在移动开发领域,一个成功的Android应用不仅需要具备吸引用户的功能,更应提供流畅和高效的用户体验。随着技术的不断进步,开发者面临着将先进技术集成到现有架构中以提高应用性能的挑战。本文将深入探讨如何通过最新的Android框架和工具来优化应用性能,包括对UI的响应性、内存管理以及多线程处理等关键方面的改进,旨在帮助开发者构建出更加强大、快速且稳定的Android应用。
|
5月前
|
缓存 前端开发 UED
突破极限,提升用户体验——前端开发中的性能优化技巧
在当今数字化时代,用户对网页加载速度和响应性能的需求日益增长。本文将介绍一些前端开发中常用的性能优化技巧,帮助开发人员提高网页的性能表现,从而提升用户体验。通过压缩文件、使用合适的图片格式、延迟加载、代码优化等方法,我们可以有效地减少网页的加载时间,并且提升网页的渲染速度和响应性能。
|
Web App开发 Java Linux
【性能优化】使用Perfetto定位应用启动性能的瓶颈
本篇文章将会结合我个人对Perfetto的实际使用经历,讲解车载应用的启动时间是如何测量得到的,测量出启动时间后,我们又该如何找出其中的性能瓶颈。
1633 1
【性能优化】使用Perfetto定位应用启动性能的瓶颈
|
机器学习/深度学习 存储 数据可视化
开发者效率的几个瓶颈点
开发者效率的几个瓶颈点
开发者效率的几个瓶颈点
|
缓存 负载均衡 NoSQL
接口性能优化方案及其理论依据
我们现在接口的线上问题主要有三个,第一:启动时有些机器会有短暂的线程池满。第二:并发量上不去,怕服务被打死,不敢调高限流阈值。第三:499超时现象。   今天终于把那天说的全量执行时间延长,从图中可以看到,中午12点发版之后,内存使用率有明显下降,晚上是接口调用高峰,会有上浮,但是总体来看还是下降了。
接口性能优化方案及其理论依据
下一篇
无影云桌面