466 lines
35 KiB
HTML
Executable File
466 lines
35 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): Point-to-Point Communication</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 Page</span></a></li>
|
|
<li><a href="../../modules.html"><span>Modules</span></a></li>
|
|
<li><a href="../../annotated.html"><span>Data Structures</span></a></li>
|
|
<li><a href="../../files.html"><span>Files</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="contents">
|
|
<h1>Point-to-Point Communication<br>
|
|
<small>
|
|
[<a class="el" href="../../d3/d9e/group__end__user.html">End-User Documentation</a>]</small>
|
|
</h1>
|
|
<p>
|
|
<div class="dynheader">
|
|
Collaboration diagram for Point-to-Point Communication:</div>
|
|
<div class="dynsection">
|
|
<center><table><tr><td><img src="../../d0/d64/group__p2p__main.png" border="0" alt="" usemap="#da/d52/d0_2d64_2group____p2p____main_map">
|
|
<map name="da/d52/d0_2d64_2group____p2p____main_map">
|
|
<area shape="rect" href="../../d2/ded/group__p2p__sendrecv.html" title="The send-receive operations combine in one call the sending of a message to one destination..." alt="" coords="511,5,609,32"><area shape="rect" href="../../da/df0/group__p2p__status.html" title="Receiving operations return a status-object holding information about the message..." alt="" coords="509,56,611,83"><area shape="rect" href="../../d5/dc2/group__p2p__synch.html" title="Direct blocking sending of messages without any intermediate buffer." alt="" coords="464,107,656,133"><area shape="rect" href="../../dc/d6e/group__p2p__datatype.html" title="Datatypes supported by MOC." alt="" coords="520,157,600,184"><area shape="rect" href="../../de/d84/group__p2p__buffered.html" title="Blocking sending of messages with the use of an intermediate buffer." alt="" coords="479,208,641,235"><area shape="rect" href="../../d7/d62/group__p2p__imm.html" title="Non-blocking sending and receiving messages." alt="" coords="464,259,656,285"><area shape="rect" href="../../d3/d9e/group__end__user.html" title="This section describes the public API provided by the MOC-library." alt="" coords="7,132,172,159"></map></td></tr></table></center>
|
|
</div>
|
|
<hr><a name="_details"></a><h2>Detailed Description</h2>
|
|
Sending and receiving of messages by processes is the basic MPI communication mechanism.
|
|
<p>
|
|
The basic point-to-point communication operations are send and receive.<p>
|
|
<a class="el" href="../../d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c">MOC_Send</a> uses either buffered or synchronous send depending on the message-size (Short messages are transmitted using buffered send and long messages are transmitted using synchronous send).<p>
|
|
<a class="el" href="../../d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832">MOC_Recv</a> receives all messages irrespective wether buffered or synchronous communication is used.<p>
|
|
<dl class="note" compact><dt><b>Note:</b></dt><dd>Because there are separate message-queues for each remote process and no distinct global ordering of messages, there may be some situation where a message from a process may never be received. This may occur when MOC_Recv, MOC_Probe and MOC_IProbe are used with MOC_ANY_SOURCE, because then there is the possibility that new messages are received before a specific message from a process with a higher rank than the other senders. This may also occur with lower possibility when using MOC_ANY_TAG between messages from the same sender but with other tags. </dd></dl>
|
|
|
|
<p>
|
|
<table border="0" cellpadding="0" cellspacing="0">
|
|
<tr><td></td></tr>
|
|
<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/df0/group__p2p__status.html">Return Status</a></td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Receiving operations return a status-object holding information about the message. <br></td></tr>
|
|
|
|
<p>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html">Datatypes</a></td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Datatypes supported by MOC. <br></td></tr>
|
|
|
|
<p>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/dc2/group__p2p__synch.html">Synchronous Communication</a></td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct blocking sending of messages without any intermediate buffer. <br></td></tr>
|
|
|
|
<p>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d84/group__p2p__buffered.html">Buffered Communication</a></td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Blocking sending of messages with the use of an intermediate buffer. <br></td></tr>
|
|
|
|
<p>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ded/group__p2p__sendrecv.html">Send-Receive</a></td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">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. <br></td></tr>
|
|
|
|
<p>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d62/group__p2p__imm.html">Non-Blocking Communication</a></td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Non-blocking sending and receiving messages. <br></td></tr>
|
|
|
|
<p>
|
|
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html#g1efd7c092411ed106006e6a75a1de78b">MOC_SEND_TRESHOLD</a> 4096</td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Indicates, at which message-size <a class="el" href="../../d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c">MOC_Send</a> switches to synchronous send. <a href="#g1efd7c092411ed106006e6a75a1de78b"></a><br></td></tr>
|
|
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c">MOC_Send</a> (void *buf, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int dest, int tag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm)</td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Performs a blocking standard mode send operation. <a href="#g23e0afbe55bc4c86cb738c3361623a4c"></a><br></td></tr>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html#g30c532510cffd36acd1b9b0b3edb3832">MOC_Recv</a> (void *buf, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int source, int tag, <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"> </td><td class="mdescRight">Performs a blocking standard mode receive operation. <a href="#g30c532510cffd36acd1b9b0b3edb3832"></a><br></td></tr>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html#g39ceb4e6f08da2cd3dac3e93bb6e3ee1">MOC_Probe</a> (int source, int tag, <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"> </td><td class="mdescRight">Waits till a message is received and returns information without actually receiving the message. <a href="#g39ceb4e6f08da2cd3dac3e93bb6e3ee1"></a><br></td></tr>
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html#g0bc7e537cd866537357a01a12a115a84">MOC_Iprobe</a> (int source, int tag, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, int *flag, <a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *status)</td></tr>
|
|
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Tests if a message is available and returns information without actually receiving the message. <a href="#g0bc7e537cd866537357a01a12a115a84"></a><br></td></tr>
|
|
</table>
|
|
<hr><h2>Define Documentation</h2>
|
|
<a class="anchor" name="g1efd7c092411ed106006e6a75a1de78b"></a><!-- doxytag: member="moc.h::MOC_SEND_TRESHOLD" ref="g1efd7c092411ed106006e6a75a1de78b" args="" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define MOC_SEND_TRESHOLD 4096 </td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>
|
|
Indicates, at which message-size <a class="el" href="../../d0/d64/group__p2p__main.html#g23e0afbe55bc4c86cb738c3361623a4c">MOC_Send</a> switches to synchronous send.
|
|
<p>
|
|
|
|
<p>Definition at line <a class="el" href="../../d7/de1/moc_8h-source.html#l00374">374</a> of file <a class="el" href="../../d7/de1/moc_8h-source.html">moc.h</a>.</p>
|
|
|
|
<p>Referenced by <a class="el" href="../../d5/d4e/moc__isend_8c-source.html#l00018">MOC_ISend()</a>, and <a class="el" href="../../dd/d4a/moc__send_8c-source.html#l00019">MOC_Send()</a>.</p>
|
|
|
|
</div>
|
|
</div><p>
|
|
<hr><h2>Function Documentation</h2>
|
|
<a class="anchor" name="g0bc7e537cd866537357a01a12a115a84"></a><!-- doxytag: member="moc.h::MOC_Iprobe" ref="g0bc7e537cd866537357a01a12a115a84" args="(int source, int tag, MOC_Comm comm, int *flag, MOC_Status *status)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int MOC_Iprobe </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>tag</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> </td>
|
|
<td class="paramname"> <em>comm</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int * </td>
|
|
<td class="paramname"> <em>flag</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> * </td>
|
|
<td class="paramname"> <em>status</em></td><td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>
|
|
Tests if a message is available and returns information without actually receiving the message.
|
|
<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>source</em> </td><td><b>in</b> source of message </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td><b>in</b> message-tag </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>comm</em> </td><td><b>in</b> communicator </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>flag</em> </td><td><b>out</b> boolean value telling if a message is available </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>status</em> </td><td><b>out</b> status-object holding information about message </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> </td><td>No error; MPI routine completed successfully. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>...</em> </td><td>error-code </td></tr>
|
|
</table>
|
|
</dl>
|
|
|
|
<p>Definition at line <a class="el" href="../../da/d3c/moc__iprobe_8c-source.html#l00005">5</a> of file <a class="el" href="../../da/d3c/moc__iprobe_8c-source.html">moc_iprobe.c</a>.</p>
|
|
|
|
<p>References <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00078">moc_message_envelope_struct::id</a>, <a class="el" href="../../de/dbb/imoc__get__entry_8c-source.html#l00013">IMOC_get_entry()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00230">MOC_Status_struct::message_size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00231">MOC_Status_struct::mid</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00229">MOC_Status_struct::MOC_ERROR</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00227">MOC_Status_struct::MOC_SOURCE</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00228">MOC_Status_struct::MOC_TAG</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00097">moc_message_envelope_struct::size</a>, and <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00079">moc_message_envelope_struct::tag</a>.</p>
|
|
|
|
<p>
|
|
<div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dynsection">
|
|
<p><center><img src="../../d0/d64/group__p2p__main_g0bc7e537cd866537357a01a12a115a84_cgraph.png" border="0" usemap="#d0/d64/group__p2p__main_g0bc7e537cd866537357a01a12a115a84_cgraph_map" alt=""></center>
|
|
<map name="d0/d64/group__p2p__main_g0bc7e537cd866537357a01a12a115a84_cgraph_map">
|
|
<area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8980da77fa506e9a6d503c8c6eba68e2" title="Get the next valid message-envelope from "source" with specified "tag"..." alt="" coords="148,5,263,32"></map>
|
|
</div>
|
|
|
|
</div>
|
|
</div><p>
|
|
<a class="anchor" name="g39ceb4e6f08da2cd3dac3e93bb6e3ee1"></a><!-- doxytag: member="moc.h::MOC_Probe" ref="g39ceb4e6f08da2cd3dac3e93bb6e3ee1" args="(int source, int tag, MOC_Comm comm, MOC_Status *status)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int MOC_Probe </td>
|
|
<td>(</td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>tag</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> </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> * </td>
|
|
<td class="paramname"> <em>status</em></td><td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>
|
|
Waits till a message is received and returns information without actually receiving the message.
|
|
<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>source</em> </td><td><b>in</b> source of message </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td><b>in</b> message-tag </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>comm</em> </td><td><b>in</b> communicator </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>status</em> </td><td><b>out</b> status-object holding information about message </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> </td><td>No error; MPI routine completed successfully. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>...</em> </td><td>error-code </td></tr>
|
|
</table>
|
|
</dl>
|
|
|
|
<p>Definition at line <a class="el" href="../../d6/d74/moc__probe_8c-source.html#l00004">4</a> of file <a class="el" href="../../d6/d74/moc__probe_8c-source.html">moc_probe.c</a>.</p>
|
|
|
|
<p>References <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00078">moc_message_envelope_struct::id</a>, <a class="el" href="../../de/dbb/imoc__get__entry_8c-source.html#l00013">IMOC_get_entry()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00230">MOC_Status_struct::message_size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00231">MOC_Status_struct::mid</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00229">MOC_Status_struct::MOC_ERROR</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00227">MOC_Status_struct::MOC_SOURCE</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00228">MOC_Status_struct::MOC_TAG</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00097">moc_message_envelope_struct::size</a>, and <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00079">moc_message_envelope_struct::tag</a>.</p>
|
|
|
|
<p>
|
|
<div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dynsection">
|
|
<p><center><img src="../../d0/d64/group__p2p__main_g39ceb4e6f08da2cd3dac3e93bb6e3ee1_cgraph.png" border="0" usemap="#d0/d64/group__p2p__main_g39ceb4e6f08da2cd3dac3e93bb6e3ee1_cgraph_map" alt=""></center>
|
|
<map name="d0/d64/group__p2p__main_g39ceb4e6f08da2cd3dac3e93bb6e3ee1_cgraph_map">
|
|
<area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8980da77fa506e9a6d503c8c6eba68e2" title="Get the next valid message-envelope from "source" with specified "tag"..." alt="" coords="148,5,263,32"></map>
|
|
</div>
|
|
|
|
</div>
|
|
</div><p>
|
|
<a class="anchor" name="g30c532510cffd36acd1b9b0b3edb3832"></a><!-- doxytag: member="moc.h::MOC_Recv" ref="g30c532510cffd36acd1b9b0b3edb3832" args="(void *buf, int count, MOC_Datatype datatype, int source, int tag, MOC_Comm comm, MOC_Status *status)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int MOC_Recv </td>
|
|
<td>(</td>
|
|
<td class="paramtype">void * </td>
|
|
<td class="paramname"> <em>buf</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </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> </td>
|
|
<td class="paramname"> <em>datatype</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>source</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>tag</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> </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> * </td>
|
|
<td class="paramname"> <em>status</em></td><td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>
|
|
Performs a blocking standard mode receive operation.
|
|
<p>
|
|
<dl class="note" compact><dt><b>Note:</b></dt><dd>This routine blocks until the message is received.</dd></dl>
|
|
<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> </td><td><b>inout</b> Buffer into which data should be stored </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>count</em> </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>datatype</em> </td><td><b>in</b> Datatype of each receive buffer element </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>source</em> </td><td><b>in</b> Rank of source </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td><b>in</b> Tag of message </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>comm</em> </td><td><b>in</b> Communicator of message </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>status</em> </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> </td><td>No error; MPI routine completed successfully. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>...</em> </td><td>error-code </td></tr>
|
|
</table>
|
|
</dl>
|
|
|
|
<p>Definition at line <a class="el" href="../../d8/dbc/moc__recv__ppu_8c-source.html#l00011">11</a> of file <a class="el" href="../../d8/dbc/moc__recv__ppu_8c-source.html">moc_recv_ppu.c</a>.</p>
|
|
|
|
<p>References <a class="el" href="../../d7/d1f/imoc__buffer__malloc_8c-source.html#l00056">__attribute__()</a>, <a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html#5538e79854840d3caf08b90b5409e16b">moc_message_envelope_struct::bits</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00098">moc_message_envelope_struct::datatype</a>, <a class="el" href="../../df/dd4/structmoc__message__envelope__struct.html#38288113f9b7adee1e444850112ff807">moc_message_envelope_struct::flags</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00078">moc_message_envelope_struct::id</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00049">IMOC_EA_REMOTE_STATUS_ENTRY</a>, <a class="el" href="../../d7/df2/imoc__dma-get__ppu_8c-source.html#l00009">IMOC_get_data()</a>, <a class="el" href="../../de/dbb/imoc__get__entry_8c-source.html#l00013">IMOC_get_entry()</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00108">IMOC_MESSAGE_CHANNEL_DMA</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00116">IMOC_MESSAGE_CHANNEL_ENV</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00135">IMOC_TEST_ALIGNMENT</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00116">IMOC_TEST_BUFFER</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00109">IMOC_TEST_BYTECOUNT</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00074">IMOC_TEST_COMM_RECV</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00122">IMOC_TEST_PROC_NULL</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00128">IMOC_TEST_PROC_SELF</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00102">IMOC_TEST_RANK_RECV</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00088">IMOC_TEST_TAG_RECV</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00086">moc_spu_thread_struct::ls_base</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00099">moc_message_envelope_struct::message_address</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00230">MOC_Status_struct::message_size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00231">MOC_Status_struct::mid</a>, <a class="el" href="../../d0/d99/moc__datatype_8h-source.html#l00038">MOC_BYTE</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00033">MOC_ERR_TYPE</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00229">MOC_Status_struct::MOC_ERROR</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00227">MOC_Status_struct::MOC_SOURCE</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00228">MOC_Status_struct::MOC_TAG</a>, <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00097">moc_message_envelope_struct::size</a>, and <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00095">moc_message_envelope_struct::value</a>.</p>
|
|
|
|
<p>Referenced by <a class="el" href="../../da/d19/moc__bcast_8c-source.html#l00009">MOC_Bcast()</a>, <a class="el" href="../../db/da3/moc__send__recv_8c-source.html#l00003">MOC_Sendrecv()</a>, and <a class="el" href="../../d9/d96/moc__send__recv__replace_8c-source.html#l00003">MOC_Sendrecv_replace()</a>.</p>
|
|
|
|
<p>
|
|
<div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dynsection">
|
|
<p><center><img src="../../d0/d64/group__p2p__main_g30c532510cffd36acd1b9b0b3edb3832_cgraph.png" border="0" usemap="#d0/d64/group__p2p__main_g30c532510cffd36acd1b9b0b3edb3832_cgraph_map" alt=""></center>
|
|
<map name="d0/d64/group__p2p__main_g30c532510cffd36acd1b9b0b3edb3832_cgraph_map">
|
|
<area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf("No nodes in list\\n");..." alt="" coords="307,5,403,32"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g53d36c567e4c98e5d258a7857096e7ab" title="Internal wrapper-function for a blocking DMA-get operation." alt="" coords="144,31,256,57"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8980da77fa506e9a6d503c8c6eba68e2" title="Get the next valid message-envelope from "source" with specified "tag"..." alt="" coords="143,81,257,108"></map>
|
|
</div>
|
|
|
|
<p>
|
|
<div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dynsection">
|
|
<p><center><img src="../../d0/d64/group__p2p__main_g30c532510cffd36acd1b9b0b3edb3832_icgraph.png" border="0" usemap="#d0/d64/group__p2p__main_g30c532510cffd36acd1b9b0b3edb3832_icgraph_map" alt=""></center>
|
|
<map name="d0/d64/group__p2p__main_g30c532510cffd36acd1b9b0b3edb3832_icgraph_map">
|
|
<area shape="rect" href="../../db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank "root" to all other processes..." alt="" coords="176,5,267,32"><area shape="rect" href="../../d2/ded/group__p2p__sendrecv.html#g70885aadac98497e169267e74abee516" title="Execute a blocking send and receive operation." alt="" coords="165,56,277,83"><area shape="rect" href="../../d2/ded/group__p2p__sendrecv.html#g1e5b32eaefd61f863f89778dcbbb70a2" title="Execute a blocking send and receive." alt="" coords="141,107,301,133"></map>
|
|
</div>
|
|
|
|
</div>
|
|
</div><p>
|
|
<a class="anchor" name="g23e0afbe55bc4c86cb738c3361623a4c"></a><!-- doxytag: member="moc.h::MOC_Send" ref="g23e0afbe55bc4c86cb738c3361623a4c" args="(void *buf, int count, MOC_Datatype datatype, int dest, int tag, MOC_Comm comm)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">int MOC_Send </td>
|
|
<td>(</td>
|
|
<td class="paramtype">void * </td>
|
|
<td class="paramname"> <em>buf</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </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> </td>
|
|
<td class="paramname"> <em>datatype</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>dest</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int </td>
|
|
<td class="paramname"> <em>tag</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> </td>
|
|
<td class="paramname"> <em>comm</em></td><td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>
|
|
Performs a blocking standard mode send operation.
|
|
<p>
|
|
<dl class="note" compact><dt><b>Note:</b></dt><dd>This routine may block until the message is received.</dd></dl>
|
|
<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> </td><td><b>in</b> Pointer to buffer where data is stored </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>count</em> </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>datatype</em> </td><td><b>in</b> Type of elements to be send </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>dest</em> </td><td><b>in</b> Rank of receiving process </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td><b>in</b> Tag of message </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>comm</em> </td><td><b>in</b> communicator of message </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> </td><td>No error; MPI routine completed successfully. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>...</em> </td><td>error-code </td></tr>
|
|
</table>
|
|
</dl>
|
|
|
|
<p>Definition at line <a class="el" href="../../dd/d4a/moc__send_8c-source.html#l00019">19</a> of file <a class="el" href="../../dd/d4a/moc__send_8c-source.html">moc_send.c</a>.</p>
|
|
|
|
<p>References <a class="el" href="../../d2/db6/moc__bsend__ppu_8c-source.html#l00010">MOC_Bsend()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00374">MOC_SEND_TRESHOLD</a>, and <a class="el" href="../../d4/db6/moc__ssend__ppu_8c-source.html#l00010">MOC_Ssend()</a>.</p>
|
|
|
|
<p>Referenced by <a class="el" href="../../db/da3/moc__send__recv_8c-source.html#l00003">MOC_Sendrecv()</a>, and <a class="el" href="../../d9/d96/moc__send__recv__replace_8c-source.html#l00003">MOC_Sendrecv_replace()</a>.</p>
|
|
|
|
<p>
|
|
<div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dynsection">
|
|
<p><center><img src="../../d0/d64/group__p2p__main_g23e0afbe55bc4c86cb738c3361623a4c_cgraph.png" border="0" usemap="#d0/d64/group__p2p__main_g23e0afbe55bc4c86cb738c3361623a4c_cgraph_map" alt=""></center>
|
|
<map name="d0/d64/group__p2p__main_g23e0afbe55bc4c86cb738c3361623a4c_cgraph_map">
|
|
<area shape="rect" href="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="141,157,237,184"><area shape="rect" href="../../d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120" title="Performs a blocking synchronous mode send operation." alt="" coords="141,107,237,133"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf("No nodes in list\\n");..." alt="" coords="348,56,444,83"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41" title="Allocate buffer-space." alt="" coords="343,208,449,235"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message-queue (a local copy of the message-queue has to be..." alt="" coords="328,107,464,133"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message-ID." alt="" coords="332,157,460,184"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gb48c58191a7cf4d3e502d1c7a6c0ab9c" title="Internal wrapper-function for a blocking DMA-put operation." alt="" coords="340,259,452,285"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69" title="Wait till message with message-ID mid has been received." alt="" coords="285,5,507,32"></map>
|
|
</div>
|
|
|
|
<p>
|
|
<div class="dynheader">
|
|
Here is the caller graph for this function:</div>
|
|
<div class="dynsection">
|
|
<p><center><img src="../../d0/d64/group__p2p__main_g23e0afbe55bc4c86cb738c3361623a4c_icgraph.png" border="0" usemap="#d0/d64/group__p2p__main_g23e0afbe55bc4c86cb738c3361623a4c_icgraph_map" alt=""></center>
|
|
<map name="d0/d64/group__p2p__main_g23e0afbe55bc4c86cb738c3361623a4c_icgraph_map">
|
|
<area shape="rect" href="../../d2/ded/group__p2p__sendrecv.html#g70885aadac98497e169267e74abee516" title="Execute a blocking send and receive operation." alt="" coords="165,5,277,32"><area shape="rect" href="../../d2/ded/group__p2p__sendrecv.html#g1e5b32eaefd61f863f89778dcbbb70a2" title="Execute a blocking send and receive." alt="" coords="141,56,301,83"></map>
|
|
</div>
|
|
|
|
</div>
|
|
</div><p>
|
|
</div>
|
|
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:48 2009 for MPI On Cell (Documentation) by
|
|
<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>
|