📄 mpi323.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">
<TABLE WIDTH="100%" >
<TR>
<TD align=left><FONT SIZE=+2>3.2.3 消息信封</FONT></TD>
<TD align=right><A HREF="mpi322.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi322.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi324.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi324.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>除了数据部分, 消息带有用于识别消息并选择接收他们的信息。这个信息是由确定的域数组成的,我们称信封。这些域有
: </P>
<UL>
<UL>
<UL>
<P>source( 源 ) </P>
</UL>
</UL>
</UL>
<UL>
<UL>
<UL>
<P>destination( 目的 )</P>
<P>tag( 标识 )</P>
<P>communicator( 通信子 )</P>
</UL>
</UL>
</UL>
<P>消息的source隐含地由消息发送者的标识来决定。其他域是由发送操作的参数决定。
</P>
<P>消息的destination是由dest参数指定。 </P>
<P>整型值的消息tag是由tag参数指定。这个整型能被程序用于识别不同的消息。有效标识值的范围是0,...,UB,
这儿UB的值依赖于实现。在第七章描述,通过查寻属性MPI_TAG_UB的值, 可得到UB。MPI要求UB不小于32767。
comm参数指定用于发送操作的communicator。在第五章解释communicator; 下面是其使用的简介。
</P>
<P>一个通信子( communicator )给一个通信操作指定上下文。每个通信上下文提供一个单独的“通信全域”:消息总是在其被发送的上下文内被接收,不同的上下文发送的消息互不干涉。
</P>
<P>通信子也指定共享这个通信上下文的进程组。这个进程组被编号,并且进程是由这个组中的进程号标识。所以,dest的有效值范围是0,...,n-1,
其中n是该组中的进程数。( 如果这个进程组是一个通信子间的, 那么destination是由远程组中他们的进程号所标识。请看第五章)。
</P>
<P>一个预定义的通信子MPI_COMM_WORLD是由MPI提供。MPI初始化后, 它允许和可存取的全部进程通信,
进程是由他们在MPI_COMM_WORLD组中的进程号所标识。 </P>
<UL>
<P><I>给用户的建议</I>. 喜欢进程名字空间的用户, 和由大多数已存在的通信库提供的一个简单通信上下文,
仅需要使用预定义的变量MPI_COMM_WORLD作为comm参数。这将允许初始化时和所有可能得到的进程通信。
用户可以定义新的通信子,<A HREF="javascript:if(confirm('http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi51.html \n\nThis file was not retrieved by Teleport Pro, because the server reports that this file cannot be found. \n\nDo you want to open it from the server?'))window.location='http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi51.html'" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi51.html">第五章</A>解释这个。通信子为库和模式提供一种重要封装机制。他们允许模式有其自己的独立的通信域,和他们自己的进程计数方案。(<I>给用户的建议结束</I>)。
</P>
<P><I>给实现者的建议</I>. 消息信封将正常地由一个定长的消息头编码。但实际的编码是依赖于实现的。有些信息(
例如, source或destination )可以是隐式的, 不必由消息显式携带。进程也可以由相对的进程号或绝对的进程号标识,等等。(<I>给实现者的建议结束</I>)。</P>
</UL>
<P>
<HR WIDTH="100%"></P>
<TABLE WIDTH="100%" >
<TR>
<TD align=left>Copyright: NPACT <BR>
</TD>
<TD align=right><A HREF="mpi322.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi322.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi324.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi324.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 + -