📅  最后修改于: 2020-12-13 15:12:17             🧑  作者: Mango
算法是一系列步骤,这些步骤从用户那里获取输入,并经过一些计算后产生输出。并行算法是一种算法,可以在不同的处理设备上同时执行几条指令,然后组合所有单独的输出以产生最终结果。
计算机的便捷可用性以及Internet的发展改变了我们存储和处理数据的方式。我们生活在一个时代和时代,那里有大量可用的数据。每天,我们都会快速处理大量需要复杂计算的数据。有时,我们需要从同时发生的相似或相互关联的事件中获取数据。在这里,我们需要并发处理,该处理可以划分一个复杂的任务并将其处理到多个系统中,以快速生成输出。
在任务涉及处理大量复杂数据的情况下,并发处理至关重要。示例包括-访问大型数据库,飞机测试,天文计算,原子和核物理,生物医学分析,经济计划,图像处理,机器人技术,天气预报,基于Web的服务等。
并行是同时处理几组指令的过程。它减少了总的计算时间。并行性可以通过使用并行计算机(即具有许多处理器的计算机)来实现。并行计算机需要支持多任务的并行算法,编程语言,编译器和操作系统。
在本教程中,我们将仅讨论并行算法。在继续之前,让我们首先讨论算法及其类型。
算法是用于解决问题的一系列指令。在设计算法时,我们应考虑将在其上执行算法的计算机的体系结构。根据体系结构,有两种类型的计算机-
根据计算机的体系结构,我们有两种算法-
顺序算法-一种算法,其中一些连续的指令步骤按时间顺序执行以解决问题。
并行算法-问题分为子问题,并并行执行以获取单个输出。稍后,将这些单独的输出组合在一起以获得最终所需的输出。
将大问题划分为子问题并不容易。子问题之间可能具有数据依赖性。因此,处理器必须相互通信以解决该问题。
已经发现,处理器彼此通信所需的时间大于实际的处理时间。因此,在设计并行算法时,应考虑适当的CPU使用率以获得高效的算法。
为了正确地设计算法,我们必须对并行计算机中的基本计算模型有一个清晰的认识。
顺序计算机和并行计算机都在一组称为算法的指令流上运行。这些指令集(算法)指导计算机有关每个步骤中必须执行的操作。
根据指令流和数据流,计算机可以分为四类-
SISD计算机包含一个控制单元,一个处理单元和一个存储单元。
在这种类型的计算机中,处理器从控制单元接收单个指令流,并且对来自存储单元的单个数据流进行操作。在计算期间,处理器在每一步骤中从控制单元接收一个指令,并对从存储单元接收的单个数据进行操作。
SIMD计算机包含一个控制单元,多个处理单元以及共享内存或互连网络。
在此,一个控制单元将指令发送到所有处理单元。在计算期间,在每个步骤中,所有处理器都会从控制单元接收一组指令,并从存储单元对不同的数据集进行操作。
每个处理单元都有自己的本地存储单元,用于存储数据和指令。在SIMD计算机中,处理器之间需要进行通信。这可以通过共享内存或互连网络来完成。
当某些处理器执行一组指令时,其余处理器则等待下一组指令。来自控制单元的指令决定哪个处理器将处于活动状态(执行指令)或不活动(等待下一条指令)。
顾名思义,MISD计算机包含多个控制单元,多个处理单元和一个公用存储单元。
在这里,每个处理器都有自己的控制单元,并且它们共享一个公共的存储单元。所有处理器都从其各自的控制单元分别获取指令,并且根据从各自控制单元接收到的指令,它们对单个数据流进行操作。该处理器同时运行。
MIMD计算机具有多个控制单元,多个处理单元以及共享的内存或互连网络。
在这里,每个处理器都有其自己的控制单元,本地存储单元以及算术和逻辑单元。它们从各自的控制单元接收不同的指令集,并对不同的数据集进行操作。
共享公用内存的MIMD计算机称为多处理器,而使用互连网络的MIMD计算机称为多计算机。
根据处理器的物理距离,多计算机有两种类型-
多计算机-所有处理器都非常靠近时(例如,在同一房间内)。
分布式系统-当所有处理器彼此相距较远时(例如,在不同的城市)