大型并行机系统一般可分为6类机器:单指令多数据流SIMD(single instruction multiple data);并行向量处理机PVP(parallel vector processor);对称多处理机SMP(symmetric multiprocessor);大规模并行处理机MPP(massively parallel processor);工作站机群COW(cluster of workstations)和分布共享存储多处理机DSM(distributed shared memory);SIMD计算机多为专用,其余的五种均属于多指令多数据流计算机。
分为3大类:
共享存储多处理机系统、分布存储多处理机系统、机群系统
这样的系统中包含了少量的高性能专门设计定制的向量处理器VP,每个至少具有1Gflops的处理能力,系统中使用专门设计的高带宽的交叉开关网络将VP连向共享存储模块,存储器可以兆字节每秒的速度向处理器传送数据这样的机器通常不使用高速缓存而使用大量向量寄存器和指令缓冲器。
SMP(symmetric multiprocessor, 对称多处理机),这种并行计算机结构,多个处理器共享存储器,这种结构在现今的并行服务器中几乎普遍采用。
SMP系统使用商品微处理器(具有片上和外置高速缓存),它们经由高速总线(或交叉开关)连向共享存储器。主要应用于商务,数据库、数据仓库、在线事务处理系统等。重要的是对称,每个处理器等同访问共享存储器、I/O设备和操作系统服务。正是对称,才能拓展并行性,也正是共享存储,限制系统中的处理器不能太多(一般少于64个),同时总线和交叉开关互连一旦做成也难于拓展。
特性:
大多数商用的SMP系统都是基于总线连接的,占用了并行计算机很大的市场,但SMP存在以下的缺点:
MPP (Massively Parallel Processing),意为大规模并行处理系统,这样的系统是由许多松耦合处理单元组成的,要注意的是这里指的是处理单元而不是处理器。每个单元内的CPU都有自己私有的资源,如总线、内存、硬盘等。在每个单元内都有操作系统和管理数据库的实例复本。这种结构最大的特点在于不共享资源。
MPP一般指超大型(very large scale)计算机系统,它具有如下特性:
分布式共享存储器多处理机,高速缓存目录DIR用于支持分布高速缓存的一致性,DSM和SMP的主要差别是,DSM在物理上有分布在各个节点中的局存,从而形成了共享存储器。对用户而言,系统硬件和软件提供了一个单地址的编程空间。DSM相对于SMP的优越性在于编程容易。
COW
工作站机群,在有些情况下,机群往往是低成本的变形的MPP。COW的重要界线和特征是:
现今,MPP和COW之间的界线越来越模糊,机群相对于MPP有性价比高的优势,所以在发展可扩放并行计算机方面呼声很高。
主要特点有:
这种系统由于高度共享资源而称为紧耦合系统,当所有的处理器都能等同地访问所有I/O设备、能同样地运行执行程序时称为对称多处理机;如果只有一台或一组处理器,它能执行操作系统并能操纵I/O,而其余的处理器无I/O能力,只在主处理器的监控之下执行用户代码,这时称为非对称处理机。
APRAM模型中的指令类型
主要特点:
主要特点:
它实际上是将一些SMP机器作为一个单节点而彼此连接起来所形成的一个较大的系统,主要特点是:
在一个分布存储的计算机系统中,如果所有的存储器都是私有的、仅能由其处理器访问就称为NORMA。 每个节点都是由处理器、本地存储器、I/O外设组成的自治计算机。
主要特点是:
算法是对解决问题的描述,它是一系列步骤的有序并且有限的集合。
并行算法是一些可同时执行的进程的集合,这些进程相互协调和相互作用从而达到给定问题的求解。
数值计算指基于代数关系运算的一类诸如矩阵运算、多项式求值、求解线性方程组等数值计算问题。求解数值计算问题的算法称为数值算法。
非数值计算指基于比较关系运算的诸如排序、选择、搜索、匹配等符号处理问题。求解非数值计算问题的算法称为非数值算法。
同步算法指算法的诸进程的执行必须相互等待的一类并行算法,诸进程的相互协调。
异步算法指算法的诸进程的执行不必相互等待的一类并行算法。
分布算法指通信链路连接的多个节点,协同完成问题求解的一类并行算法。
如此,在局域网环境下进行的计算为分布计算,工作站机群环境下进行的计算为网络计算,基于internet的计算称为元计算。
确定算法指算法的每一步都能明确地指明下一步应该行进的一种算法。
随机算法指算法的每一步随机地从指定范围内选取若干参数,由其来确定算法的下一步走向的一种算法。
运行时间:运行是时间就是算法运行在给定模型上求解问题所需的时间(主要是输入规模n的函数),通常包含计算时间和通行时间,分别用计算时间步和选路时间步作单位。
处理器数p(n):它是求解问题所用的处理器数目,通常p(n)=n的(1-x)次方,其中0 并行算法的成本 c(n)=t(n)*p(n) 如果求解一个问题的并行算法的成本,在数量接上等于串行算法的最差复杂度,则称此并行算法是成本最优。 总运算量:并行算法所完成的总的操作数量,此时我们并不关心也不必指明算法使用了多少台处理器,当给定了并行系统中的处理器数量时,就可使用Brent定理计算出相应的运行时间。 Brent定理:令W(n)是并行算法A在运行时间T(n)内执行的运算量,则A使用p台处理器可在t(n)=O(W(n)/p+T(n))时间内执行完毕。 W(n)和C(n)密切相关, 对于任意的p,c(n)>w(n),这说明一个算法在运行过程中,不一定都能充分利用有效的处理器去工作。 同步:是在时间上强使各执行进程在某一点必须相互等待; 通信:指在空间上对各并发执行的进程施行数据交换; 通信可使用通行原语来表达。 计算模型就是硬件和软件之间的一种桥梁,使用它能够设计分析算法,在其上高级语言能被有效地编译且能够用硬件来实现。 在串行计算时,冯若伊曼机就是一个理想的串行计算模型,在该模型上硬件设计者能够设计出各种冯若伊曼机而无须虑及被执行的软件;而软件设计师可以编写各种在此模型上 有效执行的软件而无须虑及硬件的事。 并行计算中,尚未有真正通用的并行计算模型,现在流行的计算模型要么过于简单、抽象(如PRAM); 要么过于专业(互联网络模型和VLS计算模型)。 PRAM模型 pram(parallel random access machine) 即并行随机存取机器,共享存储的SIMD模型,一种抽象的并行计算模型,这种模型中,假设有一个容量无限大的共享存储器;有有限或无限个功能相同的处理器,且其均具有简单的算术运算和逻辑判断功能;任何时刻个处理器均可通过共享存储单元相互交换数据。 根据处理器对共享存储单元同时读、同时写的限制,PRAM模型又可分为: 显然允许同时写是不现实的,于是又对PRAM-CRCW模型作了进一步的约定 PRAM的优点: PRAM的缺点: 异步PRAM模型 分相(phase)PRAM模型是一个异步的PRAM模型,简记之为APRAM,系由p个处理器组成,每个处理器都有其局存、局部时钟和局部程序;处理器间的通信经过共享全局存储器;无全局时钟,各处理器异步地独立执行各自的指令;任何时间依赖关系需明确地在处理器程序中加入同步障;一条指令可在非确定但有限的时间内完成。 BSP(Bulk synchronous parallel)模型 字面的含义是大同步模型(相应的,APRAM也叫做“轻量”同步模型) 基本参数: BSP模型中的计算 在BSP模型中,计算系由一系列用全局同步分开的周期为L的超级步所组成。在各超级步中,每个处理器均执行局部计算,并通过选路器接受和发送消息;然后作一全局检查,确定该超级步是否已由所有的处理器完成:若是,则前进到下一超级步,否则下一个L周期被分配给未完成的超级步。 logP模型 logP模型是一种分布存储的、点到点通信的多处理器模型,其中通信网络由一组参数来描述,但它并不涉及到具体的网络结构,也不假定算法一定要用显示的消息传递操作进行描述。 参数: 串行算法直接并行化 从问题描述开始设计并行算法 借用已有算法求解新问题 体系结构 并行程序设计体系结构包括:共享内存(PVP、SMP、DSM),数据并行(SIMD),消息传递(MPP、Clusters)。 编程类型渐渐汇聚于两类:用于PVP、SMP 和 DSM 的共享变量的单地址空间模型和用于MPP和机群的消息传递的多地址空间模型,SIMD 模型已退出主流,但对专用领域(如信号、图像处理、多媒体处理等)仍是有用的。 编程模型 隐式并行、数据并行、共享并行、消息并行 编程模型渐渐汇聚于三类标准模型:数据并行(如HPF)、消息传递(如MPI和PVM)和共享变量(如OpenMP) 编程语言 KAP、Fortran90、HPF、X3H5、OpenMP、PVM、MPI 并行程序设计方法 在实际的并行机上设计并行程序时,绝大多数均是采用扩展fortran和c语言的办法。目前有三种扩展的办法:并行计算模型
4 并行算法设计策略
4 并行程序设计