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

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


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


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

相关文章
|
存储 传感器 安全
「Arm Arch」 初识 Arm(下)
「Arm Arch」 初识 Arm(下)
1353 0
|
JavaScript 前端开发 Python
【python自动化】Playwright基础教程(三)定位操作
【python自动化】Playwright基础教程(三)定位操作
568 0
|
测试技术 Python
Bottle技术:如何用Python打造小巧而强大的Web开发利器?
【8月更文挑战第31天】Bottle是一个用Python编写的轻量级Web框架,设计简洁、快速且小巧,适用于快速开发Web应用程序。其主要特点包括简单易学、快速开发、小巧轻量及强大的功能,如路由、模板和表单验证等。Bottle的核心概念包括路由、模板和请求对象,可通过示例了解其基本用法。此外,合理使用路由、编写测试和利用Bottle扩展等最佳实践有助于更高效地进行Web开发。随着Bottle生态的不断发展,它将在未来Web开发中扮演更重要的角色。
328 1
|
缓存 编译器 数据处理
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
1403 0
|
存储 安全 网络安全
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
|
编解码 测试技术 数据库
图书馆管理系统系统分析与设计(上)
图书馆管理系统系统分析与设计(上)
1232 0
|
算法 编译器 C++
【C++】C++代码性能优化的方法(全网最适用)
【C++】C++代码性能优化的方法(全网最适用)
|
机器学习/深度学习 算法 自动驾驶
机器学习在智能交通系统中有许多应用
机器学习在智能交通系统中有许多应用
|
JavaScript Java 测试技术
基于微信的垃圾分类小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信的垃圾分类小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
232 0
|
存储 人工智能 缓存
探索AIGC未来:CPU源码优化、多GPU编程与中国算力瓶颈与发展
近年来,AIGC的技术取得了长足的进步,其中最为重要的技术之一是基于源代码的CPU调优,可以有效地提高人工智能模型的训练速度和效率,从而加快了人工智能的应用进程。同时,多GPU编程技术也在不断发展,大大提高人工智能模型的计算能力,更好地满足实际应用的需求。 本文将分析AIGC的最新进展,深入探讨以上话题,以及中国算力产业的瓶颈和趋势。
下一篇
开通oss服务