📄 mpi325.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.5 返回状态</FONT></TD>
<TD align=right><A HREF="mpi324.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi324.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi331.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi331.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>如果接收操作中使用任意值, 那么可以不知道一个被接收消息的source 或tag。这个信息被MPI_RECV的status(状态)返回。status的类型是MPI定义的。状态变量须由用户显示分配,
即, 他们不是系统对象。 </P>
<P>在C语言中, status是一个结构, 其包含两个域, 名字为 MPI_SOURCE和MPI_TAG,
该结构可以包含附加域。所以,status.MPI_SOURCE 和status.MPI_TAG分别包含被接收消息的源和目的。
</P>
<P>Fortran中,status是一个MPI_STATUS_SIZE大小的INTEGER型数组。两个常量MPI_SOURCE和MPI_TAG是存储源和标识域的下标号。所以,status(MPI_SOURCE)和status(MPI_TAG)分别包含被接收消息的源和标识。</P>
<P>这个状态参数也返回关于被接收消息的长度信息。但是,这个信息不能作为状态变量的一个域被直接得到,要求对MPI_GET_COUNT的调用“解码”这个信息。</P>
<P>MPI_GET_COUNT(status,datatype,count) </P>
<P>IN status 接收操作的返回状态</P>
<P>(Status) IN datatype 每个接收缓存元素的数据类型</P>
<P>(handle) OUT count 被接收元素的个数(integer)</P>
<P>int MPI_Get_count(MPI_Status status, MPI_Datatype datatype, int *count)
</P>
<P>MPI_GET_COUNT(STATUS, DATATYPE, COUNT, IERROR) </P>
<P>INTEGER STATUS(MPI_STATUS_SIZE), DATATYPE, COUNT, IERROR</P>
<P>返回被接收元素的个数。( 再一次注意,我们以元素而不是字节来计数)这个datatype
参数应与设置 status 变量的接收调用提供的参数匹配。( 我们在后面<A HREF="mpi312.htm#3.12.5" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi312.htm#3.12.5">3.12.5节</A>可以看到,
在某些情况下, MPI_GET_COUNT可以返回值MPI_UNDEFINED。)</P>
<UL>
<P><I>基本原理.</I> 某些消息传送库使用INOUT型的count, tag, 和source参数,
用他 们指定消息的选择标准, 并返回被接收消息的实际信封值。一个独立的状态参数阻止用INOUT型参数(
例如, 在一个发送操作中, 使用MPI_ANY_TAG常量作为 标识)经常发生的错误。一些库使用隐含指“最后接收的消息”的调用,这不是线索安全的。
</P>
<P>为提高性能,把datatype参数传送给MPI_GET_COUNT。一个没有其包含元素个数的消息可能被接收,这个个数值经常是不必须的。在一个MPI_PROBE调用之
后, 这也允许使用同一函数(<I>基本原理结束</I>)。 </P>
</UL>
<P>所有的发送和接收操作都以这节描述的阻塞MPI_SEND和MPI_RECV操作同样的方式使用buf,
count, datatype, source, dest, tag, comm和status参数。</P>
<P>
<HR WIDTH="100%"></P>
<TABLE WIDTH="100%" >
<TR>
<TD align=left>Copyright: NPACT <BR>
</TD>
<TD align=right><A HREF="mpi324.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi324.htm"><IMG SRC="backward.gif" tppabs="http://arch.cs.pku.edu.cn/image/backward.gif" ALT="BACKWARD" HEIGHT=32 WIDTH=32></A><A HREF="mpi331.htm" tppabs="http://arch.cs.pku.edu.cn/parallelprogramming/mpispec/mpi331.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 + -