您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页秃姐学AI系列之:并行计算 & 分布式计算

秃姐学AI系列之:并行计算 & 分布式计算

来源:华佗小知识

分布式计算?并行计算?

并行计算、分布式计算 以及 网格计算 和 云计算 都是属于高性能计算(HPC)的范畴,它们的主要目的在于对大数据的分析与处理,但它们却存在很多差异。

而之所以会傻傻分不清 并行 和 分布式 是因为这两种计算具有共同的特点,都是运用并行来获得更高性能计算,把大任务分为N个小任务。但两者还是有区别的。

并行计算

什么是并行计算

并行计算——Parallel Computing:又称 平行计算,是指一种能够让多条指令同时进行的计算模式,可分为时间并行和空间并行

  • 时间并行:即利用多条流水线同时作业
  • 空间并行:是指使用多个处理器执行并发计算,以降低解决复杂问题所需要的时间。

并行计算是指同时使用多种计算资源解决计算问题的过程。为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算主要目的在于三个方面: 

并行算法

并行算法是一种特殊类型的计算机算法,它可以同时在多个处理器上运行并解决问题。并行算法的设计通常比串行算法更复杂,因为它需要处理一些特殊的问题,如数据分割、任务调度、通信和同步等。

并行算法在许多领域都有应用,包括科学计算、数据分析、机器学习等。

并行编程模型

并行编程模型是描述并行程序设计和执行的高级概念。这些模型为程序员提供了一种方式来组织和控制并行程序的计算和通信。有许多不同类型的并行编程模型,包括以下几种:

  • 共享内存模型:在这种模型中,所有处理器都可以访问同一内存空间。处理器通过读写这个共享的内存空间来进行通信。这种模型简单易用,但可能需要处理数据一致性和同步的问题。
  • 消息传递模型:在这种模型中,每个处理器都有自己的内存空间,处理器之间通过发送和接收消息来进行通信。这种模型适合在没有共享内存的分布式系统中使用。
  • 数据并行模型:在这种模型中,数据被划分成多个部分,每个部分在一个处理器上处理。这种模型适合处理大量的数据,并且每个数据的处理方式相同。
  • 任务并行模型:在这种模型中,不同的任务被分配给不同的处理器。每个任务可能需要执行不同的操作,且可能相互依赖。

选择使用哪种并行编程模型取决于问题的性质和可用的硬件资源。不同的模型可能需要不同的编程技巧和工具。

各种并行架构

共享内存架构

在共享内存架构中,所有的处理器都可以访问同一内存空间。

这种架构的优点是编程相对简单,因为所有的处理器都可以直接访问内存中的任何数据,无需进行复杂的通信或数据传输。

然而,共享内存架构也有其挑战,其中最主要的是需要处理并发访问内存的问题。当多个处理器试图同时访问或修改同一数据时,就需要使用某种同步机制(如 互斥锁 或 信号量)来保证数据的一致性和正确性。

分布式内存架构

在分布式内存架构中,每个处理器都有自己的私有内存,处理器之间需要通过消息传递或网络通信来交换数据。

这种架构的优点是可以轻易地扩展到很多处理器,因为每个处理器都工作在自己的内存空间中,不会出现内存访问的冲突。

然而,编程复杂度较高,因为需要明确处理数据的分布和通信。此外,性能往往受到通信延迟和带宽的。

混合模型

混合模型试图结合共享内存和分布式内存两种架构的优点。在混合模型中,处理器被组织成多个节点,每个节点内的处理器通过共享内存进行通信,而不同节点之间则通过消息传递进行通信。

这种模型在许多现代的高性能计算系统中被广泛使用,因为它可以有效地利用每个节点内的并行性(通过共享内存),同时也能扩展到很多节点(通过分布式内存)。

然而,编程复杂度也相应地增加,因为需要处理两种类型的并行性和通信。

并行计算需满足的基本条件

  1. 并行计算机。并行计算机至少包含两台或两台以上处理机,处理机通过互联网络相互连接,相互通信。
  2. 应用问题必须具有并行度。也就是说,应用可以分解为多个子任务,这些子任务可以并行地执行。将一个应用分解为多个子任务的过程,称为并行算法的设计。
  3. 并行编程。在并行计算机提供的并行编程环境上,具体实现并行算法,编制并行程序并运行该程序,从而达到并行求解应用问题的目的。 

分布式计算

什么是分布式计算

分布式计算和集中式计算是相对应的概念

  • 所谓集中式计算就是指由一台或多台 主计算机 组成中心节点,数据集中存储在这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统的所有功能均能由其进行集中处理,其最大的特点就是部署结构简单。
  • 分布式计算主要研究如何应用分布式系统进行计算,即把一组计算机通过网络相互连接组成分散系统,然后将需要处理的数据分散成多个部分,交由分散在系统内的计算机组同时计算再将结果最终合并得到最终结果。

传统的集中式处理不仅会导致成本攀升,也存在着较大的单点故障风险。为了规避风险、降低成本,互联网公司把研究方向转向了分布式计算。

分布式计算是把 一个需要非常巨大的计算能力才能解决的问题 分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。

分布式计算的优点

  1. 稀有资源可以共享。 
  2. 通过分布式计算可以在多台计算机上平衡计算负载。 
  3. 可以把程序放在最适合运行它的计算机上。其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。

其中,共享稀有资源平衡负载是计算机分布式计算的核心思想之一。

分布式计算技术

  1. 中间件(Middleware)技术:属于可复用软件的范畴,处于操作系统软件与用户应用软件中间。中间件在操作系统、网络和数据库之上、应用软件之下,其作用是为处于上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
  2. 移动Agent技术:是一个能在异构网络中自主地从一台主机迁移到另一台主机、并可与其他agent或资源交互的程序,具有自治性、移动性、智能性。
  3. 网格(Grid):网格技术在动态的一组个体、机构和资源的虚拟组织中实行灵活、可靠、可调整的资源共享环境。在此环境中,网格所需解决的问题包括:唯一性认证、资源访问、资源发现的方式等。
  4. Web Service技术:是一种部署在Web上的对象/组件。Web Service结合了以组件为基础的开发模式以 及 Web 的出色性能,一方面具有黑匣子的功能,可以在不关心功能如何实现的情况下重用;同时,Web Service可以把不同平台开发的不同类型的功能块集成在一起,提供相互之间的互操作。
  5. P2P技术:P2P 系统由若干互联协作的计算机构成,是Internet上实施分布式计算的新模式。它把C/S与B/S系统中的角色一体化, 引导网络计算模式从集中式向分布式偏移,也就是说网络应用的核心从服务器向网络边缘的终端设备扩散,通过服务器与服务器、服务器与PC机、PC机与PC机、PC机与WAP手机等两者之间的直接交换而达成计算机资源与信息共享。

分布式计算的基本步骤

1、把输入数据切分成多份

把数据分成随机很多份,每份尽量平均且个数不会超过单个计算机的处理上限。由一个专门的计算机负责切分

2、把每条输入数据做映射变换

多台计算机合作,为了保证能够准确高效完成任务,必定需要进行角色分工。

可以把负责数据切分的计算机理解为指挥官;负责执行具体运算任务的则是计算兵,同时根据承担任务的不同分为变计算兵合计算兵,两者的比例不固定,可根据数据多少和运算效率进行调整。

开始执行任务时,每一个变计算兵都要对自己分得的数据按照相同的规则做变换,使得后续的步骤中可以对变换后的结果做处理。这种变换规则要根据具体问题来制定,严格的流水化操作,会让整体的效率更高。

3、把变换后的数据按照一定规则分组

变换的运算完成之后,每个变计算兵要将各自的变种数据按照一定规则分成多个小份,每个小份要最终被一个指定的合计算兵进行结果合并统计。

这个过程就是变计算兵将变换后的数据按照规则分组并分配给指定的合计算兵的过程。

4、将变换后的数据进行统计合并

合计算兵将手中的变种数据按照相同的计算规则依次进行合并,计算规则也需要根据具体问题来制定,统计出最终的结果。

然后所有的合计算兵把自己的计算结果上交给指挥官指挥官汇总后公布最终统计的结果。

分布式处理技术在逻辑上并不复杂,但在具体的实现过程中会有很多复杂的过程,譬如指挥官如何协调调度所有的运算兵运算兵之间如何通信等等。

并行计算与分布式计算区别与联系

并行计算和分布式计算既有区别也有联系。

  • 从解决对象上看,两者都是大任务化为小任务,这是他们共同之处。

具体区别和联系如下表所示:

可以非常粗略的理解为:

  • 并行计算:在同一个计算机的不同处理器上解决大任务拆出来的小任务
  • 分布式计算: 在不同计算机上解决大任务拆出来的小任务 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务