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

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

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

目录
相关文章
|
监控 物联网 云计算
优化服务配置:提升效率与用户体验的关键
随着科技的迅猛发展,服务配置已经成为企业和个人生活中不可或缺的一部分。无论是云计算、移动应用、还是物联网设备,都需要良好的服务配置来确保顺畅的运行和卓越的用户体验。本文将探讨服务配置的重要性,以及如何优化配置以提高效率和用户满意度。
ly~
|
2月前
|
存储 缓存 前端开发
如何优化 FileRun 以提高系统响应速度?
为了提高 FileRun 的系统响应速度,可以从服务器硬件、软件配置、系统设置和前端优化四个方面入手。硬件方面,升级服务器配置和网络带宽;软件方面,选择合适的 PHP 版本、优化数据库配置、启用缓存;系统设置方面,调整文件上传下载参数、禁用不必要的功能、定期清理文件系统;前端方面,优化页面加载和使用异步加载技术。
ly~
41 5
|
7月前
|
缓存 前端开发 JavaScript
如何优化前端性能提升用户体验
在Web应用中,前端性能是影响用户体验和转化率的关键因素之一。本文将介绍一些优化前端性能的方法,包括减少HTTP请求、使用缓存、压缩代码等。
|
9天前
|
缓存 算法 Swift
Swift 应用性能优化的重要性及基本原则,包括理解性能瓶颈、针对性优化和平衡性能与代码质量
本文深入探讨了 Swift 应用性能优化的重要性及基本原则,包括理解性能瓶颈、针对性优化和平衡性能与代码质量。具体介绍了优化数据结构、减少对象创建、合理使用缓存、优化算法和内存管理等技巧,并通过实际案例展示了如何有效提升应用性能和用户体验。
17 3
|
17天前
|
算法 调度 数据库
性能优化在实时系统中的应用
性能优化在实时系统中的应用
|
17天前
|
缓存 负载均衡 算法
性能优化:提升系统效率的关键
性能优化:提升系统效率的关键
33 1
|
5月前
|
SQL 缓存 Java
系统性能优化总结
系统性能优化总结
73 10
|
5月前
|
监控 Java 图形学
【性能优化篇】U3D游戏卡顿大作战:内存与渲染效率的极致提升
【7月更文第12天】在Unity3D游戏开发领域,性能优化是决定玩家体验好坏的关键一环。游戏频繁卡顿,不仅破坏了沉浸式体验,还可能造成玩家流失。本文将深入探讨如何有效解决U3D游戏卡顿问题,特别聚焦于内存管理和渲染效率两大核心领域,助力开发者打造流畅丝滑的游戏世界。
379 0
|
6月前
|
存储 JSON 数据格式
如何提升写入效率?Schemaless 写入性能优化实践分享
TDengine 是一款时序数据库,其Schemaless模式适应物联网数据动态变化。通过分析火焰图,发现parser和insert操作是性能瓶颈。优化措施包括减少标签解析、排序和子表生成的重复执行,提前判断schema变更,改进数据插入方法,减少内存分配和拷贝。通过这些优化,如在3.0版本中,line协议性能提升了2.5倍,telnet提升2倍,json提升近5倍。使用工具如火焰图和perf进行性能分析,以识别和解决瓶颈,实现性能提升。
36 0
|
7月前
|
Android开发 开发者 UED
安卓应用开发中的性能优化技巧
在当今移动应用市场竞争激烈的环境中,用户对于应用性能的需求日益增加。因此,在安卓应用开发过程中,如何实现高效的性能优化成为开发者需要关注的重要问题。本文将探讨安卓应用开发中的性能优化技巧,包括减少内存占用、优化界面渲染、提升响应速度等方面的方法,帮助开发者更好地提升应用的用户体验。
69 0