〖课前思考〗
为了使一个串行程序变成并行程序,并使它在一个实际的并行计算机系统上运行,需要那些必要的步骤?对并行程序来说,那些因素可能会对它的性能有影响?体系结构和并行程序语言对并行算法的设计有什么影响,更进一步的说,分布存储和共享存储的并行程序设计方法有些什么不同?
〖学习目标〗
本章对并行算法和并行程序的设计基本原理作详细的介绍。通过对本章的学习,需要理解并行算法设计中的必要的步骤,每个步骤中需要考虑的问题。还需要清楚的了解并行程序性能优化需要考虑的问题,如何在各种方法中作适当的权衡。
〖学习指南〗
本章的内容是并行算法设计的基础,它几乎涵盖了并行算法设计中需要考虑的所有问题,因此,它的内容是比较抽象的。一个好的学习方法是对每个内容,尽量多找一些实际的应用的例子,在应用的背景下考虑程序的并行化和并行程序的性能优化,这样才能加深理解。并行程序的设计并没有一定之规。本章所介绍的并行算法的一般设计方法和PCAM设计过程只是一种思路供算法设计者参考,并不一定拘泥于此。
〖难重点〗
● 并发的类型
● 任务分解技术
● 任务分配与负载平衡
● 交互的优化
● 并行算法的一般设计方法
● 并行算法的一般设计过程
● PCAM设计方法
〖知识点〗
● 数据并行
● 任务并行
● 流水并行
● 递归分解
● 数据分解
● 输入数据分解
● 输出数据分解
● 中间数据分解
● 拥有者计算原则
● 搜索分解
● 生产者--消费者模型
● 负载平衡
● 动态负载平衡
● 静态负载平衡
● 任务映射
● 动态任务分配
● 静态任务分配
● 块调度
● 块轮转调度
● 自调度
● 任务图
● 静态任务图
● 动态任务图
● 交互
● 交互模式
● 静态交互模式
● 动态交互模式
● 规则交互模式
● 不规则交互模式
● 交互的开销
● 单边通信
● 双向通信
● 开发数据局部性
● 计算与通信重叠
● 数据复制
● 集合交互操作
● PCAM设计方法
|