并行计算支撑组件并行计算定义•指许多指令得以同时进行的计算模式。在同时进行的前提下,可以将计算的过程分解成小部份,之后以并发方式来加以解决。并行计算划分•相比串行计算角度–时间并行:流水线技术(CPU指令级别实现)–空间并行:多个处理器执行并发计算•从程序和算法设计角度–任务并行(功能并行,控制并行):每一个线程执行一个分配到的任务,而这些线程则被分配(通常是操作系统内核)到该并行计算体系的各个计算节点中去–数据并行:将数据分配到不同的平行运算节点中空间并行的实现•并行机–单指令流多数据流(SIMD)采用一个控制器来控制多个处理器,同时对一组数据(又称“数据矢量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术在微处理器中,单指令流多数据流技术则是一个控制器控制多个平行的处理微元,例如Intel的MMX或SSE以及AMD的3DNow!技术–多指令流多数据流(MIMD)使用多个控制器来异步地控制多个处理器,从而实现空间上的并行性MIMD种类•MIMD类的机器又可分为常见的五类:–并行矢量处理机(PVP)–对称多处理机(SMP)–大规模并行处理机(MPP)–工作站机群(COW)–分布式共享存储处理机(DSM)并行矢量处理机(PVP)•又称数组处理器,是的一种实现了直接操作一维数组(向量)指令集的中央处理器(CPU),适合数值模拟或者相似领域•绝大多数商业化的CPU实现都能够提供某种形式的向量处理的指令如VIS,MMX,SSE,AltiVec和AVX。向量处理技术常用于游戏主机硬件和图形加速硬件•特点是系统中的CPU是专门定制的向量处理器(VP)对称多处理机(SMP)•种多处理器的电脑硬件架构,在对称多处理架构下,每个处理器的地位都是平等的,对资源的使用权限相同。•处理器都连接到同一个共享的主内存上,并由单一操作系统来控制。在多核心处理器的例子中,对称多处理架构,将每一个核心都当成是独立的处理器大规模并行处理机(MPP)•多个由微处理器,局部存储器及网络接口电路构成的节点组成的并行计算体系;节点间以定制的高速网络互联•程序有多个进程,它们分布在各个微处理器上,每个进程有自己独立的地址空间,进程之间以消息传递进行相互通信工作站机群(COW)•每一个节点都是一个完整的工作站,特别地,大规模并行处理机(MPP)可以近似的看成为一个没有本地磁盘的COW。COW的网络接口是松耦合的,即它是接到I/O总线上而不是像MPP那样直接接到处理器存储总线上的。分布式共享存储处理机(DSM)•将物理上分散的各台处理机所拥有的本地存储器在逻辑上统一编制,形成一个统一的虚拟地址空间,实现存储器的共享•采用cache目录表来支持分布cache的一致性分布式系统•一些独立计算机的集合,系统对于用户而言是一台计算机系统•三种分布式环境:–分布式操作系统–分布式应用程序–分布式数据分布式计算VS并行计算•概念提出的出发点不同–并行计算是相对于串行计算而言–分布式计算是相对于集中式计算环境而言•问题的级别不同–并行计算是硬件级、指令级–分布式计算是任务级、应用级和系统级分布式计算VS并行计算•节点粒度不同–分布式计算节点是单个计算机或者计算机群–并行计算的节点是单个处理器或者是多核处理器中的一个核•分布式计算可以实现并行计算,并行计算不一定是分布式计算•并行计算的专用和科学级别结构式大型高性能主机,廉价通用级别是分布式硬件系统。并行分布式系统并行分布式计算机多处理机(共享存储器)多计算机(私有存储器)总线开关总线开关紧耦合松耦合MIMD并行分布式计算•最重要的两种并行编程模型–数据并行•编程级别比较高•编程相对简单•但它仅适用于数据并行问题–消息传递•编程级别相对较低•有更广泛的应用范围MPI•MPI属于消息传递模型,适合并行计算粒度大,大规模可扩展性并行算法–提供应用程序编程接口–提高通信效率措施包括避免存储器到存储器的多次重复拷贝允许计算和通信的重叠等–可在异构环境下提供实现–提供的接口可以方便C语言和Fortran77的调用–提供可靠的通信接口即用户不必处理通信失败–定义的接口和现在已有接口如PVMNXExpressp4等差别不能太大但是允许扩展以提供更大的灵活性–定义的接口能在基本的通信和系统软件无重大改变时在许多并行计算机生产商的平台上实现接口的语义是独立于语言的–MPI是不提供负载均衡和容错机制,用户需要承担的工作量很大MPI并行模式•MPI的两种最基本的并行程序设计模式–对等模式:每一个进程都要向相邻的进程发送数据,同时从相邻的进程接收数据。MPI提供了捆绑发送和接收操作,可以在一条MPI语句中同时实现向其它进程的数据发送和从其它进程接收数据操作–主从模式:进程将任务、数据分给所有的从进程,然后从进程计算得出结果后,将结果传递到主进程处进行合并MPI与MapReduce•MPI是属于一种简单的消息传递编程模型,较为低级,没有承担集群容错、负载均衡等功能。但他的设计更为灵活,可以使用不同的模式进行计算。•对于hadoop的MapRedue,是属于一种较为高级的计算模型,用户只需要关注map、reduce的操作即可,系统承担了容错、负载均衡,但使用不灵活,只适合固定模式的计算Windows下并行环境•MPI(OpenMPI,mpiCH)•MATLAB•VS2010•JAVA(JDK1.7)集群•故障切换集群•负载均衡集群•高性能计算集群–OpenMPI()–PVM–MPICH(=downloads)–NASA的BEOWULF–LSF