〖课前思考〗
  为了使一个串行程序变成并行程序,并使它在一个实际的并行计算机系统上运行,需要那些必要的步骤?对并行程序来说,那些因素可能会对它的性能有影响?体系结构和并行程序语言对并行算法的设计有什么影响,更进一步的说,分布存储和共享存储的并行程序设计方法有些什么不同?

  〖学习目标〗
  本章对并行算法和并行程序的设计基本原理作详细的介绍。通过对本章的学习,需要理解并行算法设计中的必要的步骤,每个步骤中需要考虑的问题。还需要清楚的了解并行程序性能优化需要考虑的问题,如何在各种方法中作适当的权衡。

  〖学习指南〗
  本章的内容是并行算法设计的基础,它几乎涵盖了并行算法设计中需要考虑的所有问题,因此,它的内容是比较抽象的。一个好的学习方法是对每个内容,尽量多找一些实际的应用的例子,在应用的背景下考虑程序的并行化和并行程序的性能优化,这样才能加深理解。并行程序的设计并没有一定之规。本章所介绍的并行算法的一般设计方法和PCAM设计过程只是一种思路供算法设计者参考,并不一定拘泥于此。

  〖难重点〗
  ● 并发的类型
  ● 任务分解技术
  ● 任务分配与负载平衡
  ● 交互的优化
  ● 并行算法的一般设计方法
  ● 并行算法的一般设计过程
  ● PCAM设计方法

  〖知识点〗
  ● 数据并行
  ● 任务并行
  ● 流水并行
  ● 递归分解
  ● 数据分解
  ● 输入数据分解
  ● 输出数据分解
  ● 中间数据分解
  ● 拥有者计算原则
  ● 搜索分解
  ● 生产者--消费者模型
  ● 负载平衡
  ● 动态负载平衡
  ● 静态负载平衡
  ● 任务映射
  ● 动态任务分配
  ● 静态任务分配
  ● 块调度
  ● 块轮转调度
  ● 自调度
  ● 任务图
  ● 静态任务图
  ● 动态任务图
  ● 交互
  ● 交互模式
  ● 静态交互模式
  ● 动态交互模式
  ● 规则交互模式
  ● 不规则交互模式
  ● 交互的开销
  ● 单边通信
  ● 双向通信
  ● 开发数据局部性
  ● 计算与通信重叠
  ● 数据复制
  ● 集合交互操作
  ● PCAM设计方法