什么是传统的串行计算?
- 传统的软件是按照串行计算的编程思想来编写的。
- 串行计算程序是运行在具有一个核心(或CPU)的单机上。
- 一个等待解决的问题被分解为一串独立的命令执行流(instructions 命令执行流,也可以是线程)。
- 命令执行流会一个挨一个的,顺序执行。并且在任一时刻都只有一个命令执行流正在执行中。 换句话说,任何时候只有一个线程在执行。
什么是并行计算?
- 最简单的话来解释并行计算就是同时使用 多个计算资源 (就是多个CPU)去运行程序来解决一个需要大量计算的问题 。
- 并行计算程序运行在一个多核心(或多CPU)的计算机、或者由多台计算机组成的网络上。
- 需要进行大量计算的问题,需要被分解成多个独立的、能够同时运行的部分。
- 每个部分将来还将继续分解成一串独立的命令执行流(instructions 命令执行流,也可以是线程)。
- 不同部分的命令执行流可以同时在不同的CPU上得到执行。 换句话说,在同一时间可以有多个线程在执行。
计算资源包括:
- 多核处理器中的单个运算核心。
- 通过网络连接在一起地任意数量的计算机。
- 以上两种类型的一个组合。
那些计算性问题适合使用并行计算来解决:
- “可开发的并发性 ”。在一个计算性问题中,如果该问题能够被分解成多个子问题,并且这些子问题能够在相同的时间内 同时安全地 执行 ,则该问题中就存在并发性 。
- “获得计算结果的时间将缩短 ”。当最终的并行程序运行在一个具有多个处理器的系统上时,获得计算结果的时间将缩短。
- “可解决大型问题 ”