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

427 lines
36 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): Non-Blocking 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&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>
<li><a href="../../files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Non-Blocking Communication<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 Non-Blocking Communication:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d7/d62/group__p2p__imm.png" border="0" alt="" usemap="#d7/df4/d7_2d62_2group____p2p____imm_map">
<map name="d7/df4/d7_2d62_2group____p2p____imm_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>
Non-blocking sending and receiving messages.
<p>
Because of restrictions of the Cell Broadband Engine non-blocking communication can only be provided with a lot of limitations. In fact the only operation where non-blocking communication make sense is synchronous send.<p>
<a class="el" href="../../d7/d62/group__p2p__imm.html#gd88773e68570adfad9f99159c69502af">MOC_ISend</a> uses blocking buffered send or non-blocking synchronous send according to the message size.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Every non-blocking communication operation has to be finished using <a class="el" href="../../d7/d62/group__p2p__imm.html#g5ee1f1c1275717d2dc78d6058ff81e9e">MOC_Test</a> or <a class="el" href="../../d7/d62/group__p2p__imm.html#g68043e4a0893fdc25c67f87bae1015a6">MOC_Wait</a>, otherwise resources are no freed and some data are not copied correctly. </dd></dl>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/d17/structmoc__request__struct.html">moc_request_struct</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Communication-Request (Handle). <a href="../../db/d17/structmoc__request__struct.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct <a class="el" href="../../db/d17/structmoc__request__struct.html">moc_request_struct</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d62/group__p2p__imm.html#g5a99fbe071639c65a7111884c29f4d31">MOC_Request</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Communication-Request (Handle). <a href="#g5a99fbe071639c65a7111884c29f4d31"></a><br></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="../../d7/d62/group__p2p__imm.html#gd88773e68570adfad9f99159c69502af">MOC_ISend</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, <a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs a non-blocking standard mode send operation. <a href="#gd88773e68570adfad9f99159c69502af"></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="../../d7/d62/group__p2p__imm.html#gc148ff9b9bee69164139425a7df53697">MOC_ISsend</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, <a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *request)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs a non-blocking synchronous mode send operation. <a href="#gc148ff9b9bee69164139425a7df53697"></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="../../d7/d62/group__p2p__imm.html#g5ee1f1c1275717d2dc78d6058ff81e9e">MOC_Test</a> (<a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *request, int *flag, <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">Tests, if a non-blocking communication has been completed. <a href="#g5ee1f1c1275717d2dc78d6058ff81e9e"></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="../../d7/d62/group__p2p__imm.html#g68043e4a0893fdc25c67f87bae1015a6">MOC_Wait</a> (<a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *request, <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">Wait till a non-blocking communication has been completed. <a href="#g68043e4a0893fdc25c67f87bae1015a6"></a><br></td></tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="g5a99fbe071639c65a7111884c29f4d31"></a><!-- doxytag: member="moc.h::MOC_Request" ref="g5a99fbe071639c65a7111884c29f4d31" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="../../db/d17/structmoc__request__struct.html">moc_request_struct</a> <a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Communication-Request (Handle).
<p>
&lt; Communication-Request (Handle)
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="gd88773e68570adfad9f99159c69502af"></a><!-- doxytag: member="moc.h::MOC_ISend" ref="gd88773e68570adfad9f99159c69502af" args="(void *buf, int count, MOC_Datatype datatype, int dest, int tag, MOC_Comm comm, MOC_Request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_ISend </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>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>&nbsp;</td>
<td class="paramname"> <em>comm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Performs a non-blocking standard mode send operation.
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>This routine returns as soon as possible.</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>&nbsp;</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>&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>datatype</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>tag</em>&nbsp;</td><td><b>in</b> Tag of message </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>request</em>&nbsp;</td><td><b>out</b> communication request (handle) </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>
<p>
byte-count &lt;= 4096 ==&gt; buffered send<p>
other ==&gt; true non-blocking send
<p>Definition at line <a class="el" href="../../d5/d4e/moc__isend_8c-source.html#l00018">18</a> of file <a class="el" href="../../d5/d4e/moc__isend_8c-source.html">moc_isend.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00076">imoc_issend_request_struct::isFinished</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00575">moc_request_struct::issend_request</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00079">imoc_issend_request_struct::message_size</a>, <a class="el" href="../../d2/db6/moc__bsend__ppu_8c-source.html#l00010">MOC_Bsend()</a>, <a class="el" href="../../df/df8/moc__issend__ppu_8c-source.html#l00010">MOC_ISsend()</a>, <a class="el" href="../../d4/d9b/imoc_8h-source.html#l00030">MOC_REQ_TYPE_ISSEND</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00374">MOC_SEND_TRESHOLD</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00052">node_handle</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00032">moc_node_handle_ppu_struct::rank</a>, <a class="el" href="../../db/d17/structmoc__request__struct.html#4878ce199375f8a411520c887f908a4f">moc_request_struct::request_data</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00571">moc_request_struct::request_type</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00077">imoc_issend_request_struct::source</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00078">imoc_issend_request_struct::tag</a>.</p>
<p>Referenced by <a class="el" href="../../da/d19/moc__bcast_8c-source.html#l00009">MOC_Bcast()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d7/d62/group__p2p__imm_gd88773e68570adfad9f99159c69502af_cgraph.png" border="0" usemap="#d7/d62/group__p2p__imm_gd88773e68570adfad9f99159c69502af_cgraph_map" alt=""></center>
<map name="d7/d62/group__p2p__imm_gd88773e68570adfad9f99159c69502af_cgraph_map">
<area shape="rect" href="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b" title="Performs a blocking buffered mode send operation." alt="" coords="148,107,244,133"><area shape="rect" href="../../d7/d62/group__p2p__imm.html#gc148ff9b9bee69164139425a7df53697" title="Performs a non&#45;blocking synchronous mode send operation." alt="" coords="147,56,245,83"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="313,5,409,32"><area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#g5295b372d853993b2e6cfb6912a0ee41" title="Allocate buffer&#45;space." alt="" coords="308,208,415,235"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message&#45;queue (a local copy of the message&#45;queue has to be..." alt="" coords="293,56,429,83"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message&#45;ID." alt="" coords="297,107,425,133"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gb48c58191a7cf4d3e502d1c7a6c0ab9c" title="Internal wrapper&#45;function for a blocking DMA&#45;put operation." alt="" coords="305,157,417,184"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d7/d62/group__p2p__imm_gd88773e68570adfad9f99159c69502af_icgraph.png" border="0" usemap="#d7/d62/group__p2p__imm_gd88773e68570adfad9f99159c69502af_icgraph_map" alt=""></center>
<map name="d7/d62/group__p2p__imm_gd88773e68570adfad9f99159c69502af_icgraph_map">
<area shape="rect" href="../../db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank &quot;root&quot; to all other processes..." alt="" coords="148,5,239,32"></map>
</div>
</div>
</div><p>
<a class="anchor" name="gc148ff9b9bee69164139425a7df53697"></a><!-- doxytag: member="moc.h::MOC_ISsend" ref="gc148ff9b9bee69164139425a7df53697" args="(void *buf, int count, MOC_Datatype datatype, int dest, int tag, MOC_Comm comm, MOC_Request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_ISsend </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>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>&nbsp;</td>
<td class="paramname"> <em>comm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Performs a non-blocking synchronous mode send operation.
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>This routine returns as soon as possible (After the message-envelope has been written into the receiver's message-queue).</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>&nbsp;</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>&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>datatype</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>tag</em>&nbsp;</td><td><b>in</b> Tag of message </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>request</em>&nbsp;</td><td><b>out</b> communication request (handle) </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>
<p>Definition at line <a class="el" href="../../df/df8/moc__issend__ppu_8c-source.html#l00010">10</a> of file <a class="el" href="../../df/df8/moc__issend__ppu_8c-source.html">moc_issend_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="../../dd/df5/structmoc__message__status__struct.html#c0bdc214525521d58f12c72874de0512">moc_message_status_struct::bits</a>, <a class="el" href="../../dd/df5/structmoc__message__status__struct.html#086c0d449d25774d43512b6f7fdab8ed">moc_message_status_struct::flags</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00019">IMOC_EA_REMOTE_QUEUE</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00034">IMOC_EA_REMOTE_QUEUE_ENTRY</a>, <a class="el" href="../../d1/d2a/imoc__get__free__entry_8c-source.html#l00009">IMOC_getFreeEntry()</a>, <a class="el" href="../../dd/d18/imoc__get__free__mid_8c-source.html#l00009">IMOC_getFreeMID()</a>, <a class="el" href="../../db/db7/imoc__macros__ppu_8h-source.html#l00025">IMOC_LS_REMOTE_QUEUE</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#l00067">IMOC_TEST_COMM_SEND</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#l00095">IMOC_TEST_RANK</a>, <a class="el" href="../../d0/d87/imoc__macros_8h-source.html#l00081">IMOC_TEST_TAG_SEND</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00076">imoc_issend_request_struct::isFinished</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00575">moc_request_struct::issend_request</a>, <a class="el" href="../../d4/d9b/imoc_8h-source.html#l00049">MEMCPY_GET_TRESHOLD</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00079">imoc_issend_request_struct::message_size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00075">imoc_issend_request_struct::mid</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00047">MOC_ERR_INTERN</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00106">moc_ppu_thread_count</a>, <a class="el" href="../../d4/d9b/imoc_8h-source.html#l00030">MOC_REQ_TYPE_ISSEND</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00123">moc_spu_thread_list</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00030">MOC_SUCCESS</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00052">node_handle</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00034">moc_node_handle_ppu_struct::queue_size</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00032">moc_node_handle_ppu_struct::rank</a>, <a class="el" href="../../db/d17/structmoc__request__struct.html#4878ce199375f8a411520c887f908a4f">moc_request_struct::request_data</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00571">moc_request_struct::request_type</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00077">imoc_issend_request_struct::source</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00036">moc_node_handle_ppu_struct::status_array_base</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00078">imoc_issend_request_struct::tag</a>.</p>
<p>Referenced by <a class="el" href="../../d5/d4e/moc__isend_8c-source.html#l00018">MOC_ISend()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d7/d62/group__p2p__imm_gc148ff9b9bee69164139425a7df53697_cgraph.png" border="0" usemap="#d7/d62/group__p2p__imm_gc148ff9b9bee69164139425a7df53697_cgraph_map" alt=""></center>
<map name="d7/d62/group__p2p__imm_gc148ff9b9bee69164139425a7df53697_cgraph_map">
<area shape="rect" href="../../d3/dd3/group__internal__p2p__bmalloc.html#gad8750c7ba3d6da9c137c2c462d2c531" title="void bmalloc_print_nodes() { if (!bmalloc_first_node) printf(&quot;No nodes in list\\n&quot;);..." alt="" coords="172,5,268,32"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g2a948cdecce651ae6cc1b0c0ddb1b750" title="Get next free entry in message&#45;queue (a local copy of the message&#45;queue has to be..." alt="" coords="152,56,288,83"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g409bdbea503611cf04829413d15830df" title="Get free message&#45;ID." alt="" coords="156,107,284,133"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d7/d62/group__p2p__imm_gc148ff9b9bee69164139425a7df53697_icgraph.png" border="0" usemap="#d7/d62/group__p2p__imm_gc148ff9b9bee69164139425a7df53697_icgraph_map" alt=""></center>
<map name="d7/d62/group__p2p__imm_gc148ff9b9bee69164139425a7df53697_icgraph_map">
<area shape="rect" href="../../d7/d62/group__p2p__imm.html#gd88773e68570adfad9f99159c69502af" title="Performs a non&#45;blocking standard mode send operation." alt="" coords="153,5,244,32"><area shape="rect" href="../../db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank &quot;root&quot; to all other processes..." alt="" coords="295,5,385,32"></map>
</div>
</div>
</div><p>
<a class="anchor" name="g5ee1f1c1275717d2dc78d6058ff81e9e"></a><!-- doxytag: member="moc.h::MOC_Test" ref="g5ee1f1c1275717d2dc78d6058ff81e9e" args="(MOC_Request *request, int *flag, MOC_Status *status)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Test </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *&nbsp;</td>
<td class="paramname"> <em>request</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&nbsp;</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> *&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>
Tests, if a non-blocking communication has been completed.
<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>request</em>&nbsp;</td><td><b>in</b> Communication-Request (Handle) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td><b>out</b> true, if communication-request has been completed </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</td><td><b>out</b> Object holding status-information </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>
<p>Definition at line <a class="el" href="../../d7/d24/moc__test_8c-source.html#l00013">13</a> of file <a class="el" href="../../d7/d24/moc__test_8c-source.html">moc_test.c</a>.</p>
<p>References <a class="el" href="../../dd/df5/structmoc__message__status__struct.html#c0bdc214525521d58f12c72874de0512">moc_message_status_struct::bits</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00574">moc_request_struct::dma_data</a>, <a class="el" href="../../dd/df5/structmoc__message__status__struct.html#086c0d449d25774d43512b6f7fdab8ed">moc_message_status_struct::flags</a>, <a class="el" href="../../d2/df9/imoc__dma-test__ppu_8c-source.html#l00009">IMOC_test_dma()</a>, <a class="el" href="../../dd/d1f/imoc__test__message_8c-source.html#l00009">IMOC_testForMessageCompletion()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00076">imoc_issend_request_struct::isFinished</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00575">moc_request_struct::issend_request</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00079">imoc_issend_request_struct::message_size</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#l00075">imoc_issend_request_struct::mid</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00037">MOC_ERR_REQUEST</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00229">MOC_Status_struct::MOC_ERROR</a>, <a class="el" href="../../d4/d9b/imoc_8h-source.html#l00025">MOC_REQ_TYPE_DMA</a>, <a class="el" href="../../d4/d9b/imoc_8h-source.html#l00030">MOC_REQ_TYPE_ISSEND</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="../../db/d45/imoc__core__ppu_8h-source.html#l00052">node_handle</a>, <a class="el" href="../../db/d17/structmoc__request__struct.html#4878ce199375f8a411520c887f908a4f">moc_request_struct::request_data</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00571">moc_request_struct::request_type</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00063">imoc_dma_request_struct::size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00077">imoc_issend_request_struct::source</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00036">moc_node_handle_ppu_struct::status_array_base</a>, and <a class="el" href="../../d7/de1/moc_8h-source.html#l00078">imoc_issend_request_struct::tag</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d7/d62/group__p2p__imm_g5ee1f1c1275717d2dc78d6058ff81e9e_cgraph.png" border="0" usemap="#d7/d62/group__p2p__imm_g5ee1f1c1275717d2dc78d6058ff81e9e_cgraph_map" alt=""></center>
<map name="d7/d62/group__p2p__imm_g5ee1f1c1275717d2dc78d6058ff81e9e_cgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gdc3d91a083a9dc3aa539aee4d56616f0" title="Tests if a IMOC_iget_data or IMOC_iput_data is completed." alt="" coords="189,5,304,32"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g2e74930cd8e161a131b90f2f1081037a" title="Tests if message with message&#45;ID mid has been received." alt="" coords="137,56,356,83"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec" title="Releases a reserved tag." alt="" coords="405,5,525,32"></map>
</div>
</div>
</div><p>
<a class="anchor" name="g68043e4a0893fdc25c67f87bae1015a6"></a><!-- doxytag: member="moc.h::MOC_Wait" ref="g68043e4a0893fdc25c67f87bae1015a6" args="(MOC_Request *request, MOC_Status *status)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Wait </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *&nbsp;</td>
<td class="paramname"> <em>request</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>
Wait till a non-blocking communication has been completed.
<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>request</em>&nbsp;</td><td><b>in</b> Communication-Request (Handle) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</td><td><b>out</b> Object holding status-information </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>
<p>Definition at line <a class="el" href="../../de/d33/moc__wait_8c-source.html#l00011">11</a> of file <a class="el" href="../../de/d33/moc__wait_8c-source.html">moc_wait.c</a>.</p>
<p>References <a class="el" href="../../d7/de1/moc_8h-source.html#l00574">moc_request_struct::dma_data</a>, <a class="el" href="../../dd/df5/structmoc__message__status__struct.html#086c0d449d25774d43512b6f7fdab8ed">moc_message_status_struct::flags</a>, <a class="el" href="../../d8/da5/imoc__dma-wait__ppu_8c-source.html#l00009">IMOC_wait_dma()</a>, <a class="el" href="../../d2/dd3/imoc__wait__message_8c-source.html#l00009">IMOC_waitForMessageCompletion()</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00076">imoc_issend_request_struct::isFinished</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00575">moc_request_struct::issend_request</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00079">imoc_issend_request_struct::message_size</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#l00075">imoc_issend_request_struct::mid</a>, <a class="el" href="../../d3/d95/moc__error__codes_8h-source.html#l00037">MOC_ERR_REQUEST</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00229">MOC_Status_struct::MOC_ERROR</a>, <a class="el" href="../../d4/d9b/imoc_8h-source.html#l00025">MOC_REQ_TYPE_DMA</a>, <a class="el" href="../../d4/d9b/imoc_8h-source.html#l00030">MOC_REQ_TYPE_ISSEND</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="../../db/d45/imoc__core__ppu_8h-source.html#l00052">node_handle</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00032">moc_node_handle_ppu_struct::rank</a>, <a class="el" href="../../db/d17/structmoc__request__struct.html#4878ce199375f8a411520c887f908a4f">moc_request_struct::request_data</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00571">moc_request_struct::request_type</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00063">imoc_dma_request_struct::size</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00077">imoc_issend_request_struct::source</a>, <a class="el" href="../../db/d45/imoc__core__ppu_8h-source.html#l00036">moc_node_handle_ppu_struct::status_array_base</a>, <a class="el" href="../../d7/de1/moc_8h-source.html#l00078">imoc_issend_request_struct::tag</a>, and <a class="el" href="../../d6/d2c/imoc__core_8h-source.html#l00139">moc_message_status_struct::value</a>.</p>
<p>Referenced by <a class="el" href="../../da/d19/moc__bcast_8c-source.html#l00009">MOC_Bcast()</a>.</p>
<p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d7/d62/group__p2p__imm_g68043e4a0893fdc25c67f87bae1015a6_cgraph.png" border="0" usemap="#d7/d62/group__p2p__imm_g68043e4a0893fdc25c67f87bae1015a6_cgraph_map" alt=""></center>
<map name="d7/d62/group__p2p__imm_g68043e4a0893fdc25c67f87bae1015a6_cgraph_map">
<area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#g57b89667357146b299f32bd114e0e5ad" title="Waits till a IMOC_iget_data or IMOC_iput_data is completed." alt="" coords="192,5,307,32"><area shape="rect" href="../../d8/d88/group__internal__p2p__main.html#g8675f9552168f2dd8926cad5ac00be69" title="Wait till message with message&#45;ID mid has been received." alt="" coords="139,56,360,83"><area shape="rect" href="../../d2/de2/group__internal__p2p__dma.html#gf465203c58c5a8066a7ef3ee91b15cec" title="Releases a reserved tag." alt="" coords="408,5,528,32"></map>
</div>
<p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dynsection">
<p><center><img src="../../d7/d62/group__p2p__imm_g68043e4a0893fdc25c67f87bae1015a6_icgraph.png" border="0" usemap="#d7/d62/group__p2p__imm_g68043e4a0893fdc25c67f87bae1015a6_icgraph_map" alt=""></center>
<map name="d7/d62/group__p2p__imm_g68043e4a0893fdc25c67f87bae1015a6_icgraph_map">
<area shape="rect" href="../../db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6" title="Broadcasts a message from the process with rank &quot;root&quot; to all other processes..." alt="" coords="140,5,231,32"></map>
</div>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:50:56 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>