《软件优化技术》课程网站 2024
课程名:软件优化技术
讨论软件优化的核心概念、技术与实践,使学生:
- 了解软件优化的基本概念;
- 了解面向软件优化的体系结构支持,包括指令集风格、寄存器、缓存、分支预测等;
- 了解面向软件优化的操作系统支持,包括页面缓存、页面调度、文件目录缓存等;
- 了解面向软件优化的运行时支持,包括Just-in-time编译、基于运行时profiling的优化、内存管理、垃圾回收等;
- 了解面向软件优化的编译支持,包括常见的编译优化技术;
- 为从事全栈优化框架或者软硬件基础设施的研发打下基础。
课程概要
第0讲 课程介绍
- 课程介绍
- 软件优化的概念与目标
第1讲 专用计算系统及优化
- 例子
- 专用图灵机模型
- 专用图灵机模型上的性能优化
- 专用图灵机的实现及优化
第2讲 通用计算系统——CPU
- 通用图灵机模型
- 通用图灵机的实现——CPU
- CPU的性能优化概述
- 指令内并行优化
- 指令级并行优化
- 线程级并行优化
- 多处理器并行优化
- AI处理器优化
第4讲 访存优化1
- 存储技术概述
- 局部性与访存优化原理
- 寄存器分配优化
第5讲 访存优化2
- 缓存的组织结构和操作
- 缓存的性能度量
- 缓存访问优化
第6讲 编译过程及编译优化
- 编译流程概述
- C语言到汇编的翻译
- 编译优化概述
- 数据流分析
- link与load阶段
- 算法(模型)优化
- 硬件优化
- 软件优化
- 压缩(信息熵)
- 识别和删除无用代码
- 分时重用(swap)
- 指令层次的融合
- Loop层次的融合
- Function层次的融合
- 设计层次的融合
Todo
- 虚拟机优化(解释执行/JIT/AOT/GC)
考核方式:
- 课堂(10%) + 讨论(10%) + Presentation(30%) + 结课报告(50%)
- 第9周之前完成Presentation
- ppt时间为25~35分钟
- 鼓励提前完成(以免第最后一次课扎堆,时间不够)
- 期末之前完成课程报告
加分点与减分点:
- +条理清楚、结构清晰、表达流畅
- +有独到见解
- +有创新想法或者改进建议
- -禁止大幅抄袭博客或现有技术资料(本课程会对课程报告,进行网络查重和报告间查重)
- -切勿过泛过浅,缺乏细节展开
考核选题参考
1. 智能计算系统实验(<=95分,分组实验,每组不超过4人)
- 第2章(4小时)
- 实验1(20行代码,2小时):利用三层全连接神经网络实现手写数字分类的训练与推理(CPU平台)。
- 实验2(2小时);利用DLP平台实现三层全连接神经网络实现手写数字分类。
- 第3章(7小时)
- 实验1(30行代码,3小时). 用Python实现基于VGG19的图像分类(CPU平台)
- 实验2(1小时),在DLP上实现图像分类,并与实验1进行性能比较
- 实验3(20行代码,3小时),用Python实现非实时风格迁移算法
- 第4章(12.5小时)
- 实验1(30行代码,2小时),用Pytorch实现基于VGG19的图像分类
- 实验2(50行代码,3小时),用Pytorch实现实时风格迁移算法的推理
- 实验3(60行代码,6小时),用pytorch实现实时风格迁移算法的训练
- 实验4(15行代码,1.5小时),在Pytorch中新增用户自定义算子
- 第5章(16小时)
- 实验1(150行代码,10小时),用BANG语言实现Sigmoid算子,并集成到Pytorch的推理框架,运行到MLU硬件
- 实验2(600行代码,6小时),智能编程语言性能优化实验
2. 技术调研类选题(点击查看详细列表)(<=90分,单人作业)
从给定题目列表中选择一个题目,也可以自拟题目(需事先与老师沟通,并获同意),基本要求:
- 该问题的应用背景是什么
- 该领域的困难和挑战是什么
- 该题目领域的优化方法的历史与现状
- 重点展开讨论其中1-2个最有意思的优化方法
- 该题目领域后续的问题及解决思路展望
- <font color=#00FF00>觉得可以在课堂上跟大家分享或讨论的至少2个点(必需)</font>
- 有实验分析或实验对比(bonus)
- 有独到见解,并有支撑(bonus)
- 独立完成+第2章实验
3. 一个简单的成语接龙算法的实现与调优(<=90分,单人作业)
- 程序构造的依赖文件:给定的一个成语集文件
- 程序输入:一个处理界面,读入输入两个汉字k1、k2(比如,输入:一、河)
- 程序输出:以k1开始到k2结束的、最短的成语接龙列表(比如,输出:一鼓作气、气壮山河)
- 提供性能评估,以及性能优化报告
- 独立完成+第2章实验
参考资料
1)Computer Systems: A Programmer’s Perspective
深入理解计算机系统(csapp),第3版,2016
- 作者:Randal E. Bryant and David R. O’Hallaron
- 教材官网:http://csapp.cs.cmu.edu
2)Computer Organization and Design:The Hardware/Software Interface
- 作者:David A.Patterson,John L.Hennessy
- 中文名:计算机组成与设计硬件/软件接口
3) Computer Architecture:A Quantitative Approach
- 作者:John L. Hennessy, David A. Patterson
- 中文名:计算机体系结构:一种量化方法
往年课程