📜  并行算法-简介

📅  最后修改于: 2020-12-13 15:12:17             🧑  作者: Mango


算法是一系列步骤,这些步骤从用户那里获取输入,并经过一些计算后产生输出。并行算法是一种算法,可以在不同的处理设备上同时执行几条指令,然后组合所有单独的输出以产生最终结果。

并发处理

计算机的便捷可用性以及Internet的发展改变了我们存储和处理数据的方式。我们生活在一个时代和时代,那里有大量可用的数据。每天,我们都会快速处理大量需要复杂计算的数据。有时,我们需要从同时发生的相似或相互关联的事件中获取数据。在这里,我们需要并发处理,该处理可以划分一个复杂的任务并将其处理到多个系统中,以快速生成输出。

在任务涉及处理大量复杂数据的情况下,并发处理至关重要。示例包括-访问大型数据库,飞机测试,天文计算,原子和核物理,生物医学分析,经济计划,图像处理,机器人技术,天气预报,基于Web的服务等。

什么是并行性?

并行是同时处理几组指令的过程。它减少了总的计算时间。并行性可以通过使用并行计算机(即具有许多处理器的计算机)来实现。并行计算机需要支持多任务的并行算法,编程语言,编译器和操作系统。

在本教程中,我们将仅讨论并行算法。在继续之前,让我们首先讨论算法及其类型。

什么是算法?

算法是用于解决问题的一系列指令。在设计算法时,我们应考虑将在其上执行算法的计算机的体系结构。根据体系结构,有两种类型的计算机-

  • 顺序计算机
  • 并行计算机

根据计算机的体系结构,我们有两种算法-

  • 顺序算法-一种算法,其中一些连续的指令步骤按时间顺序执行以解决问题。

  • 并行算法-问题分为子问题,并并行执行以获取单个输出。稍后,将这些单独的输出组合在一起以获得最终所需的输出。

将大问题划分为子问题并不容易。子问题之间可能具有数据依赖性。因此,处理器必须相互通信以解决该问题。

已经发现,处理器彼此通信所需的时间大于实际的处理时间。因此,在设计并行算法时,应考虑适当的CPU使用率以获得高效的算法。

为了正确地设计算法,我们必须对并行计算机中的基本计算模型有一个清晰的认识。

计算模型

顺序计算机和并行计算机都在一组称为算法的指令流上运行。这些指令集(算法)指导计算机有关每个步骤中必须执行的操作。

根据指令流和数据流,计算机可以分为四类-

  • 单指令流,单数据流(SISD)计算机
  • 单指令流,多数据流(SIMD)计算机
  • 多指令流,单数据流(MISD)计算机
  • 多指令流,多数据流(MIMD)计算机

SISD计算机

SISD计算机包含一个控制单元,一个处理单元一个存储单元

SSID电脑

在这种类型的计算机中,处理器从控制单元接收单个指令流,并且对来自存储单元的单个数据流进行操作。在计算期间,处理器在每一步骤中从控制单元接收一个指令,并对从存储单元接收的单个数据进行操作。

SIMD计算机

SIMD计算机包含一个控制单元,多个处理单元以及共享内存或互连网络

SIMD计算机

在此,一个控制单元将指令发送到所有处理单元。在计算期间,在每个步骤中,所有处理器都会从控制单元接收一组指令,并从存储单元对不同的数据集进行操作。

每个处理单元都有自己的本地存储单元,用于存储数据和指令。在SIMD计算机中,处理器之间需要进行通信。这可以通过共享内存互连网络来完成

当某些处理器执行一组指令时,其余处理器则等待下一组指令。来自控制单元的指令决定哪个处理器将处于活动状态(执行指令)或不活动(等待下一条指令)。

MISD电脑

顾名思义,MISD计算机包含多个控制单元,多个处理单元一个公用存储单元

MISD电脑

在这里,每个处理器都有自己的控制单元,并且它们共享一个公共的存储单元。所有处理器都从其各自的控制单元分别获取指令,并且根据从各自控制单元接收到的指令,它们对单个数据流进行操作。该处理器同时运行。

MIMD电脑

MIMD计算机具有多个控制单元,多个处理单元以及共享的内存互连网络

MIMD电脑

在这里,每个处理器都有其自己的控制单元,本地存储单元以及算术和逻辑单元。它们从各自的控制单元接收不同的指令集,并对不同的数据集进行操作。

注意

  • 共享公用内存的MIMD计算机称为多处理器,而使用互连网络的MIMD计算机称为多计算机

  • 根据处理器的物理距离,多计算机有两种类型-

    • 多计算机-所有处理器都非常靠近时(例如,在同一房间内)。

    • 分布式系统-当所有处理器彼此相距较远时(例如,在不同的城市)