并行计算、分布式计算 以及 网格计算 和 云计算 都是属于高性能计算(HPC)的范畴,它们的主要目的在于对大数据的分析与处理,但它们却存在很多差异。
而之所以会傻傻分不清 并行 和 分布式 是因为这两种计算具有共同的特点,都是运用并行来获得更高性能计算,把大任务分为N个小任务。但两者还是有区别的。
并行计算——Parallel Computing:又称 平行计算,是指一种能够让多条指令同时进行的计算模式,可分为时间并行和空间并行。
并行计算是指同时使用多种计算资源解决计算问题的过程。为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算主要目的在于三个方面:
并行算法是一种特殊类型的计算机算法,它可以同时在多个处理器上运行并解决问题。并行算法的设计通常比串行算法更复杂,因为它需要处理一些特殊的问题,如数据分割、任务调度、通信和同步等。
并行算法在许多领域都有应用,包括科学计算、数据分析、机器学习等。
并行编程模型是描述并行程序设计和执行的高级概念。这些模型为程序员提供了一种方式来组织和控制并行程序的计算和通信。有许多不同类型的并行编程模型,包括以下几种:
选择使用哪种并行编程模型取决于问题的性质和可用的硬件资源。不同的模型可能需要不同的编程技巧和工具。
在共享内存架构中,所有的处理器都可以访问同一内存空间。
这种架构的优点是编程相对简单,因为所有的处理器都可以直接访问内存中的任何数据,无需进行复杂的通信或数据传输。
然而,共享内存架构也有其挑战,其中最主要的是需要处理并发访问内存的问题。当多个处理器试图同时访问或修改同一数据时,就需要使用某种同步机制(如 互斥锁 或 信号量)来保证数据的一致性和正确性。
在分布式内存架构中,每个处理器都有自己的私有内存,处理器之间需要通过消息传递或网络通信来交换数据。
这种架构的优点是可以轻易地扩展到很多处理器,因为每个处理器都工作在自己的内存空间中,不会出现内存访问的冲突。
然而,编程复杂度较高,因为需要明确处理数据的分布和通信。此外,性能往往受到通信延迟和带宽的。
混合模型试图结合共享内存和分布式内存两种架构的优点。在混合模型中,处理器被组织成多个节点,每个节点内的处理器通过共享内存进行通信,而不同节点之间则通过消息传递进行通信。
这种模型在许多现代的高性能计算系统中被广泛使用,因为它可以有效地利用每个节点内的并行性(通过共享内存),同时也能扩展到很多节点(通过分布式内存)。
然而,编程复杂度也相应地增加,因为需要处理两种类型的并行性和通信。
分布式计算和集中式计算是相对应的概念
- 所谓集中式计算就是指由一台或多台 主计算机 组成中心节点,数据集中存储在这个中心节点中,并且整个系统的所有业务单元都集中部署在这个中心节点上,系统的所有功能均能由其进行集中处理,其最大的特点就是部署结构简单。
- 而分布式计算主要研究如何应用分布式系统进行计算,即把一组计算机通过网络相互连接组成分散系统,然后将需要处理的数据分散成多个部分,交由分散在系统内的计算机组同时计算再将结果最终合并得到最终结果。
传统的集中式处理不仅会导致成本攀升,也存在着较大的单点故障风险。为了规避风险、降低成本,互联网公司把研究方向转向了分布式计算。
分布式计算是把 一个需要非常巨大的计算能力才能解决的问题 分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。
1、把输入数据切分成多份
把数据分成随机很多份,每份尽量平均且个数不会超过单个计算机的处理上限。由一个专门的计算机负责切分
2、把每条输入数据做映射变换
多台计算机合作,为了保证能够准确高效完成任务,必定需要进行角色分工。
可以把负责数据切分的计算机理解为指挥官;负责执行具体运算任务的则是计算兵,同时根据承担任务的不同分为变计算兵和合计算兵,两者的比例不固定,可根据数据多少和运算效率进行调整。
开始执行任务时,每一个变计算兵都要对自己分得的数据按照相同的规则做变换,使得后续的步骤中可以对变换后的结果做处理。这种变换规则要根据具体问题来制定,严格的流水化操作,会让整体的效率更高。
3、把变换后的数据按照一定规则分组
变换的运算完成之后,每个变计算兵要将各自的变种数据按照一定规则分成多个小份,每个小份要最终被一个指定的合计算兵进行结果合并统计。
这个过程就是变计算兵将变换后的数据按照规则分组并分配给指定的合计算兵的过程。
4、将变换后的数据进行统计合并
合计算兵将手中的变种数据按照相同的计算规则依次进行合并,计算规则也需要根据具体问题来制定,统计出最终的结果。
然后所有的合计算兵把自己的计算结果上交给指挥官,指挥官汇总后公布最终统计的结果。
分布式处理技术在逻辑上并不复杂,但在具体的实现过程中会有很多复杂的过程,譬如指挥官如何协调调度所有的运算兵,运算兵之间如何通信等等。
并行计算和分布式计算既有区别也有联系。
具体区别和联系如下表所示:
可以非常粗略的理解为:
- 并行计算:在同一个计算机的不同处理器上解决大任务拆出来的小任务
- 分布式计算: 在不同计算机上解决大任务拆出来的小任务
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务