1 什么是并行计算?
串行计算: 传统的软件通常被设计成为串行计算模式,具有如下特点:
-
- 一个问题被分解成为一系列离散的指令;
- 这些指令被顺次执行;
- 所有指令均在一个处理器上被执行;
在任何时刻,最多只有一个指令能够被执行。
并行计算: 简单来讲,并行计算就是同时使用多个计算资源来解决一个计算问题:
-
- 一个问题被分解成为一系列可以并发执行的离散部分;
- 每个部分可以进一步被分解成为一系列离散指令;
- 来自每个部分的指令可以在不同的处理器上被同时执行;
需要一个总体的控制/协作机制来负责对不同部分的执行情况进行调度。
这里的 计算问题 需要具有如下特点:
- 能够被分解成为并发执行离散片段;
- 不同的离散片段能够被在任意时刻执行;
- 采用多个计算资源的花费时间要小于采用单个计算资源所花费的时间。
这里的 计算资源 通常包括:
- 具有多处理器/多核(multiple processors/cores)的计算机;
- 任意数量的被连接在一起的计算机。
并行计算机:
通常来讲,从 硬件 的角度来讲,当前所有的单机都可以被认为是并行的:
- 多功能单元(L1缓存,L2缓存,分支,预取,解码,浮点数,图形处理器,整数等)
- 多执行单元/内核
- 多硬件线程