- 什么是并行计算
通过多个处理器一起工作去解决某个问题。传统程序编写后是串行计算的,而并行计算则需要通过多个计算资源解决计算问题。 - 并行计算与分布式计算的区别
并行计算:同一时间发生多项不同活动,同一应用规模大而需分散到多个核心或处理器上,通常用于科学计算
分布式计算:不同活动跨越多系统或服务器,更关注并发和资源共享,通常用于商业领域 - 为什么需要并行计算
1.节省计算时间;
2.解决大规模问题,特别是单机无法解决的问题
3.更好地利用底层并行硬件 - 并行计算机和模型分类
1.从处理单元分类:
SISD:串行计算机,一个CPU时钟周期只能处理一条指令,同时只能输入一条数据,如单核CPU
SIMD:一个时钟周期所有处理单元执行相同指令,不同的处理单元可以处理不同数据,如GPU
MISD:多个不同处理单元独立在同一数据上执行不同指令
MIMD:每个处理器可以执行不同指令和处理不同数据,如多核CPU
2.从存储器分类
共享存储器:具有多核处理器的单台计算机,如SMP
分布式存储器:连接多台计算机形成无共享存储的计算平台,如集群、超级计算机、数据中心。通过通信网络连接各处理器内存,每个处理器有自己的内存或地址空间,一个处理器对内存的改变不会影响其他处理器的内存,软件程序负责定义数据在处理器间通信的方式和时机。
- 从编程模型分类
共享存储编程模型:一般用于共享存储机器;单进程有多个并发执行的线程;每个线程有本地数据,但共享资源;线程间通过全局内存通信;线程可以创建或销毁,但主程序一直存在;如Pthread, OpenMP。
消息传递编程模型:一般用于分布式存储机器;计算过程中有一组任务,每个任务都有自己的本地内存;多个任务可驻留在相同的物理机或跨越不同的物理机;任务间通过发送接收消息来交换数据;如MPI。
编程模型严格来说不受机器或内存体系架构的限制,消息传递编程模型可以支持共享存储机器(如在一台服务器上的MPI),共享存储编程模型也可用于分布式存储机器(如分区全局地址空间PGAS)