并行计算模型
并行计算模型通常指从并行算法的设计和分析出发，将各种并行计算机（至少某一类并行计算机）的基本特征抽象出来，形成一个抽象的计算模型。从更广的意义上说，并行计算模型为并行计算提供了硬件和软件界面，在该界面的约定下，并行系统硬件设计者和软件设计者可以开发对并行性的支持机制，从而提高系统的性能。
PRAM模型
PRAM（Parallel Random Access Machine，随机存取并行机器）模型，也称为共享存储的SIMD模型，是一种抽象的并行计算模型，它是从串行的RAM模型直接发展起来的。在这种模型中，假定存在一个容量无限大的共享存储器，有有限个或无限个功能相同的处理器，且他们都具有简单的算术运算和逻辑判断功能，在任何时刻各处理器都可以通过共享存储单元相互交互数据。根据处理器对共享存储单元同时读、同时写的限制，PRAM模型可以分为下面几种：
· 不允许同时读和同时写（Exclusive-Read and Exclusive-Write）的PRAM模型，简称为PRAM-EREW；
· 允许同时读但不允许同时写（Concurrent-Read and Exclusive-Write）的PRAM模型，简称为PRAM-CREW；
· 允许同时读和同时写（Concurrent-Read and Concurrent-Write）的PRAM模型，简称为PRAM-CRCW。
显然，允许同时写是不现实的，于是又对PRAM-CRCW模型做了进一步约定，于是形成了下面几种模型：
· 只允许所有的处理器同时写相同的数，此时称为公共（common）的PRAM-CRCW，简称为CPRAM-CRCW；
· 只允许最优先的处理器先写，此时称为优先（Priority）的PRAM-CRCW，简称为PPRAM-CRCW；
· 允许任意处理器自由写，此时称为任意（Arbitrary）的PRAM-CRCW，简称为APRAM-CRCW。
· 往存储器中写的实际内容是所有处理器写的数的和，此时称为求和（Sum）的PRAM-CRCE，将称为SPRAM-CRCW。
上面的模型中，PRAM-EREW是功能最弱的计算模型，而PRAM-CRCW则是最强的计算模型，令TM表示某一并行算法在并行计算模型M上的运行时间，则有
其中，p为处理器的数目，它的含义是，一个具有时间复杂度为TCREW或者TCRCW的算法，在PRAM-EREW模型上要花费logp倍的时间去模拟实现。
PRAM模型特别适合于并行算法的表达、分析和比较，使用简单，很多关于并行计算机的底层细节，比如处理器间通信、存储系统管理和进程同步都被隐含在模型中；易于设计算法和稍加修改便可以运行在不同的并行计算机系统上；根据需要，可以在PRAM模型中加入一些诸如同步和通信等需要考虑的内容。
(1)模型中使用了一个全局共享存储器，且局存容量较小，不足以描述分布主存多处理机的性能瓶颈，而且共享单一存储器的假定，显然不适合于分布存储结构的MIMD机器；
(2)PRAM模型是同步的，这就意味着所有的指令都按照锁步的方式操作，用户虽然感觉不到同步的存在，但同步的存在的确很耗费时间，而且不能反映现实中很多系统的异步性；
(3)PRAM模型假设了每个处理器可在单位时间访问共享存储器的任一单元，因此要求处理机间通信无延迟、无限带宽和无开销，假定每个处理器均可以在单位时间内访问任何存储单元而略去了实际存在的，合理的细节，比如资源竞争和有限带宽，这是不现实的；
(4) PRAM模型假设处理机有限或无限，对并行任务的增大无开销；
(5)未能描述所线程技术和流水线预取技术，而这两种技术又是当今并行体系结构用的最普遍的技术。
BSP模型
BSP模型是个分布存储的MIMD计算模型，其特点是：
· 它将处理器和路由器分开，强调了计算任务和通信任务的分开，而路由器仅仅完成点到点的消息传递，不提供组合、复制和广播等功能，这样做既掩盖具体的互连网络拓扑，又简化了通信协议；
· 采用障碍同步的方式以硬件实现的全局同步是在可控的粗粒度级，从而提供了执行紧耦合同步式并行算法的有效方式，而程序员并无过分的负担；
· 在分析BSP模型的性能时，假定局部操作可以在一个时间步内完成，而在每一个超级步中，一个处理器至多发送或接收h条消息（称为h-relation）。假定s是传输建立时间，所以传送h条消息的时间为gh+s，如果 ，则L至少应该大于等于gh。很清楚，硬件可以将L设置尽量小（例如使用流水线或大的通信带宽使g尽量小），而软件可以设置L的上限（因为L越大，并行粒度越大）。在实际使用中，g可以定义为每秒处理器所能完成的局部计算数目与每秒路由器所能传输的数据量之比。如果能够合适的平衡计算和通信，则BSP模型在可编程性方面具有主要的优点，而直接在BSP模型上执行算法（不是自动的编译它们），这个优点将随着g的增加而更加明显；
· 为PRAM模型所设计的算法，都可以采用在每个BSP处理器上模拟一些PRAM处理器的方法来实现。理论分析证明，这种模拟在常数因子范围内是最佳的，只要并行宽松度（Parallel Slackness），即每个BSP处理器所能模拟的PRAM处理器的数目足够大。在并发情况下，多个处理器同时访问分布式的存储器会引起一些问题，但使用散列方法可以使程序均匀的访问分布式存储器。在PRAM-EREW情况下，如果所选用的散列函数足够有效，则L至少是对数的，于是模拟可以达到最佳，这是因为我们想在p个物理处理器的BSP模型上，模拟个虚拟处理器，可将个虚拟处理器分配个每个物理处理器。在一个超级步内，v次存取请求可以均匀分布，每个处理器大约v/p次，因此计算机执行本次超级步的最佳时间为O(v/p)，且概率是高的。同样，在v个处理器的PRAM-CRCW模型中，能够在p个处理器（如果 ），和的BSP模型上用O(v/p)的时间也可以达到最佳模拟。
· 在并行计算时，Valiant试图也为软件和硬件之间架起一座类似于冯·诺伊曼机的桥梁，它论证了BSP模型可以起到这样的作用，正是因为如此，BSP模型也常叫做桥模型；
· 一般而言，分布存储的MIMD模型的可编程性比较差，但在BSP模型中，如果计算和通信可以合适的平衡（例如g=1），则它在可编程方面呈现出主要的优点；
· 在BSP模型上，曾直接实现了一些重要的算法（如矩阵乘、并行前序运算、FFT和排序等），他们均避免了自动存储管理的额外开销；
· BSP模型可以有效的在超立方体网络和光交叉开关互连技术上实现，显示出，该模型与特定的技术实现无关，只要路由器有一定的通信吞吐率；
· 在BSP模型中，超级步的长度必须能够充分的适应任意的h-relation，这一点是人们最不喜欢的；
· 在BSP模型中，在超级步开始发送的消息，即使网络延迟时间比超级步的长度短，它也只能在下一个超级步才能使用；
· BSP模型中的全局障碍同步假定是用特殊的硬件支持的，这在很多并行机中可能没有相应的硬件；
· Valiant所提出的编程模拟环境，在算法模拟时的常数可能不是很小的，如果考虑到进程间的切换（可能不仅要设置寄存器，而且可能还有部分高速缓存），则这个常数可能很大。
LogP模型
根据技术发展的趋势，20世纪90年代末和未来的并行计算机发展的主流之一是巨量并行机，即MPC（Massively Parallel Computers），它由成千个功能强大的处理器/存储器节点，通过具有有限带宽的和相当大的延迟的互连网络构成。所以我们建立并行计算模型应该充分考虑到这个情况，这样基于模型的并行算法才能在现有和将来的并行计算机上有效的运行。根据已有的编程经验，现有的共享存储、消息传递和数据并行等编程方式都很流行，但还没有一个公认的和占支配地位的编程方式，因此应该寻求一种与上面的编程方式无关的计算模型。而根据现有的理论模型，共享存储PRAM模型和互连网络的SIMD模型对开发并行算法还不够合适，因为它们既没有包含分布存储的情况，也没有考虑通信和同步等实际因素，从而也不能精确的反映运行在真实的并行计算机上的算法的行为，所以，1993年D.Culer等人在分析了分布式存储计算机特点的基础上，提出了点对点通信的多计算机模型，它充分说明了互联网络的性能特性，而不涉及到具体的网络结构，也不假定算法一定要用现实的消息传递操作进行描述。
LogP模型是一种分布存储的、点到点通信的多处理机模型，其中通信网络由4个主要参数来描述：
（1）L(Latency) 表示源处理机与目的处理机进行消息（一个或几个字）通信所需要的等待或延迟时间的上限，表示网络中消息的延迟。
（2）o(overhead)表示处理机准备发送或接收每个消息的时间开销（包括操作系统核心开销和网络软件开销），在这段时间里处理不能执行其它操作。
（3）g(gap)表示一台处理机连续两次发送或接收消息时的最小时间间隔，其倒数即微处理机的通信带宽。
（4）P(Processor)处理机/存储器模块个数
假定一个周期完成一次局部操作，并定义为一个时间单位，那么，L，o和g都可以表示成处理器周期的整数倍。
(1)抓住了网络与处理机之间的性能瓶颈。g反映了通信带宽，单位时间内最多有L/g个消息能进行处理机间传送。
(2)处理机之间异步工作，并通过处理机间的消息传送来完成同步。
(3)对多线程技术有一定反映。每个物理处理机可以模拟多个虚拟处理机(VP)，当某个VP有访问请求时，计算不会终止，但VP的个数受限于通信带宽和上下文交换的开销。VP受限于网络容量，至多有L/g个VP。
(4)消息延迟不确定，但延迟不大于L。消息经历的等待时间是不可预测的，但在没有阻塞的情况下，最大不超过L。
(5)LogP模型鼓励编程人员采用一些好的策略，如作业分配，计算与通信重叠以及平衡的通信模式等。
(6)可以预估算法的实际运行时间。
（1）对网络中的通信模式描述的不够深入。如重发消息可能占满带宽、中间路由器缓存饱和等未加描述。
（2）LogP模型主要适用于消息传递算法设计，对于共享存储模式，则简单地认为远地读操作相当于两次消息传递，未考虑流水线预取技术、Cache引起的数据不一致性以及Cache命中率对计算的影响。
（3）未考虑多线程技术的上下文开销。
（4）LogP模型假设用点对点消息路由器进行通信，这增加了编程者考虑路由器上相关通信操作的负担。
C3模型
C3模型假定处理机不能同时发送和接收消息，它对超步的性能分析分为两部分：计算单元CU，依赖于本地计算量；通信单元COU，依赖与处理机发送和接收数据的多少、消息的延迟及通信引起的拥挤量。该模型考虑了两种路由（存储转发路由和虫蚀寻径路由）和两种发送/接收原语（阻塞和无阻塞）对COU的影响。
(1)用Cl和Cp来度量网络的拥挤对算法性能的影响；
(2)考虑了不同路由和不同发送或接收原语对通信的影响；
(3)不需要用户指定调度细节，就可以评估超步的时间复杂性；
(4)类似于H-PRAM模型的层次结构，C3模型给编程者提供了K级路由算法的思路，即系统被分为K级子系统，各级子系统的操作相互独立，用超步代替了H-PRAM中的Sub PRAM进行分割。
(1)Cl度量的前题假设为同一通信对中的2个处理机要分别位于网络对分后的不同子网络内；
(2)模型假设了网络带宽等于处理机带宽，这影响了正确描述可扩展系统；
(3)在K级算法中，处理机间顺序可以由多种排列，但C3模型不能区分不同排列的难易程度。
BDM模型
1996年J.F.JaJa等人提出了一种块分布存储模型(BDM, Block Distributed Model)。它是共享存储编程模式与基于消息传递的分布存储系统之间的桥梁模型。主要的4个参数为：
(1) P 处理器个数；
(2)τ 处理机从发出访问请求到得到远程数据的最大延迟时间(包括准备请求时间、请求包在网络中路由的时间、目的处理机接收请求的时间以及将包中M个连续字返回给原处理机的时间)；
(3)M 局部存储器中连续的M个字；
(4)σ 处理机发送数据到网络或从网络接收数据的时间。
(1)用M反映出空间局部性特点，提供了一种评价共享主存算法的性能方法，度量了因远程访问引起的处理间的通信；
(2)BDM认可流水线技术。某个处理机的K次预取所需的时间为τ+KMσ (否则为K(τ+Mσ))
(3)可编程型好；
(4)考虑了共享主存中的存储竞争问题；
(5)可以用来分析网络路由情况。
(1)认为初始数据置于局存中，对于共享主存程序的编程者来说，需要额外增加数据移动操作；
(2)未考虑网络中影响延迟的因素(如处理机的本地性、网络重拥挤等)；
(3)未考虑系统开销。