Files
2017-10-26 19:57:24 +02:00

259 lines
14 KiB
HTML
Executable File

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation): Send-Receive</title>
<link href="../../doxygen.css" rel="stylesheet" type="text/css">
<link href="../../tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="../../main.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="../../modules.html"><span>Modules</span></a></li>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Send-Receive<br>
<small>
[<a class="el" href="../../d0/d64/group__p2p__main.html">Point-to-Point Communication</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Send-Receive:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d2/ded/group__p2p__sendrecv.png" border="0" alt="" usemap="#d1/d97/d2_2ded_2group____p2p____sendrecv_map">
<map name="d1/d97/d2_2ded_2group____p2p____sendrecv_map">
<area shape="rect" href="../../d0/d64/group__p2p__main.html" title="Sending and receiving of messages by processes is the basic MPI communication mechanism..." alt="" coords="5,5,200,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The send-receive operations combine in one call the sending of a message to one destination and the receiving of another message, from another process.
<p>
A message sent by a send-receive operation can be received by a regular receive operation or probed by a probe operation; a send-receive operation can receive a message sent by a regular send operation.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ded/group__p2p__sendrecv.html#g70885aadac98497e169267e74abee516">MOC_Sendrecv</a> (void *sendbuf, int sendcount, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> sendtype, int dest, int sendtag, void *recvbuf, int recvcount, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> recvtype, int source, int recvtag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, <a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Execute a blocking send and receive operation. <a href="#g70885aadac98497e169267e74abee516"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ded/group__p2p__sendrecv.html#g1e5b32eaefd61f863f89778dcbbb70a2">MOC_Sendrecv_replace</a> (void *buf, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int dest, int sendtag, int source, int recvtag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, <a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Execute a blocking send and receive. <a href="#g1e5b32eaefd61f863f89778dcbbb70a2"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g70885aadac98497e169267e74abee516"></a><!-- doxytag: member="moc.h::MOC_Sendrecv" ref="g70885aadac98497e169267e74abee516" args="(void *sendbuf, int sendcount, MOC_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MOC_Datatype recvtype, int source, int recvtag, MOC_Comm comm, MOC_Status *status)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Sendrecv </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>sendbuf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>sendcount</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>&nbsp;</td>
<td class="paramname"> <em>sendtype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>sendtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>recvbuf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>recvcount</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>&nbsp;</td>
<td class="paramname"> <em>recvtype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>recvtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a>&nbsp;</td>
<td class="paramname"> <em>comm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *&nbsp;</td>
<td class="paramname"> <em>status</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Execute a blocking send and receive operation.
<p>
Both send and receive use the same communicator, but possibly different tags. The send buffer and receive buffers may be disjoint, and may have different lengths and datatypes.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>sendbuf</em>&nbsp;</td><td><b>in</b> Pointer to buffer where data is stored </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendcount</em>&nbsp;</td><td><b>in</b> Number of elements to be send (not equal to actual byte-value) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendtype</em>&nbsp;</td><td><b>in</b> Type of elements to be send </td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> Rank of receiving process </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendtag</em>&nbsp;</td><td><b>in</b> Tag of message to be send</td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvbuf</em>&nbsp;</td><td><b>inout</b> Buffer into which data should be stored </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvcount</em>&nbsp;</td><td><b>in</b> Number of elements in receive buffer (not equal to actual byte-value) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvtype</em>&nbsp;</td><td><b>in</b> Datatype of each receive buffer element </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> Rank of source </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvtag</em>&nbsp;</td><td><b>in</b> Tag of message to be received</td></tr>
<tr><td valign="top"></td><td valign="top"><em>comm</em>&nbsp;</td><td><b>in</b> Communicator of message </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</td><td><b>inout</b> Object holding status-information (has to be allocated by user)</td></tr>
</table>
</dl>
<dl compact><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>MOC_SUCCESS</em>&nbsp;</td><td>No error; MPI routine completed successfully. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>error-code </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g1e5b32eaefd61f863f89778dcbbb70a2"></a><!-- doxytag: member="moc.h::MOC_Sendrecv_replace" ref="g1e5b32eaefd61f863f89778dcbbb70a2" args="(void *buf, int count, MOC_Datatype datatype, int dest, int sendtag, int source, int recvtag, MOC_Comm comm, MOC_Status *status)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Sendrecv_replace </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>&nbsp;</td>
<td class="paramname"> <em>datatype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>sendtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>recvtag</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a>&nbsp;</td>
<td class="paramname"> <em>comm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *&nbsp;</td>
<td class="paramname"> <em>status</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Execute a blocking send and receive.
<p>
The same buffer is used both for the send and for the receive, so that the message sent is replaced by the message received.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td><b>inout</b> Pointer to buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> Number of elements (not equal to actual byte-value) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>datatype</em>&nbsp;</td><td><b>in</b> Type of elements</td></tr>
<tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td><b>in</b> Rank of receiving process </td></tr>
<tr><td valign="top"></td><td valign="top"><em>sendtag</em>&nbsp;</td><td><b>in</b> Tag of message to be send</td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> Rank of source </td></tr>
<tr><td valign="top"></td><td valign="top"><em>recvtag</em>&nbsp;</td><td><b>in</b> Tag of message to be received</td></tr>
<tr><td valign="top"></td><td valign="top"><em>comm</em>&nbsp;</td><td><b>in</b> Communicator of message </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</td><td><b>inout</b> Object holding status-information (has to be allocated by user)</td></tr>
</table>
</dl>
<dl compact><dt><b>Return values:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>MOC_SUCCESS</em>&nbsp;</td><td>No error; MPI routine completed successfully. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>error-code </td></tr>
</table>
</dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:21 2009 for MPI On Cell (Documentation) by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>