并行计算相关知识

来源:互联网 发布:金数据怎么用 编辑:程序博客网 时间:2024/05/23 15:40

并行计算是指具有多个处理和存储的硬件和软件系统、并发进程或多个程序在松稱合或集中控制的方式下进行任务处理的计算方式。

一、并行计算概念和分类

并行计算是一种通过多个计算机节点协同工作达到提高计算性能的方法。并行计算将一个数据集分解成若干个子数据集,通过多个计算机节点的协作计算,各个节点的处理好分配到该节点上的任务,从而共同完成全部的计算任务。并行计算技术的应用常常出现在由一些多核的高性能计算机或普通计算机组成的集群上。从体系结构上来分,并行计算主要有以下四种类型:

(1)对称多处理(SMP)

对称多处理体系一般由共享内存、计算单元、总线、高速缓存和输入输出流等部分组成。

(2)分布式共享存储多处理(DSM)

分布式共享存储多处理体系是对称多处理(SMP)的的进一步发展,扩展性有所提高,是并行计算技术中常用的一种体系结构。

(3)大规模并行处理(MPP)

大规模并行处理体系主要是一种更倾向于应用多种并行计算框架和文件存储的体系结构,在规模上可以实现上万台的计算机进行并行计算的任务。

(4)集群(Cluster)

集群是现在高性能计算领域中最流行使用的一种体系结构,譬如我们的云计算技术也是其中的一种应用实例。它借助Linux系统平台,可以将并行计算的规模很轻易地从几台普通计算机扩展到成千上万个节点,在高性能计算中占有的应用比重越来越大,是未来并行计算的一个方向。

二、常见的并行策略

通常,并行计算的并行策略可以分为:数据并行(DataParallel)、任务并行(Task Parallel)和混合模型(Mixture Models)三种类型:

(1)    数据并行(Data Parallel)

数据并行策略的思想是按照一定的划分规则,将需要计算处理的数据集分成多个数据子集分配到各个节点计算机上,从而实现对数据的并行处理。其中,划分规则按照序列的方向可以分为按记录和属性两种规则进行。前者,把单独的数据记录序列划分到不同的节点上进行计算处理,实现数据的划分;后者,把单独的属性序列划分到不同的节点上,实现数据的划分。数据被划分到不同节点上后,每个节点执行相应的算法操作,完成相应的数据并行处理,最后汇总到主节点处进行合并,获得最终的并行计算的结果。

(2)    任务并行(TaskParallel)

任务并行这种策略是把并行计算的总任务细分成多个子任务,并将这些子任务分配到不同的节点计算机上,从而实现并行处理。这种并行化策略在实际应用中,常常会融入队列思想,在分配子任务的时候借助队列实现动态分配,充分利用各个节点的计算资源。但需要注意的是基于任务并行这种并行策略需要考虑负载均衡的问题,在任务分配的时候需要制定合理的分配规则,努力实现节点计算资源的充分使用。

(3)    混合模型(MixtureModels)

混合模型就是上述两种并行策略的有机结合体,吸取了数据并行和任务并行的优点,具体的过程是:首先利用数据并行策略把数据集进行划分;然后,把这些划分后的子数据集分配到集群的各个节点上去;接着,采用任务并行的策略,将总任务同样划分成多个子任务,并把它们分配到各个计算节点上去,每个节点并行执行本地数据的计算处理;最后,把各个节点计算处理的结果进行合并,从而获得最后的并行计算结果。这种混合的策略,在任务执行阶段减少了节点间数据的交换,降低了节点间的通信开销,具有一定的优势。

三、并行计算的性能标准

与串行算法相比较而言,并行算法的性能评价的标准就不能仅限于存储空间和运行时间两方面,更多的需要从计算处理能力、存储能力、负载均衡和通信开销甚至是故障处理等多方面来考虑。通常,并行算法性能评价标准有加速比、标准效率和扩展性等。

(1)加速比

加速比,是指某一任务在单机系统和并行系统中运行所消耗的时间的比,一般用来衡量并行系统或并行程序的性能。根据这一定义,加速比的计算可以表示为如公式所示。

上述公式中,表示加速比,表示某任务在单机系统下的运行时间,则表示该任务在有P个处理器的并行系统中运行时间。当=时,此加速比被称为线性加速比。

如果是在单处理器环境中效率最高的算法下运行时间(即最适合单处理器的算法),则此加速比被称为绝对加速比。

如果是单处理器环境中还用和并行系统中一样的算法,则此加速比为相对加速比。

通常在实现算法的并行化后,可以采用加速比来定量地描述并行计算算法在运行时间方面相对于串行算法在性能上的提高程度,因此逐渐成为测试并行算法性能的重要指标。

(2)标准效率

并行算法使用加速比的方法只能说明其相对与串行算法在性能方面的提高水平。如果需要描述各个节点计算资源的利用水平就需要引入标准效率这个概念。并行计算标准效率可以用公式来表示。


其中,P为并行计算的处理器的个数。

(3)扩展性

简单说,扩展性就是算法是否适应规模不定的数据。在并行计算的体系中,扩展性可以用来表示并行算法在节点规模和数据规模变动情况下的性能表现。随着节点或数据规模的变化,如果并行算法性能表现平稳,即可认为该并行算法有良好的扩展性;反之,则并行算法的扩展性较差。

四、Hadoop与网格计算

分布式并行计算技术从20世纪70年代左右出现至今,大致经历了程序在多处理器上的运行、分布式对象、Web服务、网格计算、对等计算和效用计算等几个主要的阶段。在这几个主要阶段中,以网格计算代表的分布式并行计算技术最为典型。这里将对它进行简单介绍,分析其与云计算技术的区别,为在Hadoop框架下研究传统数据挖掘算法的并行改进提供理论依据。

网格计算(Grid Computing)的发展过程基本上是以Globus项目的研究发展为代表的。Globus项目最初目的是把美国境内各个高性能计算机中心通过高性能网络连接起来,提高高性能计算机的使用效率,方便一些美国大学和研究机构使用,帮助他们解决大容量计算问题。具体来说,网格计算技术通过利用大量异构计算机的空闲资源(如CPU周期和磁盘存储空间等),在分布式电信基础设施中虚拟一个计算机集群,用来解决一些大规模计算问题。此外,网格计算技术还支持跨管理域计算的能力,实现了企业间或跨企业的资源充分利用,在许多超大计算领域和项目中得到了广泛的运用。

以Hadoop为代表的云计算技术在某种程度上是网格计算和虚拟化技术的融合,即利用了网格分布式并行计算处理的能力,将IT资源构筑为资源池,再加上成熟的服务器虚拟化、存储虚拟化技术,可以是用户方便地监控和调用资源。因此,Hadoop是并行改进算法的一个很理想的运行平台,很适合引入到数据挖掘算法并行改进研究中去。此外,Hadoop还具有以下这些特有的优点1、稳定可靠,它通过维护计算数据的多个副本,能够确保对故障节点进行任务的重新分布处理,提高了任务完成的可靠性和稳定性。2、并行处理效率高,Hadoop的MapReduce框架封装了并行处理、本地化计算、负载均衡等复杂的细节处理机制,极大地提高了整个并行计算体系的处理效率。3、扩展性高,能够通过调节集群节点的规模快速适应处理PB级数据的任务要求,较容易适应不同规模的数据处理任务。



0 0
原创粉丝点击