⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpi51.htm

📁 该文件为mpich2的开发文档
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
   <TITLE> ICPSEP Content
</TITLE>
   <META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (X11; I; SunOS 5.4 sun4m) [Netscape]">
</HEAD>
<BODY BGCOLOR="#F0F8FF">

<P><FONT SIZE=+2>第五章 组,上下文及通信子</FONT></P>

<TABLE WIDTH="100%" >
<TR>
<TD align=left><FONT SIZE=+2>5.1 简介 </FONT></TD>

<TD align=right><A HREF="mpi412.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi412.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A>
<A HREF="mpi52.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi52.htm"><IMG SRC="forward.gif" tppabs="http://arch.cs.pku.edu.cn/image/forward.gif" ALT="FORWARD" HEIGHT=32 WIDTH=32></A>
</TD>
</TR>
</TABLE>

<P>
<HR WIDTH="100%"></P>

<P>本章介绍MPI中支持并行库开发一些特征。我们可利用并行库将关键算法并行实现时所遇到的一些固有的令人烦恼的复杂性封装起来。它们有助于保证这种过程的一致正确性
并能提供比MPI本身更高层次的便利。另外,库还防止程序员重复定义一致性数据结构,
数据布局,及用于实现关键算法的方法等工作(诸如矩阵操作〕。因为最好的库往往是并行系统的一些变种(不同的数据布局,依据系统或问题的规模制定不同的策略,浮点类型〕,
这一点也需对用户隐藏。 读者在使用本章描述的MPI特征写库时可参照[26]和[3]获取进一步信息。
</P>

<P><A NAME="5.1.1"></A><FONT SIZE=+1>5.1.1 支持库的特征</FONT></P>

<P>支持创建稳定的并行库所需的关键特征如下所示:</P>

<UL>
<LI>安全的通信空间,能够保证库在通信时不会跟那些与库无关的通信发生冲突。
</LI>

<LI>集合操作的组的范围,允许库避免与无关进程的不必要同步(潜在地运行无关
代码〕</LI>

<LI>抽象的进程命名,允许库以适合于它们自己的数据结构和算法描述通信 </LI>

<LI>用附加的用户定义属性“装饰”一系列通信进程的能力,诸如额外的集合操作。
这一机制应该为用户或库的书写者提供一种有效方式,使其能够扩展消息传递概念。
</LI>
</UL>

<P>另外,需要一个统一的机制或对象来方便地指示通信上下文,通信进程的组,嵌入抽象进程命名,存储装饰。</P>

<P><A NAME="5.1.2"></A><FONT SIZE=+1>5.1.2 MPI对库的支持 </FONT></P>

<P>MPI所提供的专用于支持稳定库的相应概念如下所示:</P>

<UL>
<LI>通信上下文 </LI>

<LI>进程组 </LI>

<LI>虚拟拓扑 </LI>

<LI>属性缓冲区 </LI>

<LI>通信子 </LI>
</UL>

<P><FONT SIZE=+1>通信子</FONT> (见[16,24,27])将所有这些观点都封装起来以便为MPI中的所有操作提供适当的机会。通信子可分为两种:组内通信子~用于一组进程内的操作;组间通信子~用于
两组进程间的点对点通信。 </P>

<P><FONT SIZE=+1>缓冲区</FONT> 通信子(见下面)提供了一个缓冲机制允许人们将与MPI固有特征等价的新的属性联系到通信子上.高级用户可利用这一机制进一步修饰通信子并通过MPI实现一些通信子函数。例如,第六章描述的虚拟拓扑函数就可能以这种方式得到支持.
</P>

<P><FONT SIZE=+1>组</FONT> 组定义了一个进程的有序集合,每一进程具有一个序列号,而且为组间进程通信定义低级名字也是由组完成的(序列号用于发送和接收)。这样,组在点对点通信中为进程名字定义了一个范围.另外,组还定义了集合操作的范围.在MPI中可从通信子中对组进行分别维护,但是只有通信子才能用于通信操作.
</P>

<P><FONT SIZE=+1>组内通信子</FONT> MPI中消息传送的最普通方式就是利用组内通信子.组内通信子包含以下几方面:一个组的实例,点对点和集合通信的通信上下文,以及包括虚拟拓扑和其它属
性的能力.这些特征表现为如下形式: </P>

<UL>
<LI><FONT SIZE=+1>上下文</FONT> 为MPI提供了拥有分离安全的消息传送空间的能力。一个上下文类似于一个用于区分消息的附加标志。由系统管理这个可区分的进程。不同库(或不同库调用)对分离通信上下文的使用将库执行时的内部通信与外部通信隔离开。这样即使存在基于其它通信子的挂起通信也允许调用库,而且避免了进入或退出库代码时的同步需求。挂起的点对点通信也能保证不与同一通信子内的集合通信发生干扰。</LI>

<LI><FONT SIZE=+1>组</FONT> 定义了在通信子进行通信期间的参与者。 </LI>

<LI><FONT SIZE=+1>虚拟拓扑 </FONT>定义了一个组内与某一个拓扑间的特殊映射。在<A HREF="mpi61.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi61.htm">第六章</A>为通信子定义了专门的构造子以提供这一特征。本章所描述的组内通信子不具有拓扑。</LI>

<LI><FONT SIZE=+1>属性</FONT> 定义了一个局部信息,该信息是用户或库为后面的引用而加给一个通信子的。
</LI>
</UL>

<P>对用户的建议:</P>

<P>当前许多通信库的惯例是这样的:当并行程序被初始化时,有一个唯一的预定义的空间来包含可获得的所有进程;这些进程被赋予连续的序列号。点对点通信中的成员通过它们的等级来相互区分;集合通信(例如广播〕
总是涉及所有进程。在MPI中通过使用预定义的通信子MPI_COMM_WORLD来遵循这一惯例。那些对这一惯例感到满意的用户可以将MPI_COMM_WORLD插入到任何一个要求通信子参数的地方,而且因此不必再关心本章的剩余部分。
</P>

<P><FONT SIZE=+1>组间通信子</FONT> 迄今所讨论的都是组内通信:在一个组的内部进行通信。MPI也支持组间通信:在两个非重迭的组间进行通信。当一个应用是通过构造几个并行模块建立时,很方便地允许一个模块与第二个模块中的另一个使用局部序列号的进程进行通信。这一点在客户机与服务器模式中尤其方便,这种模式下的客户机与服务器是并行的。组间通信的支持也为MPI向动态模型的扩展了提供一种机制,在动态模型下不是所有的进程都在初始化时预分配的。在这种条件下,支持跨越空间的通信是很必要的。组间通信由名为组间通信子的对象支
持。这些对象用两组共享的通信上下文将两个组绑定在一起。对于组间通信,这些特征表现为如下形式:</P>

<UL>
<LI><FONT SIZE=+1>上下文</FONT> 提供了在两组间建立一个分离安全的消息传递空间的能力。本地组的一个发送总是远程组的一个接收,反过来也是这样。系统管理这个可区分的进程。不同库(或不同库调用〕对分离通信上下文的使用将库执行时的内部通信与外部通信隔离开。这样即使存在基于另一个通信子的挂起通信也允许调用库,而且避免了进入或退出库代码时的同步需求。基于组间通信子没有一般目的的集合通信,因此上下文进用于隔离点对点通信。</LI>

<LI>本地和远程组为组间通信子指明了接受方和目的方。</LI>

<LI>虚拟拓扑在组间通信子中未定义。</LI>

<LI>同上面一样,属性缓冲区定义了用户和库为后面引用而加给通信子本地信息。</LI>
</UL>

<P>MPI提供了创建和维护组间通信子的机制。它们以一种与组内通信子相关的方式被点
对点通信所使用。那些在他们的应用中不需要组间通信的用户可以很安全地忽略这一扩展。那些需要通过组间通信子进行集合操作的用户必须在MPI顶部指明它。那些要求在重迭组间进行组间通信的用户也必须在MPI顶部指明这一能力。

<HR WIDTH="100%"></P>

<TABLE WIDTH="100%" >
<TR>
<TD align=left>Copyright: NPACT </TD>

<TD align=right><A HREF="mpi310.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi310.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A>
<A HREF="mpi52.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi52.htm"><IMG SRC="forward.gif" tppabs="http://arch.cs.pku.edu.cn/image/forward.gif" ALT="FORWARD" HEIGHT=32 WIDTH=32></A>
</TD>
</TR>
</TABLE>

</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -