一门5学分综合实验课,期末考试竟然占到50%,呃……私以为浪费时间,还不如平时多写一点代码、基于对框架的理解做性能调优来得更好。然而课程设计者可能有他们的考虑,这我就不了解了。
兵来将挡,水来土掩——启动思政课复习模式。
内容
隐藏
1. 为什么需要并行计算?
首先,为了提高计算性能;其次,为了通过期末考试。
1.1. 提高计算机性能的主要手段
- 提高处理器字长
- 提高集成度
- 流水线等微体系结构技术
- 提高处理器频率
然而,这些手段几乎到达极限,因为:
- 受量子隧穿效应限制,集成度不能无限提高
- 指令并行度提升已达极限
- 继续提升频率会使功耗和散热超出芯片承受能力
- 存储和计算的速度差异越来越大
1.2. 并行计算
Intel升频失败后,开始转向多核和众核计算。
当今Web规模数据量爆炸增长以及超大的计算量和计算复杂度,促使了对并行计算的需求。
越来越多的研究和应用领域将需要并行计算技术,它将对传统的计算技术产生革命性的影响。
2. 并行计算技术的分类
2.1. 按数据和指令处理结构分类(Flynn分类)
- SISD单指令单数据流:传统单处理器串行处理
- SIMD单指令多数据流:向量机、信号处理系统
- MISD多指令单数据流:罕见
- MIMD多指令多数据流:基本都是这个
2.2. 按并行类型分类
- 位级并行
- 指令级并行
- 线程级并行(包括数据级并行和任务级并行)
2.3. 按存储访问结构分类
- 共享内存(例如SMP等)
- 分布共享存储体系结构(有本地存储器和全局存储器)
- 分布式内存(仅本地存储器,例如NUMA)
2.4. 按系统类型分类
- 多核/众核并行计算系统MC(一个处理器内有多核)
- 对称多处理系统SMP(多个处理器以总线互联共享内存)
- 大规模并行处理MPP(由内联网连接的处理器系统)
- 集群
- 网格(远距离、异构计算机)
2.5. 按计算特征分类
- 数据密集型并行计算(数据量极大,如Web信息检索)
- 计算密集型并行计算(计算非常复杂,如气象预报、科学计算)
- 数据密集和计算密集混合型并行计算(如3D电影渲染)
2.6. 按并行程序设计模型/方法分类
- 共享内存变量(pthread、OpenMP,共享存储器,需要同步控制)
- 消息传递方式(MPI,多用于分布式内存结构)
- MapReduce方式
3. 并行计算的主要技术问题
- 多核/多处理器网络互联结构技术
- 存储访问体系结构
- 分布式数据和文件管理
- 并行计算任务的分解和算法设计
- 并行程序设计模型和方法(见2.6)
- 数据同步访问和通信控制
- 可靠性设计和容错(包括数据、系统和任务失效)
- 并行计算软件框架平台(自动化并行处理、高可扩展性)
- 系统性能评估、程序并行度评估(Amdahl定律:程序加速比的上限由程序的可并行比例决定,S=1/((1-P)+P/N))
4. MPI并行程序设计
4.1. MPI的特点
- 灵活性好,适用于各种计算密集型任务
- 可移植性好
- 很多开放厂商支持
4.2. MPI的不足
- 无良好的数据和任务划分支持
- 缺少分布式文件系统,不支持分布式数据管理
- 通信开销大
- 没有节点失效恢复机制
- 没有良好构架,程序员需考虑细枝末节
5. 为什么需要大数据并行处理技术?
因为要通过期末考试
5.1. 大数据并行处理的重要性
- 当下产生数据太多,大数据及其处理已经成为现实世界的急迫需求
- 大数据处理已成为公认的重大研究领域
- 未来急剧增长的数据将带来极大的技术挑战
- 数据处理能力大幅落后于数据增长速度
- 大数据带来巨大的技术和商业机遇
- 大数据隐含着更准确的事实
5.2. 大数据的类型
- 结构特征:结构化、非结构/半结构化
- 获取和处理方式:动态实时数据、静态非实时数据
- 关联特征:无关联/简单关联数据(键值记录型数据)、复杂关联数据(图数据)
5.3. 大数据问题的特点
- 来自应用行业,具有极强的行业应用需求特性
- 数据规模极大,超出任何传统数据库系统的处理能力
- 传统计算技术在面向大数据处理时需要重写
5.4. 大数据研究的基本原则
- 应用需求为导向:以应用行业问题和需求为出发点
- 领域交叉为桥梁:行业、 IT 产业、学术界协同
- 计算技术为支撑:研究解决涉及的计算技术问题
5.5. 大数据研究的基本目标
以有效的信息技术手段和计算方法,获取、处理和分析各种应用行业的大数据,发现和提取数据的内在价值,为行业提供高附加值的应用和服务.
- 技术手段: 信息技术和计算方法
- 核心目标: 价值发现
- 效益目标: 形成高附加值行业应用
5.6. 大数据研究的挑战
- 数据规模导致难以应对的存储量
- 数据规模导致传统算法失效
- 大数据复杂的数据关联性导致高复杂度的计算
5.7. 大数据研究的基本途径
- 寻找新算法降低计算复杂度
- 降低大数据尺度,寻找数据尺度无关算法
- 大数据并行化处理,分而治之
5.8. 大数据研究层面
- 从信息处理过程:获取—>存储->处理->利用
- 从计算机技术研究与学科视角:基础理论->算法->系统->应用
- 从系统的观点看大数据研究层面:基础设施->系统平台->算法->应用
5.9. 什么是MapReduce
- 基于集群的高性能并行计算平台
- 并行程序开发与运行框架:自动划分数据和任务,自动分配和执行任务并进行数据收集,系统会负责处理数据分布、数据通信、容错处理等
- 并行程序设计模型与方法:MapReduce提供了更加简便的并行程序设计方法和接口规约
5.10. 为什么MapReduce如此重要?
- 是一种高效的大规模数据处理方法
- 改变了大规模尺度上组织计算的方式
- 第一个不同于冯诺依曼结构的、基于集群而非单机的计算方式的重大突破
- 目前为止最为成功的基于大规模计算资源的并行计算抽象方法