分布式系统中的所有计算机都通过通信网络相互连接。通信网络分为大规模(Wide Area Networks,WANs)和本地(Local Area Networks,LANs)。
大型
广域网网络由连接在线路之间的通信计算机组成,它们是通信线路(电话无线电线路、卫星信道、光纤)并提供消息传输。当下一条消息从一台计算机传输到中间缓冲时,通常使用存储转发技术。
分组交换或线路交换。 在两个设备之间的整个通信会话期间,
交换线路(电话交谈)需要冗余线路。
数据包交换基于在源点将消息拆分为多个部分(数据包),将数据包发送到目标地址,并在目标地址从数据包中组装消息。线路使用效率更高,可以更快地传输消息,但需要进行拆分和重组消息的工作,并且可能存在延迟(这种方法不适合传输语音或音乐)。
ISO OSI(国际标准组织的开放系统互连参考模型)将通信协议组织成七层,并规定了每一层的功能。
本地网络。
局域网特点:
分层 ISO OSI 模型的固有开销是 LAN 使用更简单协议的原因。
客户端-服务器
如果预计服务器的响应很快就会出现,则可以避免确认服务器已收到来自客户端的请求消息。
远程过程
调用 发送、接收 - I/O 方法 在集中式计算机中使用的一种更自然的方法是过程调用。
Birrell 和 Nelson (1984)(独立和之前 - Ilyushin A.I., 1978)建议允许调用程序在另一台计算机上。
具有分布式内存的 MPP 可以被认为是局域网的一个特例。晶片机阵列,其中每个晶片机可以同时与 8 个通道与 4 个邻居并行计算,是一个很好的例子,将制定各种检查问题。晶片机矩阵的两个节点之间的消息传输时间(硬件特性 - 传输开始时间 Ts,一个字节信息传输到相邻节点的时间Tb,处理器操作,包括从内存读取和写入内存被认为是无限的快速地)。在时间Ts+Tb晶片机可以向它的四个邻居发送 1 个字节的信息,并从它们那里接收 4 个字节的信息(每个都一个字节)。流水线和并行使用多条路线。
应用进程之间的消息交换
SEND , RECEIVE (destination/sender, [tag], memory address, length)
寻址- 物理/逻辑处理器编号、动态创建进程的唯一标识符、名称服务(名称服务器或广播)。通常,向相邻计算机的传输需要三个副本——从发送进程的内存到其计算机上的 OS 缓冲区,在 OS 缓冲区之间传输,复制到接收进程的内存。
阻塞发送操作(直到数据内存被释放或直到实际传输完成)和非阻塞。
缓冲和非缓冲(在没有接收的情况下会合或丢失信息)。
可靠和不可靠。
(1) 目标:
(2) MPI 包括什么?
(3) MPI 中不包括什么?
(4)一些概念。
通信操作可以是:
如果执行不需要通信,则 操作称为本地操作;非本地,如果其实施可能需要通信; 集体,如果小组的所有过程都应该参与其实施。
(5) 群体、情境、传播者。
组是进程(即进程)标识符的有序(从 0 到组等级)集。组用于在发送消息时指示收件人(目标进程由其在组中的编号指定),确定集体操作的执行者。它们是功能并行化的强大工具——它们允许您将一组进程分成几个子组,每个子组必须执行自己的并行过程。这显着简化了使用并行程序时的寻址问题。
上下文是消息的范围,类似于嵌套过程调用中的变量范围。在特定上下文中发送的消息只能在同一上下文中接收。上下文也是支持并行程序的重要手段。
Communicators - 允许您限制特定进程组内消息的范围(生命、定义),即 可以被视为一对 - 组和上下文。此外,它们还用于优化目的,存储为此所需的附加对象。有预定义的通信器(更准确地说,是在 MPI 系统初始化期间创建的通信器):
(6) 对组的操作(本地,无消息)。
为了支持用户服务器,有一个根据组的每个进程指定的键将组拆分为子组的集体操作。为了支持绑定到服务器,有一些工具可以使用服务器和客户端都知道的某个名称来构建通信器。
(7)点通讯。
基本操作——发送、接收 操作可以是阻塞的和非阻塞的。
发送 操作指定:
(最后 3 个参数类似于邮件信封)
接收 操作指定:
在异构环境中工作时提供数据转换。
有四种通信模式——标准、 缓冲、 同步和待机。
在标准模式下,发送和接收操作的 顺序是 任意的,当消息从内存中删除并且已经可以被进程使用时,发送操作就完成了。在这种情况下,无论接收是否存在,都可以执行操作,或者需要存在(MPI 的实现问题)。因此,该操作被认为是非本地的。
在缓冲模式下,发送和接收操作的 顺序是 任意的,当消息从内存中取出并放入缓冲区时,发送操作完成。如果缓冲区中没有空间 - 程序错误(但可以定义自己的缓冲区)。操作是本地的。
在同步模式下, 发布操作的顺序是任意的,但是发送操作只有在发布和接收操作开始之后才完成。该操作是非本地的。在就绪模式下,只有在相应的接收操作发出后才能发出 发送操作,否则程序被认为是错误的,其工作结果是不确定的。操作是本地的。
在所有四种模式中, 接收操作 在消息被接收到用户指定的接收缓冲区后终止。
非阻塞操作 在完成之前不会暂停进程,而是返回对允许您查询操作状态或等待操作完成的通信对象的引用。有一些操作可以检查进程的传入消息,而不会将它们读入缓冲区(例如,确定消息的长度,然后为其请求内存)。可以中止发出的非阻塞操作,因此提供了检查操作是否正常完成的设施。有一个复合的发送-接收操作,避免了在交换过程中发出单个操作的顺序的困难。针对交换相同类型和长度数据的特殊情况,提出了一种特殊的消息操作(send-receive-replace) 使用相同的缓冲区来发送和接收。
(8) 集体沟通。
为确保集体沟通,引入了以下功能:
著名的 PVM 系统 [5] 被创建用于将几个联网的工作站组合成一个虚拟并行计算机。该系统是 UNIX 操作系统的上层结构,目前用于各种硬件平台,包括具有大规模并行性的计算机。
用户任务是一组子任务,它们在分布式系统的指定处理器上动态创建,并通过发送和接收消息(以及通过信号机制)相互交互。
优点 - 简单,存在从 OS UNIX 继承的进程和信号设备,以及动态将新创建的进程添加到组的可能性。
缺点 - 低性能和功能限制(例如,只有一种消息传输模式 - 带有缓冲)。
在以下领域开发 MPI: