-
并行计算的内存架构
根据指令的同时执行和数据的同时执行,计算机系统可以分成以下四类:
单处理器,单数据 (SISD)
单处理器,多数据 (SIMD)
多处理器,单数据 (MISD)
多处理器,多数据 (MIMD) -
分布式内存
- 好处
第一,总线和开关级别的的通讯不会发生冲突。每个处理器都可以无视其他处理器的干扰而充分利用局部内存的带宽;
第二,没有通用总线意味着没有处理器数量的限制,系统的规模只局限于连接处理器的网络带宽;
第三,没有Cache一致性问题的困扰。每个处理器只需要处理属于自己的数据而无须关心上传数据副本的问题。 - 最大的缺点
很难实现处理器之间的通讯。如果一个处理器需要其他处理器的数据,这两个处理器必须要通过消息传递协议来交换消息。这样进行通讯会导致速度降低,原因有两个,首先,从一个处理器创建和发送消息到另外一个处理器需要时间;其次,任何处理器都需要停止工作,处理来自其他处理器的消息。面向分布式内存机器的程序必须按照尽量相互独立的任务来组织,任务之间通过消息进行通讯。
-
常用的并行编程模型
共享内存模型
多线程模型
分布式内存/消息传递模型
数据并行模型 -
并行算法的大致操作如下:
任务分解 (Task decomposition)
任务分配 (Task assignment)
聚合 (Agglomeration)
映射 (Mapping) -
评估并行程序的性能
- 加速比
- 效率
- 伸缩性
- 阿姆德尔定律 (Ahmdal’s law)
- 古斯塔夫森定律 (Gustafson’s law)