并行结构
计算机领域术语
并行结构一般是指并行体系结构和软件架构采取并行编程。主要目的是使更多任务或数据同时运行。并行体系结构是指许多指令能同时进行的体系结构;并行编程一般有以下模式:共享内存模式;消息传递模式;数据并行模式。在数据库中,为了提高存取和查询速率,会同时采用以上两种并行结构。
简介
并行性有两种解释,同时性:两个或两个以上的事件在同一时刻发生。并发性:两个或两个以上的事件在同一时间间隔发生。
从处理数据的角度看,并行性等级从低到高可分为四类。字串位串:同时只对一个字的一位进行处理。这是最基本的串行处理方式,不存在并行性。字串位并:同时对一个字的全部位进行处理,不同字之间是串行的。这里已开始出现并行性。字并位串:同时对许多字的同一位进行处理。这种方式有较高的并行性。全并行:同时对许多字的全部位进行处理。这是最高一级的并行。在数据库中,并行结构主要是处理数据来分析的,具体采用哪一级并行性,主要与数据规模、机器设备和程序架构有关。
并行体系结构
并行体系结构出现主要因为随着各个领域对高性能计算的要求越来越高,尤其是多媒体领域大数据量高实时性的需求,使得传统的单处理器体系结构已经很难适应大规模并行计算的需求,于是多处理器并行体系结构逐渐成为研究的热点。
多种级别的并行度现在已经成为计算机设计的推动力量,而能耗和成本则是主要约束条件。应用程序中主要有以下两种并行。
(1) 数据级并行(Data Level Parallism),它的出现是因为可以同时操作许多数据项。
(2) 任务级并行(Task Level Parallism),它的出现是因为创建了一些能够单独处理但大量采用并行方式执行的工作任务。
计算机硬件又以如下4种主要方式来开发这两种类型的应用并行。
(1) 指令级并行在编译器的帮助下,利用流水线之类的思想适度开发数据级并行,利用推理执行之类的思想以中等水平开发数据级并行。
(2) 向量体系结构和图形处理器(GPU)将单条指令并行应用于一个数据集,以开发数据级并行。
(3) 线程级并行在一种紧耦合硬件模型中开发数据级并行或任务级并行,这种模型允许在并行线程之间进行交互。
(4) 请求级并行在程序员或操作系统指定的大量去耦合任务之间开发并行。
并行编程模型
共享存储模型
共享存储模型是一般的集中式多处理机的抽象 ,例如 SMP(Symmetric Multiprocessing)结构并行机 。其底层为一系列处理器 ,各个处理器可以对共享存储器中的数据进行存取 ,数据对于每个处理器来说都是可访问到的 ,不需要在处理器间进行数据传递,由于所有处理器可以访问内存中的同一位置 ,因而它们可以通过共享变量进行交互和同步 。其初衷是为了共享存储多处理机。
消息传递模型
消息传递即用户显式地通过发送和接收消息来实现处理器之间的数据交换 。在这个模型中 , 每个进程都有自己独立的地址空间 ,一个进程不能够直接访问其他进程中的应用数据 , 数据访问必须通过消息传递来实现 。它主要用来开发大规模和粗粒度的并行性 。MPI是通过扩展串行编程语言来实现并行化的 ,使得程序员可以操作并行处理器的底层函数 ,因而为程序开发提供了更大的灵活性。
两级并行编程模型
针对消息传递模型和共享存储模型各自的优点而形成的两级并行模型具有更好的性能。这种模型是针对 SMP机群而提出的 。模型的执行方式为在各个节点间使用消息传递的方式进行数据共享,而在各个节点内部使用共享存储的方式来共享数据,由此可以更好地利用消息传递和共享存储模型的处理数据的优势,减少了开销并且提升了性能 。
MapReduce模型
MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:
1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。
2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。
3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理。
最新修订时间:2022-08-25 12:09
目录
概述
简介
并行体系结构
参考资料