Initial commit.

This commit is contained in:
2017-10-26 19:57:24 +02:00
commit 9ce8b5485d
1090 changed files with 47036 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
<!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): Data Structures</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 class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="db/d17/structmoc__request__struct.html">moc_request_struct</a></td><td class="indexvalue">Communication-Request (Handle) </td></tr>
<tr><td class="indexkey"><a class="el" href="dd/d7a/structMOC__Status__struct.html">MOC_Status_struct</a></td><td class="indexvalue">Structure holding information about a received message </td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:22 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

+27
View File
@@ -0,0 +1,27 @@
<!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): Summary &amp; Conclusions</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 class="navpath"><a class="el" href="main.html">MPI On Cell</a>
</div>
</div>
<div class="contents">
<h1><a class="anchor" name="conclusion">Summary &amp; Conclusions </a></h1>MPI wasn't designed for the Cell Broadband Engine. A common MPI-node has one or more normal CPUs and several GBytes of RAM. The Cell Broadband Engine features a normal CPU (the PPU) and several special processing units with only a very limited amount of memory. The SPUs support only one thread per SPU and a complex handling of system-calls is needed. Because of this there are several restrictions in implementing MPI on the Cell Broadband Engine.<p>
Nevertheless MPI on Cell makes sense. It greatly simlifies programming on the Cell Broadband Engine, features a public API which is well known and widely used and message passing operations are generally easier to use than DMA (DMA needs memory-addresses and explicit synchronization, whereas MPI only needs the ranks of participating processes and features implicit synchronization).<p>
But message parsing operations cannot replace DMA. Both methods of communication have their advantages and disadvantages and they complement one another. So this library additionally features some easy to use DMA operations, if someone wants to gain maximum performance. Using DMA alltogether with send-recv especially speeds up application with a lot of communication going on between SPUs and PPU. </div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:16 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>
+369
View File
@@ -0,0 +1,369 @@
<!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&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>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&#45;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&#45;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&#45;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&#45;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">&nbsp;</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">&nbsp;</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">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html">Datatypes</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Datatypes supported by MOC. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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"><a class="anchor" name="g1efd7c092411ed106006e6a75a1de78b"></a><!-- doxytag: member="p2p_main::MOC_SEND_TRESHOLD" ref="g1efd7c092411ed106006e6a75a1de78b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html#g1efd7c092411ed106006e6a75a1de78b">MOC_SEND_TRESHOLD</a>&nbsp;&nbsp;&nbsp;4096</td></tr>
<tr><td class="mdescLeft">&nbsp;</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. <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="../../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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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>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&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>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">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 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>&nbsp;</td><td><b>in</b> source of message </td></tr>
<tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td><b>in</b> message-tag </td></tr>
<tr><td valign="top"></td><td valign="top"><em>comm</em>&nbsp;</td><td><b>in</b> communicator </td></tr>
<tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</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>&nbsp;</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>&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="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&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>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="../../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>
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>&nbsp;</td><td><b>in</b> source of message </td></tr>
<tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td><b>in</b> message-tag </td></tr>
<tr><td valign="top"></td><td valign="top"><em>comm</em>&nbsp;</td><td><b>in</b> communicator </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</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>&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="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 *&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>source</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="../../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>
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>&nbsp;</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>&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>datatype</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>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>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="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 *&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><td>&nbsp;</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>&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>
</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:19 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+172
View File
@@ -0,0 +1,172 @@
<!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): Communicator Management</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>Communicator Management<br>
<small>
[<a class="el" href="../../d1/df0/group__comm__main.html">Groups, Context and Communicators</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Communicator Management:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d1/dd1/group__comm__mgt.png" border="0" alt="" usemap="#dc/d90/d1_2dd1_2group____comm____mgt_map">
<map name="dc/d90/d1_2dd1_2group____comm____mgt_map">
<area shape="rect" href="../../d1/df0/group__comm__main.html" title="The MOC communicator specifies a group of processes inside which a communication..." alt="" coords="7,5,241,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Funktions for managing communicators.
<p>
Because of reasons already stated (see <a class="el" href="../../d1/df0/group__comm__main.html">Groups, Context and Communicators</a>) there is no support for user-defined communicators. So this section is limited to functions which return the size of a specific communicator or the rank of the calling process.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gcae012270d1813b9153b8cbc78a5c84d"></a><!-- doxytag: member="comm_mgt::MOC_COMM_NULL" ref="gcae012270d1813b9153b8cbc78a5c84d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dd1/group__comm__mgt.html#gcae012270d1813b9153b8cbc78a5c84d">MOC_COMM_NULL</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specifies a null communicator. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g14e1cb53b99b5e239d4cc6a8d370ad94"></a><!-- doxytag: member="comm_mgt::MOC_COMM_WORLD" ref="g14e1cb53b99b5e239d4cc6a8d370ad94" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dd1/group__comm__mgt.html#g14e1cb53b99b5e239d4cc6a8d370ad94">MOC_COMM_WORLD</a>&nbsp;&nbsp;&nbsp;1</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specifies a constant that contains all of the processes. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf8c5dfb6bb79027948fe63f4cf6504eb"></a><!-- doxytag: member="comm_mgt::MOC_COMM_SELF" ref="gf8c5dfb6bb79027948fe63f4cf6504eb" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dd1/group__comm__mgt.html#gf8c5dfb6bb79027948fe63f4cf6504eb">MOC_COMM_SELF</a>&nbsp;&nbsp;&nbsp;2</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Specifies a constant that contains only the calling process. <br></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Communicator-Handle. <a href="#g3d2b8a9af65bff5f79d02bda13616767"></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="../../d1/dd1/group__comm__mgt.html#gbadd556e16667ac8ee86af72299e4915">MOC_Comm_rank</a> (<a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, int *rank)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines the rank of the calling process in the communicator. <a href="#gbadd556e16667ac8ee86af72299e4915"></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="../../d1/dd1/group__comm__mgt.html#g36ac8a2d969216d52418aedd77a5829e">MOC_Comm_size</a> (<a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm, int *size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines the size of the group associated with a communictor. <a href="#g36ac8a2d969216d52418aedd77a5829e"></a><br></td></tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="g3d2b8a9af65bff5f79d02bda13616767"></a><!-- doxytag: member="moc.h::MOC_Comm" ref="g3d2b8a9af65bff5f79d02bda13616767" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef int <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Communicator-Handle.
<p>
Masks the actual type which is used to encode the communicator. Char is used and therefore the maximum number of possible communicators is limited to 256. But because there are three predefined communicators (MPI_COMM_NULL, MPI_COMM_WORLD and MPI_COMM_SELF) only 253 user-defined communicators are possible.
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="gbadd556e16667ac8ee86af72299e4915"></a><!-- doxytag: member="moc.h::MOC_Comm_rank" ref="gbadd556e16667ac8ee86af72299e4915" args="(MOC_Comm comm, int *rank)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Comm_rank </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">int *&nbsp;</td>
<td class="paramname"> <em>rank</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Determines the rank of the calling process in the communicator.
<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>comm</em>&nbsp;</td><td><b>in</b> commicator-handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>rank</em>&nbsp;</td><td><b>out</b> rank of the calling process in group of comm </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>MOC_ERR_COMM</em>&nbsp;</td><td>Invalid communicator. A common error is to use a null communicator in a call. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g36ac8a2d969216d52418aedd77a5829e"></a><!-- doxytag: member="moc.h::MOC_Comm_size" ref="g36ac8a2d969216d52418aedd77a5829e" args="(MOC_Comm comm, int *size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Comm_size </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">int *&nbsp;</td>
<td class="paramname"> <em>size</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Determines the size of the group associated with a communictor.
<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>comm</em>&nbsp;</td><td><b>in</b> commicator-handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td><b>out</b> number of processes in the group of comm </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>MOC_ERR_COMM</em>&nbsp;</td><td>Invalid communicator. A common error is to use a null communicator in a call. </td></tr>
</table>
</dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:22 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

+52
View File
@@ -0,0 +1,52 @@
<!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): Groups, Context and Communicators</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>Groups, Context and Communicators<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 Groups, Context and Communicators:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d1/df0/group__comm__main.png" border="0" alt="" usemap="#d8/d49/d1_2df0_2group____comm____main_map">
<map name="d8/d49/d1_2df0_2group____comm____main_map">
<area shape="rect" href="../../d1/dd1/group__comm__mgt.html" title="Funktions for managing communicators." alt="" coords="507,5,691,32"><area shape="rect" href="../../d3/d9e/group__end__user.html" title="This section describes the public API provided by the MOC&#45;library." alt="" coords="7,5,172,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The MOC communicator specifies a group of processes inside which a communication occurs.
<p>
Initially there is a single communicator, MPI_COMM_WORLD, which contains all of the processes involved in the computation.<p>
Currently there is no support for creating and managing user-defined groups and communicators and probably never will be. The local storage of a SPU is very small and also the maximal number of nodes is limited to a small number and so there is doubt if the benefits will be greater than the overhead introduced by supporting user-defined groups and communicators.<p>
Only the predefined communicators <a class="el" href="../../d1/dd1/group__comm__mgt.html#g14e1cb53b99b5e239d4cc6a8d370ad94">MOC_COMM_WORLD</a>, <a class="el" href="../../d1/dd1/group__comm__mgt.html#gf8c5dfb6bb79027948fe63f4cf6504eb">MOC_COMM_SELF</a> and <a class="el" href="../../d1/dd1/group__comm__mgt.html#gcae012270d1813b9153b8cbc78a5c84d">MOC_COMM_NULL</a> are available.<p>
The only operations which are currently implemented are <a class="el" href="../../d1/dd1/group__comm__mgt.html#g36ac8a2d969216d52418aedd77a5829e">MOC_Comm_size</a> and <a class="el" href="../../d1/dd1/group__comm__mgt.html#gbadd556e16667ac8ee86af72299e4915">MOC_Comm_rank</a>.
<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">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dd1/group__comm__mgt.html">Communicator Management</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Funktions for managing communicators. <br></td></tr>
<p>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:22 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

+258
View File
@@ -0,0 +1,258 @@
<!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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

+67
View File
@@ -0,0 +1,67 @@
<!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): End-User Documentation</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>End-User Documentation</h1>
<p>
<div class="dynheader">
Collaboration diagram for End-User Documentation:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d3/d9e/group__end__user.png" border="0" alt="" usemap="#d3/d05/d3_2d9e_2group____end____user_map">
<map name="d3/d05/d3_2d9e_2group____end____user_map">
<area shape="rect" href="../../db/dc2/group__broadcast.html" title="Communication that involves a group of processes." alt="" coords="255,5,425,32"><area shape="rect" href="../../d1/df0/group__comm__main.html" title="The MOC communicator specifies a group of processes inside which a communication..." alt="" coords="223,56,457,83"><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="243,107,437,133"><area shape="rect" href="../../d9/d16/group__dma__access.html" title="Functions which use DMA to transfer Data." alt="" coords="263,157,417,184"><area shape="rect" href="../../de/d1b/group__environment__main.html" title="This chapter discusses routines for getting and, where appropriate, setting various..." alt="" coords="249,208,431,235"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This section describes the public API provided by the MOC-library.
<p>
If some things remain unclear, consult the official MPI-standard (Version 1.3).<p>
This library uses Direct Memory Access (DMA) provided by the Cell Broadband Engine. So the use of other DMA operations than provided of this library is discouraged, because it may interfere with this library. One exceptions are signals. We don't use signals at all at the moment, so one can savely use signal.
<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">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d1b/group__environment__main.html">Environmental Management</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This chapter discusses routines for getting and, where appropriate, setting various parameters that relate to the MPI implementation and the execution environment (such as error handling, startup&amp;shutdown and Time). <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d64/group__p2p__main.html">Point-to-Point Communication</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sending and receiving of messages by processes is the basic MPI communication mechanism. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../db/dc2/group__broadcast.html">Collective Communication</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Communication that involves a group of processes. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d16/group__dma__access.html">Direct Memory Access</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Functions which use DMA to transfer Data. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/df0/group__comm__main.html">Groups, Context and Communicators</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The MOC communicator specifies a group of processes inside which a communication occurs. <br></td></tr>
<p>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:16 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+120
View File
@@ -0,0 +1,120 @@
<!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): Synchronous 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>
</ul>
</div>
</div>
<div class="contents">
<h1>Synchronous 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 Synchronous Communication:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d5/dc2/group__p2p__synch.png" border="0" alt="" usemap="#d6/dc7/d5_2dc2_2group____p2p____synch_map">
<map name="d6/dc7/d5_2dc2_2group____p2p____synch_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>
Direct blocking sending of messages without any intermediate buffer.
<p>
The blocking synchronous send-operation returns only when the receiver has completely received the message.
<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="../../d5/dc2/group__p2p__synch.html#g46cb2ff2b5a0601165978598932d6120">MOC_Ssend</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">&nbsp;</td><td class="mdescRight">Performs a blocking synchronous mode send operation. <a href="#g46cb2ff2b5a0601165978598932d6120"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g46cb2ff2b5a0601165978598932d6120"></a><!-- doxytag: member="moc.h::MOC_Ssend" ref="g46cb2ff2b5a0601165978598932d6120" 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_Ssend </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><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Performs a blocking synchronous mode send 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>&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>
</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:20 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

+337
View File
@@ -0,0 +1,337 @@
<!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>
</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>
</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>
</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>
</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>
</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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,150 @@
<!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): Implementation Information</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>Implementation Information<br>
<small>
[<a class="el" href="../../de/d1b/group__environment__main.html">Environmental Management</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Implementation Information:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d8/d8f/group__environment__information.png" border="0" alt="" usemap="#d6/daa/d8_2d8f_2group____environment____information_map">
<map name="d6/daa/d8_2d8f_2group____environment____information_map">
<area shape="rect" href="../../de/d1b/group__environment__main.html" title="This chapter discusses routines for getting and, where appropriate, setting various..." alt="" coords="5,5,187,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Functions to return some information about the execution environment and the MOC-implementation.
<p>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g872c24341022407f606e48c7987f1d40"></a><!-- doxytag: member="environment_information::MOC_VERSION" ref="g872c24341022407f606e48c7987f1d40" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d8f/group__environment__information.html#g872c24341022407f606e48c7987f1d40">MOC_VERSION</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Major version-number of this MOC-Implementation. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd51bfe8de83ee5b0dad9f61c855ae666"></a><!-- doxytag: member="environment_information::MOC_SUBVERSION" ref="gd51bfe8de83ee5b0dad9f61c855ae666" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d8f/group__environment__information.html#gd51bfe8de83ee5b0dad9f61c855ae666">MOC_SUBVERSION</a>&nbsp;&nbsp;&nbsp;9</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Minor version-number of this MOC-Implementation. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g58f559d6df810dbe1c633b3d68e9624f"></a><!-- doxytag: member="environment_information::MOC_MAX_PROCESSOR_NAME" ref="g58f559d6df810dbe1c633b3d68e9624f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d8f/group__environment__information.html#g58f559d6df810dbe1c633b3d68e9624f">MOC_MAX_PROCESSOR_NAME</a>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The maximum length of the string returned by MOC_Get_processor_name. <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="../../d8/d8f/group__environment__information.html#gf69e7617a61a2eaa2783e718f2df5270">MOC_Get_processor_name</a> (char *name, int *resultlen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the name of the processor. <a href="#gf69e7617a61a2eaa2783e718f2df5270"></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="../../d8/d8f/group__environment__information.html#g9a54df3ad074f8fc91abddf7666474ea">MOC_Get_version</a> (int *version, int *subversion)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the major and minor version of this MOC-implementation. <a href="#g9a54df3ad074f8fc91abddf7666474ea"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="gf69e7617a61a2eaa2783e718f2df5270"></a><!-- doxytag: member="moc.h::MOC_Get_processor_name" ref="gf69e7617a61a2eaa2783e718f2df5270" args="(char *name, int *resultlen)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Get_processor_name </td>
<td>(</td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>resultlen</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the name of the processor.
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>This function returns "SPU" if the calling process is running on a SPU otherwise it's running on the "PPU".</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>name</em>&nbsp;</td><td><b>out</b> Specifies the processor-type the calling process is runnning on </td></tr>
<tr><td valign="top"></td><td valign="top"><em>resultlen</em>&nbsp;</td><td><b>out</b> Length (in characters) of the name </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>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g9a54df3ad074f8fc91abddf7666474ea"></a><!-- doxytag: member="moc.h::MOC_Get_version" ref="g9a54df3ad074f8fc91abddf7666474ea" args="(int *version, int *subversion)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Get_version </td>
<td>(</td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>version</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>subversion</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Returns the major and minor version of this MOC-implementation.
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Can be called before MOC_Init and after MOC_Finalize.</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>version</em>&nbsp;</td><td><b>out</b> Major version of this MOC-implementation </td></tr>
<tr><td valign="top"></td><td valign="top"><em>subversion</em>&nbsp;</td><td><b>out</b> Minor version of this MOC-implementation </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>Function returned successfully </td></tr>
</table>
</dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:17 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,381 @@
<!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): Startup &amp; Shutdown</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>Startup &amp; Shutdown<br>
<small>
[<a class="el" href="../../de/d1b/group__environment__main.html">Environmental Management</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Startup &amp; Shutdown:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d8/d9a/group__environment__startup.png" border="0" alt="" usemap="#df/df9/d8_2d9a_2group____environment____startup_map">
<map name="df/df9/d8_2d9a_2group____environment____startup_map">
<area shape="rect" href="../../de/d1b/group__environment__main.html" title="This chapter discusses routines for getting and, where appropriate, setting various..." alt="" coords="5,5,187,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Functions to start and terminate the MOC-execution environment.
<p>
To be able to communicate with other processes every MOC-process needs to setup his MOC-Environment before any MOC-function can be called (there are some exceptions though).<p>
The PPU-process has a special role, because he is the one who starts the SPU-processes. SPU-processes can be added to the MOC-environment by calling <a class="el" href="../../d8/d9a/group__environment__startup.html#geea5b7c117adae78e954f0959fe0c447">MOC_Add_spu_thread</a> with the appropriate SPU-thread-handle (This implementation only supports the embedded binary concept where the SPU-binary is embedded into the PPU-binary and accessed via a handle). The order of calling determines the rank of the SPU-processes. To get the number of total and available SPUs the functions <a class="el" href="../../d8/d9a/group__environment__startup.html#g66028682d3c25b76e25ca57655d47625">MOC_Get_avail_spu_count</a> and <a class="el" href="../../d8/d9a/group__environment__startup.html#g58c038d9978a55d6f346102dfef9acc7">MOC_Get_max_spu_count</a> can be used.<p>
The buffer-size and the size of the message-queues can be set before calling <a class="el" href="../../d8/d9a/group__environment__startup.html#g4d96c98b95bd1a0f6ed8c1e5e6f6c873">MOC_Init</a> on the PPU using <a class="el" href="../../d8/d9a/group__environment__startup.html#g0ac2f7a8d9b93b8da0408a5307f0c925">MOC_Set_buffer_size</a> and <a class="el" href="../../d8/d9a/group__environment__startup.html#g3e83e7a629951e6788a682aad654baf8">MOC_Set_queue_size</a>.<p>
MOC_Init only returns after all processes have called this function and have set up their environment.<p>
If the MOC-environment isn't needed anymore, <a class="el" href="../../d8/d9a/group__environment__startup.html#g0fd366b8b49db32818786c773c4919b8">MOC_Finalize</a> should be called by all MOC-processes. MOC_Finalize only returns after all MOC-processes have called this functions and have shutdown their environments.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>PPU &amp; SPU</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d9a/group__environment__startup.html#g0fd366b8b49db32818786c773c4919b8">MOC_Finalize</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminates MPI execution environment. <a href="#g0fd366b8b49db32818786c773c4919b8"></a><br></td></tr>
<tr><td colspan="2"><br><h2>PPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d9a/group__environment__startup.html#g66028682d3c25b76e25ca57655d47625">MOC_Get_avail_spu_count</a> (int *count)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of available SPUs. <a href="#g66028682d3c25b76e25ca57655d47625"></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="../../d8/d9a/group__environment__startup.html#g58c038d9978a55d6f346102dfef9acc7">MOC_Get_max_spu_count</a> (int *count)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the number of SPUs. <a href="#g58c038d9978a55d6f346102dfef9acc7"></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="../../d8/d9a/group__environment__startup.html#geea5b7c117adae78e954f0959fe0c447">MOC_Add_spu_thread</a> (spe_program_handle_t *phandle, void *argp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adds a SPU-Thread. <a href="#geea5b7c117adae78e954f0959fe0c447"></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="../../d8/d9a/group__environment__startup.html#g0ac2f7a8d9b93b8da0408a5307f0c925">MOC_Set_buffer_size</a> (uint32_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the size of the buffer used for buffered communication. <a href="#g0ac2f7a8d9b93b8da0408a5307f0c925"></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="../../d8/d9a/group__environment__startup.html#g3e83e7a629951e6788a682aad654baf8">MOC_Set_queue_size</a> (uint8_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the size of the message-queues. <a href="#g3e83e7a629951e6788a682aad654baf8"></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="../../d8/d9a/group__environment__startup.html#g9a59090c9d03e89f019e8276d4013c72">MOC_Init</a> (int *argc, char ***argv)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the MPI execution environment. <a href="#g9a59090c9d03e89f019e8276d4013c72"></a><br></td></tr>
<tr><td colspan="2"><br><h2>SPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d9a/group__environment__startup.html#g4d96c98b95bd1a0f6ed8c1e5e6f6c873">MOC_Init</a> (unsigned long long argp, int length, void *buffer)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the MPI execution environment. <a href="#g4d96c98b95bd1a0f6ed8c1e5e6f6c873"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="geea5b7c117adae78e954f0959fe0c447"></a><!-- doxytag: member="moc.h::MOC_Add_spu_thread" ref="geea5b7c117adae78e954f0959fe0c447" args="(spe_program_handle_t *phandle, void *argp)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Add_spu_thread </td>
<td>(</td>
<td class="paramtype">spe_program_handle_t *&nbsp;</td>
<td class="paramname"> <em>phandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>argp</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Adds a SPU-Thread.
<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>PPU-only</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Must be called before calling <a class="el" href="../../d8/d9a/group__environment__startup.html#g4d96c98b95bd1a0f6ed8c1e5e6f6c873">MOC_Init</a><p>
The order of executions defines the order of the ranks of the SPU-Threads</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>phandle</em>&nbsp;</td><td><b>in</b> Handle of the SPE-Program </td></tr>
<tr><td valign="top"></td><td valign="top"><em>argp</em>&nbsp;</td><td><b>in</b> Pointer to some user-defined information in the main-memory </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>MOC_ERR_BUFFER_OVERFLOW</em>&nbsp;</td><td>A Buffer-Overflow occured. Mosst likely you tried to add more SPU-threads than defined by MOC_SPU_THREAD_MAX. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MOC_ERR_INTERN</em>&nbsp;</td><td>Internal Error </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g0fd366b8b49db32818786c773c4919b8"></a><!-- doxytag: member="moc.h::MOC_Finalize" ref="g0fd366b8b49db32818786c773c4919b8" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Finalize </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Terminates MPI execution environment.
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>All processes must call this routine before exiting.</dd></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>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g66028682d3c25b76e25ca57655d47625"></a><!-- doxytag: member="moc.h::MOC_Get_avail_spu_count" ref="g66028682d3c25b76e25ca57655d47625" args="(int *count)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Get_avail_spu_count </td>
<td>(</td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>count</em> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Returns the number of available SPUs.
<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>PPU-only</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Must be called before <a class="el" href="../../d8/d9a/group__environment__startup.html#g4d96c98b95bd1a0f6ed8c1e5e6f6c873">MOC_Init</a><p>
This function should return the count of free SPUs. But this doesn't really works. To get the available SPU-count the function spe_cpu_info_get() from libspe2 with SPE_COUNT_USABLE_SPES-flag is used. However this function can only detect if a SPU-thread is used by the calling function. There seems to be no means to detect SPU-thread used by other applications.</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>count</em>&nbsp;</td><td><b>out</b> number of available SPUs </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="g58c038d9978a55d6f346102dfef9acc7"></a><!-- doxytag: member="moc.h::MOC_Get_max_spu_count" ref="g58c038d9978a55d6f346102dfef9acc7" args="(int *count)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Get_max_spu_count </td>
<td>(</td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>count</em> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Returns the number of SPUs.
<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>PPU-only</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Must be called before <a class="el" href="../../d8/d9a/group__environment__startup.html#g4d96c98b95bd1a0f6ed8c1e5e6f6c873">MOC_Init</a></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>count</em>&nbsp;</td><td><b>out</b> SPU-count </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="g4d96c98b95bd1a0f6ed8c1e5e6f6c873"></a><!-- doxytag: member="moc.h::MOC_Init" ref="g4d96c98b95bd1a0f6ed8c1e5e6f6c873" args="(unsigned long long argp, int length, void *buffer)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Init </td>
<td>(</td>
<td class="paramtype">unsigned long long&nbsp;</td>
<td class="paramname"> <em>argp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>buffer</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Initialize the MPI execution environment.
<p>
<a class="anchor" name="moc_init_spu"></a><p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>SPU-only function</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>All processes must call this routine before executing any MOC-routine.</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>argp</em>&nbsp;</td><td><b>in</b> Pointer to user-defined information in the main-memory </td></tr>
<tr><td valign="top"></td><td valign="top"><em>length</em>&nbsp;</td><td><b>in</b> Length of the user-defined information in bytes </td></tr>
<tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td><b>out</b> Buffer into which the user-defined information should be copied </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>MOC_ERR_NO_MEMORY</em>&nbsp;</td><td>Insufficient Memory. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MOC_ERR_INTERN</em>&nbsp;</td><td>Internal Error </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g9a59090c9d03e89f019e8276d4013c72"></a><!-- doxytag: member="moc.h::MOC_Init" ref="g9a59090c9d03e89f019e8276d4013c72" args="(int *argc, char ***argv)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Init </td>
<td>(</td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ***&nbsp;</td>
<td class="paramname"> <em>argv</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Initialize the MPI execution environment.
<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>PPU-only function</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>All processes must call this routine before executing any MOC-routine.</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>argc</em>&nbsp;</td><td><b>in</b> Pointer to the number of arguments </td></tr>
<tr><td valign="top"></td><td valign="top"><em>argv</em>&nbsp;</td><td><b>in</b> Pointer to the argument vector </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>MOC_ERR_NO_MEMORY</em>&nbsp;</td><td>Insufficient Memory. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>MOC_ERR_INTERN</em>&nbsp;</td><td>Internal Error </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g0ac2f7a8d9b93b8da0408a5307f0c925"></a><!-- doxytag: member="moc.h::MOC_Set_buffer_size" ref="g0ac2f7a8d9b93b8da0408a5307f0c925" args="(uint32_t size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Set_buffer_size </td>
<td>(</td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>size</em> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the size of the buffer used for buffered communication.
<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>PPU-only</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Must be called before <a class="el" href="../../d8/d9a/group__environment__startup.html#g4d96c98b95bd1a0f6ed8c1e5e6f6c873">MOC_Init</a></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>size</em>&nbsp;</td><td>buffer-size </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if success, otherwise error-code </dd></dl>
</div>
</div><p>
<a class="anchor" name="g3e83e7a629951e6788a682aad654baf8"></a><!-- doxytag: member="moc.h::MOC_Set_queue_size" ref="g3e83e7a629951e6788a682aad654baf8" args="(uint8_t size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Set_queue_size </td>
<td>(</td>
<td class="paramtype">uint8_t&nbsp;</td>
<td class="paramname"> <em>size</em> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Sets the size of the message-queues.
<p>
<dl class="attention" compact><dt><b>Attention:</b></dt><dd>PPU-only</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Must be called before <a class="el" href="../../d8/d9a/group__environment__startup.html#g4d96c98b95bd1a0f6ed8c1e5e6f6c873">MOC_Init</a></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>size</em>&nbsp;</td><td>queue-size </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 if success, otherwise error-code </dd></dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:17 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

@@ -0,0 +1,270 @@
<!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): Error-Handling</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>Error-Handling<br>
<small>
[<a class="el" href="../../de/d1b/group__environment__main.html">Environmental Management</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Error-Handling:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d8/da1/group__environment__error.png" border="0" alt="" usemap="#d1/dc5/d8_2da1_2group____environment____error_map">
<map name="d1/dc5/d8_2da1_2group____environment____error_map">
<area shape="rect" href="../../de/d1b/group__environment__main.html" title="This chapter discusses routines for getting and, where appropriate, setting various..." alt="" coords="5,5,187,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This section describes how errors are handled.
<p>
Every function should return an integer if possible. This integer should be MOC_SUCCESS if the operation teminated successfully otherwise an error-code telling the reason of the error is returned.<p>
Every function should return an integer if possible. This integer should be MOC_SUCCESS if the operation teminated successfully otherwise an error-code telling the reason of the error is returned.<p>
For more information see Chapter 7.2 of the MPI 1.3 Standard.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>MPI_ERROR-CLASSES</h2></td></tr>
<tr><td colspan="2">Error-classes defined by the MPI-standard.<p>
Every error-code returned by a MOC-function should belong to an error-class or be an error-class itself. This enables implementation-independend error-handling.<p>
Value-range: 0 = MOC_SUCCESS &lt; MOC_ERR_... &lt;= MOC_ERR_LASTCODE <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8a73ed6676bcf0c0607d98482ca1aca4"></a><!-- doxytag: member="environment_error::MOC_SUCCESS" ref="g8a73ed6676bcf0c0607d98482ca1aca4" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g8a73ed6676bcf0c0607d98482ca1aca4">MOC_SUCCESS</a>&nbsp;&nbsp;&nbsp;0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">No error. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gec3f466bf958e93fc3792674d00bfa06"></a><!-- doxytag: member="environment_error::MOC_ERR_BUFFER" ref="gec3f466bf958e93fc3792674d00bfa06" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gec3f466bf958e93fc3792674d00bfa06">MOC_ERR_BUFFER</a>&nbsp;&nbsp;&nbsp;1000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid buffer pointer. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5adca254d3feab57a4786c17b90d91c4"></a><!-- doxytag: member="environment_error::MOC_ERR_COUNT" ref="g5adca254d3feab57a4786c17b90d91c4" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g5adca254d3feab57a4786c17b90d91c4">MOC_ERR_COUNT</a>&nbsp;&nbsp;&nbsp;2000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid count argument. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge1052e542cdd8d265d99d2950936ba8e"></a><!-- doxytag: member="environment_error::MOC_ERR_TYPE" ref="ge1052e542cdd8d265d99d2950936ba8e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#ge1052e542cdd8d265d99d2950936ba8e">MOC_ERR_TYPE</a>&nbsp;&nbsp;&nbsp;3000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid datatype argument. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4dda6446879941989962c0fbdf4ba0e5"></a><!-- doxytag: member="environment_error::MOC_ERR_TAG" ref="g4dda6446879941989962c0fbdf4ba0e5" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g4dda6446879941989962c0fbdf4ba0e5">MOC_ERR_TAG</a>&nbsp;&nbsp;&nbsp;4000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid tag argument. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gc1e776c0e7cb8c97391dd6ac476295a1"></a><!-- doxytag: member="environment_error::MOC_ERR_COMM" ref="gc1e776c0e7cb8c97391dd6ac476295a1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gc1e776c0e7cb8c97391dd6ac476295a1">MOC_ERR_COMM</a>&nbsp;&nbsp;&nbsp;5000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid communicator. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g88202a7ec7634ce5634b0ead0368c802"></a><!-- doxytag: member="environment_error::MOC_ERR_RANK" ref="g88202a7ec7634ce5634b0ead0368c802" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g88202a7ec7634ce5634b0ead0368c802">MOC_ERR_RANK</a>&nbsp;&nbsp;&nbsp;6000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid rank. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g0f3215c59df79197899fc28f7e9499c8"></a><!-- doxytag: member="environment_error::MOC_ERR_REQUEST" ref="g0f3215c59df79197899fc28f7e9499c8" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g0f3215c59df79197899fc28f7e9499c8">MOC_ERR_REQUEST</a>&nbsp;&nbsp;&nbsp;7000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid request (handle). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5ea365a8f03f9c490adb267ae677157c"></a><!-- doxytag: member="environment_error::MOC_ERR_ROOT" ref="g5ea365a8f03f9c490adb267ae677157c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g5ea365a8f03f9c490adb267ae677157c">MOC_ERR_ROOT</a>&nbsp;&nbsp;&nbsp;8000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid root. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9dadfbad2e34895bfe793e87ef476807"></a><!-- doxytag: member="environment_error::MOC_ERR_GROUP" ref="g9dadfbad2e34895bfe793e87ef476807" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g9dadfbad2e34895bfe793e87ef476807">MOC_ERR_GROUP</a>&nbsp;&nbsp;&nbsp;9000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid group. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g37e46a78874b2078225de0260f4666a8"></a><!-- doxytag: member="environment_error::MOC_ERR_OP" ref="g37e46a78874b2078225de0260f4666a8" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g37e46a78874b2078225de0260f4666a8">MOC_ERR_OP</a>&nbsp;&nbsp;&nbsp;10000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid operation. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g36581c314c20ec3f8286a61784b41bd9"></a><!-- doxytag: member="environment_error::MOC_ERR_TOPOLOGY" ref="g36581c314c20ec3f8286a61784b41bd9" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g36581c314c20ec3f8286a61784b41bd9">MOC_ERR_TOPOLOGY</a>&nbsp;&nbsp;&nbsp;11000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid topology. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g91dd648378f64ca3dff7af4750c79608"></a><!-- doxytag: member="environment_error::MOC_ERR_DIMS" ref="g91dd648378f64ca3dff7af4750c79608" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g91dd648378f64ca3dff7af4750c79608">MOC_ERR_DIMS</a>&nbsp;&nbsp;&nbsp;12000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid dimension argument. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g734aa5985b6d809690f10979ff44785c"></a><!-- doxytag: member="environment_error::MOC_ERR_ARG" ref="g734aa5985b6d809690f10979ff44785c" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g734aa5985b6d809690f10979ff44785c">MOC_ERR_ARG</a>&nbsp;&nbsp;&nbsp;13000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalid argument of some other kind. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge00d9070a65099e436eb470ecb45ce35"></a><!-- doxytag: member="environment_error::MOC_ERR_UNKNOWN" ref="ge00d9070a65099e436eb470ecb45ce35" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#ge00d9070a65099e436eb470ecb45ce35">MOC_ERR_UNKNOWN</a>&nbsp;&nbsp;&nbsp;14000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unknown error. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g333d5841713c32c0ecf1cc85f0077744"></a><!-- doxytag: member="environment_error::MOC_ERR_TRUNCATE" ref="g333d5841713c32c0ecf1cc85f0077744" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g333d5841713c32c0ecf1cc85f0077744">MOC_ERR_TRUNCATE</a>&nbsp;&nbsp;&nbsp;15000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Message truncated on receive. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf1353d5719f5e14d8d89d72801e40144"></a><!-- doxytag: member="environment_error::MOC_ERR_OTHER" ref="gf1353d5719f5e14d8d89d72801e40144" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gf1353d5719f5e14d8d89d72801e40144">MOC_ERR_OTHER</a>&nbsp;&nbsp;&nbsp;16000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Known error not in this list. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g05b3a70831c823a59014c4853a76ca7e"></a><!-- doxytag: member="environment_error::MOC_ERR_INTERN" ref="g05b3a70831c823a59014c4853a76ca7e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g05b3a70831c823a59014c4853a76ca7e">MOC_ERR_INTERN</a>&nbsp;&nbsp;&nbsp;17000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal MOC (implementation) error. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g941c5327e6430023994f32d25584059e"></a><!-- doxytag: member="environment_error::MOC_ERR_IN_STATUS" ref="g941c5327e6430023994f32d25584059e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g941c5327e6430023994f32d25584059e">MOC_ERR_IN_STATUS</a>&nbsp;&nbsp;&nbsp;18000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Error code is in status. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g878ba1491199d12b999e1cb24020ddba"></a><!-- doxytag: member="environment_error::MOC_ERR_PENDING" ref="g878ba1491199d12b999e1cb24020ddba" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g878ba1491199d12b999e1cb24020ddba">MOC_ERR_PENDING</a>&nbsp;&nbsp;&nbsp;19000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pending request. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gf902162b08ca55cd57455ee66e8e73d7"></a><!-- doxytag: member="environment_error::MOC_ERR_LASTCODE" ref="gf902162b08ca55cd57455ee66e8e73d7" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gf902162b08ca55cd57455ee66e8e73d7">MOC_ERR_LASTCODE</a>&nbsp;&nbsp;&nbsp;20000</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Last error code. <br></td></tr>
<tr><td colspan="2"><br><h2>MOC-Error-Codes</h2></td></tr>
<tr><td colspan="2">Implementation dependent Error-Codes. <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb5f8a2dbcd2a4b257dcedd8f08ab6367"></a><!-- doxytag: member="environment_error::MOC_ERR_NOT_IMPLEMENTED" ref="gb5f8a2dbcd2a4b257dcedd8f08ab6367" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gb5f8a2dbcd2a4b257dcedd8f08ab6367">MOC_ERR_NOT_IMPLEMENTED</a>&nbsp;&nbsp;&nbsp;17001</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function not implemented. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb41314dc085e915eab769ff2a2958061"></a><!-- doxytag: member="environment_error::MOC_ERR_BUFFER_OVERFLOW" ref="gb41314dc085e915eab769ff2a2958061" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gb41314dc085e915eab769ff2a2958061">MOC_ERR_BUFFER_OVERFLOW</a>&nbsp;&nbsp;&nbsp;17002</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Internal Buffer Overflow. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gfd59894aba31d32eeff506d8df838089"></a><!-- doxytag: member="environment_error::MOC_ERR_NO_MEMORY" ref="gfd59894aba31d32eeff506d8df838089" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gfd59894aba31d32eeff506d8df838089">MOC_ERR_NO_MEMORY</a>&nbsp;&nbsp;&nbsp;17003</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Insufficient Memory. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gb3b13f443f9a869ef4200334eb8792d0"></a><!-- doxytag: member="environment_error::MOC_ERR_NO_BUFFER" ref="gb3b13f443f9a869ef4200334eb8792d0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#gb3b13f443f9a869ef4200334eb8792d0">MOC_ERR_NO_BUFFER</a>&nbsp;&nbsp;&nbsp;17004</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Insufficient Buffer-Space. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g5a536510d86dbad4f4bacf1dc3f08c47"></a><!-- doxytag: member="environment_error::MOC_ERR_MESSAGE_EXHAUSTED" ref="g5a536510d86dbad4f4bacf1dc3f08c47" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g5a536510d86dbad4f4bacf1dc3f08c47">MOC_ERR_MESSAGE_EXHAUSTED</a>&nbsp;&nbsp;&nbsp;17005</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">No further messages possible. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8dd6c4666118378bdd3cb6cfeaeea5b1"></a><!-- doxytag: member="environment_error::MOC_ERR_BAD_ALIGNMENT" ref="g8dd6c4666118378bdd3cb6cfeaeea5b1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g8dd6c4666118378bdd3cb6cfeaeea5b1">MOC_ERR_BAD_ALIGNMENT</a>&nbsp;&nbsp;&nbsp;16001</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Base-Adress of Buffer isn't 16-byte aligned. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9200eb7b0bf9f5605bc92943fee2cbdd"></a><!-- doxytag: member="environment_error::MOC_ERR_BAD_SIZE" ref="g9200eb7b0bf9f5605bc92943fee2cbdd" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g9200eb7b0bf9f5605bc92943fee2cbdd">MOC_ERR_BAD_SIZE</a>&nbsp;&nbsp;&nbsp;16002</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bad Size (probably no multiple of 16). <br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g4f071cd9d3fc73bd6e4542a9abbb1610"></a><!-- doxytag: member="environment_error::MOC_MAX_ERROR_STRING" ref="g4f071cd9d3fc73bd6e4542a9abbb1610" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html#g4f071cd9d3fc73bd6e4542a9abbb1610">MOC_MAX_ERROR_STRING</a>&nbsp;&nbsp;&nbsp;255</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximal length of error-text. <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="../../d8/da1/group__environment__error.html#ge79331149c12155246d206d5bb7a7729">MOC_Error_string</a> (int errorcode, char *string, int *resultlen)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns an error-text for a given error code. <a href="#ge79331149c12155246d206d5bb7a7729"></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="../../d8/da1/group__environment__error.html#g46d1823f8eb05511d5b98ecdeafa33b2">MOC_Error_class</a> (int errorcode, int *errorclass)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts an error code into an error class. <a href="#g46d1823f8eb05511d5b98ecdeafa33b2"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g46d1823f8eb05511d5b98ecdeafa33b2"></a><!-- doxytag: member="moc.h::MOC_Error_class" ref="g46d1823f8eb05511d5b98ecdeafa33b2" args="(int errorcode, int *errorclass)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Error_class </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>errorcode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>errorclass</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Converts an error code into an error class.
<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>errorcode</em>&nbsp;</td><td><b>in</b> Error code returned by an MPI routine </td></tr>
<tr><td valign="top"></td><td valign="top"><em>errorclass</em>&nbsp;</td><td><b>out</b> Error class associated with errorcode </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>MOC_ERR_COMM</em>&nbsp;</td><td>Invalid argument. Most likely an error-code out of range. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="ge79331149c12155246d206d5bb7a7729"></a><!-- doxytag: member="moc.h::MOC_Error_string" ref="ge79331149c12155246d206d5bb7a7729" args="(int errorcode, char *string, int *resultlen)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Error_string </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>errorcode</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&nbsp;</td>
<td class="paramname"> <em>string</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&nbsp;</td>
<td class="paramname"> <em>resultlen</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Returns an error-text for a given error code.
<p>
The error-text is already terminated by '\0'.<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>errorcode</em>&nbsp;</td><td><b>in</b> Error code returned by an MPI routine </td></tr>
<tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td><b>out</b> Text that corresponds to the errorcode </td></tr>
<tr><td valign="top"></td><td valign="top"><em>resultlen</em>&nbsp;</td><td><b>out</b> Length of string </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>MOC_ERR_ARG</em>&nbsp;</td><td>Invalid argument. Most likely an error-code out of range. </td></tr>
</table>
</dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:18 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,97 @@
<!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): Timers and Synchronization</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>Timers and Synchronization<br>
<small>
[<a class="el" href="../../de/d1b/group__environment__main.html">Environmental Management</a>]</small>
</h1>
<p>
<div class="dynheader">
Collaboration diagram for Timers and Synchronization:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d8/da6/group__environment__timer.png" border="0" alt="" usemap="#d0/d16/d8_2da6_2group____environment____timer_map">
<map name="d0/d16/d8_2da6_2group____environment____timer_map">
<area shape="rect" href="../../de/d1b/group__environment__main.html" title="This chapter discusses routines for getting and, where appropriate, setting various..." alt="" coords="5,5,187,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Functions to measure time.
<p>
On the PPU gettimeofday from time.h is used. On the SPU either also gettimeofday or the spu-timer-library is used depending on the configuration during compilation of the MOC-library. When gettimeofday is used on the SPU the time is global in the MOC-environment with the disadvantage that the SPU-threads get their times from the PPU using DMA causing inaccuracy and delays.
<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">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da6/group__environment__timer.html#g415b17505f06a12f26c6aa735d00158f">MOC_Wtime</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a floating-point number of seconds, representing elapsed wall-clock time since some time in the past. <a href="#g415b17505f06a12f26c6aa735d00158f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da6/group__environment__timer.html#gc846a7a21aeafdc5e960e91cb7d602be">MOC_Wtick</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the resolution of Moc_Wtime in seconds. <a href="#gc846a7a21aeafdc5e960e91cb7d602be"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="gc846a7a21aeafdc5e960e91cb7d602be"></a><!-- doxytag: member="moc.h::MOC_Wtick" ref="gc846a7a21aeafdc5e960e91cb7d602be" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double MOC_Wtick </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Returns the resolution of Moc_Wtime in seconds.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>resolution in seconds. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g415b17505f06a12f26c6aa735d00158f"></a><!-- doxytag: member="moc.h::MOC_Wtime" ref="g415b17505f06a12f26c6aa735d00158f" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double MOC_Wtime </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"> </td>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Returns a floating-point number of seconds, representing elapsed wall-clock time since some time in the past.
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>wall-clock time in seconds. </dd></dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:18 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

+755
View File
@@ -0,0 +1,755 @@
<!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): Direct Memory Access</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>Direct Memory Access<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 Direct Memory Access:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../d9/d16/group__dma__access.png" border="0" alt="" usemap="#d5/d02/d9_2d16_2group____dma____access_map">
<map name="d5/d02/d9_2d16_2group____dma____access_map">
<area shape="rect" href="../../d3/d9e/group__end__user.html" title="This section describes the public API provided by the MOC&#45;library." alt="" coords="7,5,172,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Functions which use DMA to transfer Data.
<p>
The operations defined in this section provide simple means to use Direct Memory Access (DMA).<p>
The MPI-standard assumes a distributed memory architecture, where active participation of the sending and the receiving processes is required. But the Cell Broadband Engine is a distributed shared memory architecture which provides a common address space and DMA-Operations enabling processes to write data directly into the memory of an remote process without active participation of the receiving process. DMA is faster than Send-Receive but more complicated to handle, and so there are some functions provided to enable the advantages of DMA and to hide as much complexity as possible. So the user doesn't have to care about the upper-limit of an DMA-transfer and in get-operations the data-size doesn't have to be a multiple of 16-byte. However the data-address should be at least 16-byte aligned and in put-operations the data-size has to be a multiple of 16-byte.<p>
There are two kind of addresses. Local-store addresses are used on the SPUs and are only valid in context of a specific SPU. Effective addresses define a common address-space and are used on the PPU. Functions to translate between those address types are provided.<p>
DMA-operations can be blocking or non-blocking. The status of non-blocking DMA-calls can be requested by using <a class="el" href="../../d7/d62/group__p2p__imm.html#g5ee1f1c1275717d2dc78d6058ff81e9e">MOC_Test</a> and <a class="el" href="../../d7/d62/group__p2p__imm.html#g68043e4a0893fdc25c67f87bae1015a6">MOC_Wait</a>.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Every non-blocking DMA 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>PPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d16/group__dma__access.html#g3716465d42f20379bbf65002ecd9e448">MOC_Get_data</a> (void *target, uint32_t source, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int dest)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper-function for a blocking DMA-get operation. <a href="#g3716465d42f20379bbf65002ecd9e448"></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="../../d9/d16/group__dma__access.html#ge07f4b35da50be472772f9d3a426669e">MOC_Put_data</a> (void *source, uint32_t target, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int src)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper-function for a blocking DMA-put operation. <a href="#ge07f4b35da50be472772f9d3a426669e"></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="../../d9/d16/group__dma__access.html#g08f0af30f2e0e6840ec2be5ca93fd14f">MOC_IGet_data</a> (void *target, uint32_t source, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int dest, <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">Wrapper-function for a non-blocking DMA-get operation. <a href="#g08f0af30f2e0e6840ec2be5ca93fd14f"></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="../../d9/d16/group__dma__access.html#g1fd9a141352dd4344e20f1bde778d265">MOC_IPut_data</a> (void *source, uint32_t target, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int src, <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">Wrapper-function for a non-blocking DMA-put operation. <a href="#g1fd9a141352dd4344e20f1bde778d265"></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="../../d9/d16/group__dma__access.html#g40b39bb7c07bc07d783c85b10f0bf60f">MOC_Translate_EA_to_LS</a> (uint64_t ea, int rank, uint32_t *ls)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Translates an effective-address of a SPU into the corresponding local-store address. <a href="#g40b39bb7c07bc07d783c85b10f0bf60f"></a><br></td></tr>
<tr><td colspan="2"><br><h2>SPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d16/group__dma__access.html#g7af2715950a0ab51937a63c38756b85b">MOC_Get_data</a> (void *target, uint64_t source, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper-function for a blocking DMA-get operation. <a href="#g7af2715950a0ab51937a63c38756b85b"></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="../../d9/d16/group__dma__access.html#g1baab78008563718380887026cf9444f">MOC_Put_data</a> (void *source, uint64_t target, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper-function for a blocking DMA-put operation. <a href="#g1baab78008563718380887026cf9444f"></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="../../d9/d16/group__dma__access.html#g9ff1639ada54f14994b7d199fc2ad984">MOC_IGet_data</a> (void *target, uint64_t source, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, <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">Wrapper-function for a non-blocking DMA-get operation. <a href="#g9ff1639ada54f14994b7d199fc2ad984"></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="../../d9/d16/group__dma__access.html#g3ee8513f7c0ebb782a3b0d17b8135693">MOC_IPut_data</a> (void *source, uint64_t target, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, <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">Wrapper-function for a non-blocking DMA-put operation. <a href="#g3ee8513f7c0ebb782a3b0d17b8135693"></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="../../d9/d16/group__dma__access.html#g1ee1f004fff19c3338f2de9d96471693">MOC_Translate_LS_to_EA</a> (void *ls, uint64_t *ea)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Translates a local-store address of the calling SPU into the corresponding effective-address. <a href="#g1ee1f004fff19c3338f2de9d96471693"></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="../../d9/d16/group__dma__access.html#g0ba7b00fbebaabb8b39737a7c13efc67">MOC_Wait_data</a> (<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">Waits till a MOC_IGet_data or IMOC_IPut_data is completed. <a href="#g0ba7b00fbebaabb8b39737a7c13efc67"></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="../../d9/d16/group__dma__access.html#g342d07658aae4252a2e2cd6a8cc185dd">MOC_Test_data</a> (<a class="el" href="../../db/d17/structmoc__request__struct.html">MOC_Request</a> *request, int *flag)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tests if a MOC_IGet_data or IMOC_IPut_data is completed. <a href="#g342d07658aae4252a2e2cd6a8cc185dd"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g7af2715950a0ab51937a63c38756b85b"></a><!-- doxytag: member="moc_dma_spu.h::MOC_Get_data" ref="g7af2715950a0ab51937a63c38756b85b" args="(void *target, uint64_t source, int count, MOC_Datatype datatype)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Get_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&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>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><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Wrapper-function for a blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned.<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>target</em>&nbsp;</td><td><b>out</b> pointer to buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ea-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>datatype</em>&nbsp;</td><td><b>in</b> Type of Elements </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="g3716465d42f20379bbf65002ecd9e448"></a><!-- doxytag: member="moc_dma_ppu.h::MOC_Get_data" ref="g3716465d42f20379bbf65002ecd9e448" args="(void *target, uint32_t source, int count, MOC_Datatype datatype, int dest)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Get_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&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>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><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Wrapper-function for a blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned.<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>target</em>&nbsp;</td><td><b>out</b> pointer to buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> local-store address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </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 source spe </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="g9ff1639ada54f14994b7d199fc2ad984"></a><!-- doxytag: member="moc_dma_spu.h::MOC_IGet_data" ref="g9ff1639ada54f14994b7d199fc2ad984" args="(void *target, uint64_t source, int count, MOC_Datatype datatype, MOC_Request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_IGet_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&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>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"><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>
Wrapper-function for a non-blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned. Operation-completion can be derived with MOC_Test and MOC_Wait.<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>target</em>&nbsp;</td><td><b>out</b> pointer to buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> ea-address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </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>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>
</div>
</div><p>
<a class="anchor" name="g08f0af30f2e0e6840ec2be5ca93fd14f"></a><!-- doxytag: member="moc_dma_ppu.h::MOC_IGet_data" ref="g08f0af30f2e0e6840ec2be5ca93fd14f" args="(void *target, uint32_t source, int count, MOC_Datatype datatype, int dest, MOC_Request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_IGet_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>target</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&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>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"><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>
Wrapper-function for a non-blocking DMA-get operation.
<p>
Data can be of any size, constraints of low-level DMA-functions are dealt by this function. However data-addresses have to be at least 16-byte aligned. Operation-completion can be derived with MOC_Test and MOC_Wait.<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>target</em>&nbsp;</td><td><b>out</b> pointer to buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td><b>in</b> local-store address of data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </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 source spe </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>
</div>
</div><p>
<a class="anchor" name="g3ee8513f7c0ebb782a3b0d17b8135693"></a><!-- doxytag: member="moc_dma_spu.h::MOC_IPut_data" ref="g3ee8513f7c0ebb782a3b0d17b8135693" args="(void *source, uint64_t target, int count, MOC_Datatype datatype, MOC_Request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_IPut_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>target</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"><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>
Wrapper-function for a non-blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned. Operation-completion can be derived with MOC_Test and MOC_Wait.<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>&nbsp;</td><td><b>in</b> pointer to data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ea-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </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>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>
</div>
</div><p>
<a class="anchor" name="g1fd9a141352dd4344e20f1bde778d265"></a><!-- doxytag: member="moc_dma_ppu.h::MOC_IPut_data" ref="g1fd9a141352dd4344e20f1bde778d265" args="(void *source, uint32_t target, int count, MOC_Datatype datatype, int src, MOC_Request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_IPut_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>target</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>src</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>
Wrapper-function for a non-blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned. Operation-completion can be derived with MOC_Test and MOC_Wait.<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>&nbsp;</td><td><b>in</b> pointer to data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> local-store address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </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>src</em>&nbsp;</td><td><b>in</b> rank of source-SPE </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>
</div>
</div><p>
<a class="anchor" name="g1baab78008563718380887026cf9444f"></a><!-- doxytag: member="moc_dma_spu.h::MOC_Put_data" ref="g1baab78008563718380887026cf9444f" args="(void *source, uint64_t target, int count, MOC_Datatype datatype)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Put_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>target</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><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Wrapper-function for a blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned.<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>&nbsp;</td><td><b>in</b> pointer to data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> ea-address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </td></tr>
<tr><td valign="top"></td><td valign="top"><em>datatype</em>&nbsp;</td><td><b>in</b> Type of Elements </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="ge07f4b35da50be472772f9d3a426669e"></a><!-- doxytag: member="moc_dma_ppu.h::MOC_Put_data" ref="ge07f4b35da50be472772f9d3a426669e" args="(void *source, uint32_t target, int count, MOC_Datatype datatype, int src)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Put_data </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>source</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&nbsp;</td>
<td class="paramname"> <em>target</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>src</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Wrapper-function for a blocking DMA-put operation.
<p>
Data-size should be a multiple of 16 because of low-level constraints, but there is no upper limit of transfer-size. Data-addresses have to be at least 16-byte aligned.<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>&nbsp;</td><td><b>in</b> pointer to data </td></tr>
<tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td><b>in</b> local-store address of buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>in</b> size of data in byte </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>src</em>&nbsp;</td><td><b>in</b> rank of source-SPE </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="g342d07658aae4252a2e2cd6a8cc185dd"></a><!-- doxytag: member="moc_dma_ppu.h::MOC_Test_data" ref="g342d07658aae4252a2e2cd6a8cc185dd" args="(MOC_Request *request, int *flag)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Test_data </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><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 MOC_IGet_data or IMOC_IPut_data is 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> request-handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>flag</em>&nbsp;</td><td><b>out</b> true if operation is completed </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
</div>
</div><p>
<a class="anchor" name="g40b39bb7c07bc07d783c85b10f0bf60f"></a><!-- doxytag: member="moc_dma_ppu.h::MOC_Translate_EA_to_LS" ref="g40b39bb7c07bc07d783c85b10f0bf60f" args="(uint64_t ea, int rank, uint32_t *ls)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Translate_EA_to_LS </td>
<td>(</td>
<td class="paramtype">uint64_t&nbsp;</td>
<td class="paramname"> <em>ea</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>rank</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t *&nbsp;</td>
<td class="paramname"> <em>ls</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Translates an effective-address of a SPU into the corresponding local-store address.
<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>ea</em>&nbsp;</td><td><b>in</b> effective-address </td></tr>
<tr><td valign="top"></td><td valign="top"><em>rank</em>&nbsp;</td><td><b>in</b> rank of SPU </td></tr>
<tr><td valign="top"></td><td valign="top"><em>ls</em>&nbsp;</td><td><b>out</b> local-store address </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g1ee1f004fff19c3338f2de9d96471693"></a><!-- doxytag: member="moc_dma_spu.h::MOC_Translate_LS_to_EA" ref="g1ee1f004fff19c3338f2de9d96471693" args="(void *ls, uint64_t *ea)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Translate_LS_to_EA </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>ls</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t *&nbsp;</td>
<td class="paramname"> <em>ea</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Translates a local-store address of the calling SPU into the corresponding effective-address.
<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>ls</em>&nbsp;</td><td><b>in</b> local-store address </td></tr>
<tr><td valign="top"></td><td valign="top"><em>ea</em>&nbsp;</td><td><b>out</b> effective-address </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g0ba7b00fbebaabb8b39737a7c13efc67"></a><!-- doxytag: member="moc_dma_ppu.h::MOC_Wait_data" ref="g0ba7b00fbebaabb8b39737a7c13efc67" args="(MOC_Request *request)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Wait_data </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;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Waits till a MOC_IGet_data or IMOC_IPut_data is 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> request-handle </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 when success otherwise error-code </dd></dl>
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:22 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

+107
View File
@@ -0,0 +1,107 @@
<!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): Return Status</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>Return Status<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 Return Status:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../da/df0/group__p2p__status.png" border="0" alt="" usemap="#d0/d72/da_2df0_2group____p2p____status_map">
<map name="d0/d72/da_2df0_2group____p2p____status_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>
Receiving operations return a status-object holding information about the message.
<p>
There are three Fields of the status-Struct which are predefined by the MPI-Standard: MOC_SOURCE gives the message-source, MOC_TAG gives the message-tag and MOC_ERROR gives an error-code (not implemented by MOC at the moment). To get the number of element the function <a class="el" href="../../da/df0/group__p2p__status.html#g0766bc2817b17dcdc8b7e830828fe118">MOC_Get_count</a> should be used.
<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="../../dd/d7a/structMOC__Status__struct.html">MOC_Status_struct</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure holding information about a received message. <a href="../../dd/d7a/structMOC__Status__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"><a class="anchor" name="g5eab4f2552eba523a97d1c1fac826282"></a><!-- doxytag: member="p2p_status::MOC_Status" ref="g5eab4f2552eba523a97d1c1fac826282" args="" -->
typedef struct <a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status_struct</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/df0/group__p2p__status.html#g5eab4f2552eba523a97d1c1fac826282">MOC_Status</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Structure holding information about a received message. <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="../../da/df0/group__p2p__status.html#g0766bc2817b17dcdc8b7e830828fe118">MOC_Get_count</a> (<a class="el" href="../../dd/d7a/structMOC__Status__struct.html">MOC_Status</a> *status, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int *count)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the number of received elements which is encoded in MOC_Status. <a href="#g0766bc2817b17dcdc8b7e830828fe118"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g0766bc2817b17dcdc8b7e830828fe118"></a><!-- doxytag: member="moc.h::MOC_Get_count" ref="g0766bc2817b17dcdc8b7e830828fe118" args="(MOC_Status *status, MOC_Datatype datatype, int *count)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Get_count </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>
</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>count</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Gets the number of received elements which is encoded in MOC_Status.
<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>status</em>&nbsp;</td><td><b>in</b> status-object </td></tr>
<tr><td valign="top"></td><td valign="top"><em>datatype</em>&nbsp;</td><td><b>in</b> Type of received elements </td></tr>
<tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td><b>out</b> Number of received elements </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:19 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,54 @@
<!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): moc_request_struct Struct Reference</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 class="current"><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="../../functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>moc_request_struct Struct Reference<br>
<small>
[<a class="el" href="../../d7/d62/group__p2p__imm.html">Non-Blocking Communication</a>]</small>
</h1><!-- doxytag: class="moc_request_struct" --><div class="dynheader">
Collaboration diagram for moc_request_struct:</div>
<div class="dynsection">
<p><center><img src="../../df/dc6/structmoc__request__struct__coll__graph.png" border="0" usemap="#d2/d5b/moc__request__struct__coll__map" alt="Collaboration graph"></center>
<center><font size="2">[<a target="top" href="../../graph_legend.html">legend</a>]</font></center></div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Communication-Request (Handle). <table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="56ab14d3df6e8c232e66aec78be949f3"></a><!-- doxytag: member="moc_request_struct::request_type" ref="56ab14d3df6e8c232e66aec78be949f3" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>request_type</b></td></tr>
<tr><td class="memItemLeft" nowrap><a class="anchor" name="4866692f69dd969c5476165b7372b185"></a><!-- doxytag: member="moc_request_struct::request_data" ref="4866692f69dd969c5476165b7372b185" args="" -->
union {</td></tr>
<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;imoc_dma_request&nbsp;&nbsp;&nbsp;<b>dma_data</b></td></tr>
<tr><td class="memItemLeft" nowrap>&nbsp;&nbsp;&nbsp;imoc_issend_request&nbsp;&nbsp;&nbsp;<b>issend_request</b></td></tr>
<tr><td class="memItemLeft" nowrap valign="top">}&nbsp;</td><td class="memItemRight" valign="bottom"><b>request_data</b></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:23 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>
+143
View File
@@ -0,0 +1,143 @@
<!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): Collective 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>
</ul>
</div>
</div>
<div class="contents">
<h1>Collective 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 Collective Communication:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../db/dc2/group__broadcast.png" border="0" alt="" usemap="#d9/dff/db_2dc2_2group____broadcast_map">
<map name="d9/dff/db_2dc2_2group____broadcast_map">
<area shape="rect" href="../../d3/d9e/group__end__user.html" title="This section describes the public API provided by the MOC&#45;library." alt="" coords="7,5,172,32"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Communication that involves a group of processes.
<p>
A collective operation is normally executed by having all processes in the group call the communication routine, with matching arguments. Since there are no means for creating groups currently implemented, the only available groups are MOC_COMM_WORLD and MOC_COMM_SELF.
<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="../../db/dc2/group__broadcast.html#gfd25e9a19a1ad4032fdf3703531167d6">MOC_Bcast</a> (void *buffer, int count, <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> datatype, int root, <a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Broadcasts a message from the process with rank "root" to all other processes of the group. <a href="#gfd25e9a19a1ad4032fdf3703531167d6"></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="../../db/dc2/group__broadcast.html#g110b00d5a4d9f970ddf8e9bd4c2d8834">MOC_Barrier</a> (<a class="el" href="../../d1/dd1/group__comm__mgt.html#g3d2b8a9af65bff5f79d02bda13616767">MOC_Comm</a> comm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Blocks the caller until all processes in the communicator have called it; that is, the call returns at any process only after all members of the communicator have entered the call. <a href="#g110b00d5a4d9f970ddf8e9bd4c2d8834"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g110b00d5a4d9f970ddf8e9bd4c2d8834"></a><!-- doxytag: member="moc.h::MOC_Barrier" ref="g110b00d5a4d9f970ddf8e9bd4c2d8834" args="(MOC_Comm comm)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Barrier </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>
<td>&nbsp;)&nbsp;</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Blocks the caller until all processes in the communicator have called it; that is, the call returns at any process only after all members of the communicator have entered the call.
<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>comm</em>&nbsp;</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>&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="gfd25e9a19a1ad4032fdf3703531167d6"></a><!-- doxytag: member="moc.h::MOC_Bcast" ref="gfd25e9a19a1ad4032fdf3703531167d6" args="(void *buffer, int count, MOC_Datatype datatype, int root, MOC_Comm comm)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MOC_Bcast </td>
<td>(</td>
<td class="paramtype">void *&nbsp;</td>
<td class="paramname"> <em>buffer</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>root</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><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Broadcasts a message from the process with rank "root" to all other processes of the group.
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>The broadcast-message can also be received by a MOC_Recv using MOC_BCAST_TAG.</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>buffer</em>&nbsp;</td><td><b>inout</b> starting address of buffer </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 or received </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 or received </td></tr>
<tr><td valign="top"></td><td valign="top"><em>root</em>&nbsp;</td><td><b>in</b> rank of the process who sends the broadcast-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>
</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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

+659
View File
@@ -0,0 +1,659 @@
<!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): Datatypes</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>Datatypes<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 Datatypes:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../dc/d6e/group__p2p__datatype.png" border="0" alt="" usemap="#dc/d96/dc_2d6e_2group____p2p____datatype_map">
<map name="dc/d96/dc_2d6e_2group____p2p____datatype_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>
Datatypes supported by MOC.
<p>
There are the normal datatypes defined by C (char, short, int, ...) and special vector-datatypes used by the Cell Broadband Engine. For more information see "C/C++ Language Extensions for Cell Broadband Engine Architecture - Version 2.5" chapter 1.1.
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>PPU &amp; SPU</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef uint8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Typedef defining MOC_Datatype. <a href="#gb4e45f15c08578bd3fc97c0cca2a509a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g6462a2cd9ec6c0cb9445760ac396ec72">MOC_BYTE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)0+0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">MOC_Byte is a special datatype. <a href="#g6462a2cd9ec6c0cb9445760ac396ec72"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g022696d5df791525793150cc3fa1404d">MOC_CHAR</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)0+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype char. <a href="#g022696d5df791525793150cc3fa1404d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g11c8f43b6a61c5d1fe0950c51b2658d7">MOC_UNSIGNED_CHAR</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)0+2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype unsigned char. <a href="#g11c8f43b6a61c5d1fe0950c51b2658d7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g448c8046fc3be4e6a5937953e660ef23">MOC_SHORT</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)16+0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype short. <a href="#g448c8046fc3be4e6a5937953e660ef23"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g7ff42e830b5855f22684868c215b9678">MOC_UNSIGNED_SHORT</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)16+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype unsigned short. <a href="#g7ff42e830b5855f22684868c215b9678"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gc928d8f53f09f8405d6de2244b506d61">MOC_INT</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype int. <a href="#gc928d8f53f09f8405d6de2244b506d61"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g367725451f261222bc8035b593c1dd84">MOC_UNSIGNED</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype unsigned int. <a href="#g367725451f261222bc8035b593c1dd84"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g2a011db78a35d63a6927a5713d1d8f63">MOC_LONG_LONG</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype long long. <a href="#g2a011db78a35d63a6927a5713d1d8f63"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#ga99c6a2d2d560a49f7a09cf4ee20f440">MOC_UNSIGNED_LONG_LONG</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype unsigned long long. <a href="#ga99c6a2d2d560a49f7a09cf4ee20f440"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gae9a34cd3ac381b9b7427db7902e06ba">MOC_FLOAT</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype float. <a href="#gae9a34cd3ac381b9b7427db7902e06ba"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g3ea523671eaeaf32160ddc4b447e47fa">MOC_DOUBLE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+5)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype double. <a href="#g3ea523671eaeaf32160ddc4b447e47fa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g6e4b8858f8baa34cd254610445292e2c">MOC_VEC_UCHAR16</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector unsigned char (vec_uchar16). <a href="#g6e4b8858f8baa34cd254610445292e2c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g15fefb339c331120b7166c45a21e90d5">MOC_VEC_USHORT8</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector unsigned short (vec_ushort8). <a href="#g15fefb339c331120b7166c45a21e90d5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gcca02cda68af06c8d3523ddc1884bbaf">MOC_VEC_UINT4</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector unsigned int (vec_uint4). <a href="#gcca02cda68af06c8d3523ddc1884bbaf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g46f26a2dc0bd937a492890408eb0096a">MOC_VEC_CHAR16</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+4)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector signed char (vec_char16). <a href="#g46f26a2dc0bd937a492890408eb0096a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g7c1826e9569a0413783a3cda94701e5e">MOC_VEC_SHORT8</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+3)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector signed short (vec_short8). <a href="#g7c1826e9569a0413783a3cda94701e5e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g323f5fd7cc11fa35455060816adcdf13">MOC_VEC_INT4</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+5)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector signed int (vec_int4). <a href="#g323f5fd7cc11fa35455060816adcdf13"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g257aaa00d63f4bdbe56428c8687a070a">MOC_VEC_FLOAT4</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+6)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector float (vec_float4). <a href="#g257aaa00d63f4bdbe56428c8687a070a"></a><br></td></tr>
<tr><td colspan="2"><br><h2>PPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g38cae657eabde06ce8e851cea1239398">MOC_LONG</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype long. <a href="#g38cae657eabde06ce8e851cea1239398"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb57eeb637cbd234015a8411061e77dac">MOC_UNSIGNED_LONG</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+3)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype unsigned long. <a href="#gb57eeb637cbd234015a8411061e77dac"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gdc8da17a061cafcea7b90d36154e9e51">MOC_VEC_BCHAR16</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector bool char (vec_bchar16). <a href="#gdc8da17a061cafcea7b90d36154e9e51"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gd63c2823c8de31536a3e7557fb62cb84">MOC_VEC_BSHORT8</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector bool short (vec_bshort8). <a href="#gd63c2823c8de31536a3e7557fb62cb84"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gae8ee669e938fa84641bac5aa2f85976">MOC_VEC_PIXEL8</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector pixel (vec_pixel8). <a href="#gae8ee669e938fa84641bac5aa2f85976"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#ga7577143580aabf3f4bac65352e53993">MOC_VEC_BINT4</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector bool int (vec_bint4). <a href="#ga7577143580aabf3f4bac65352e53993"></a><br></td></tr>
<tr><td colspan="2"><br><h2>SPU-only</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g38cae657eabde06ce8e851cea1239398">MOC_LONG</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype long. <a href="#g38cae657eabde06ce8e851cea1239398"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb57eeb637cbd234015a8411061e77dac">MOC_UNSIGNED_LONG</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+3)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">C-Datatype unsigned long. <a href="#gb57eeb637cbd234015a8411061e77dac"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g9116c12975ccdf0f323a56828d18fe52">MOC_VEC_ULLONG2</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector unsigned long long (vec_ullong2). <a href="#g9116c12975ccdf0f323a56828d18fe52"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#gdfe53f246c2b4d5e520888c43393ac6f">MOC_VEC_LLONG2</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector signed long long (vec_llong2). <a href="#gdfe53f246c2b4d5e520888c43393ac6f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d6e/group__p2p__datatype.html#g803ad689579f62bebcd84411a684e871">MOC_VEC_DOUBLE2</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cell-specific Datatype vector double (vec_double2). <a href="#g803ad689579f62bebcd84411a684e871"></a><br></td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="g6462a2cd9ec6c0cb9445760ac396ec72"></a><!-- doxytag: member="moc_datatype.h::MOC_BYTE" ref="g6462a2cd9ec6c0cb9445760ac396ec72" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_BYTE&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)0+0) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
MOC_Byte is a special datatype.
<p>
It can match any datatype. It has a size of 1 byte.
</div>
</div><p>
<a class="anchor" name="g022696d5df791525793150cc3fa1404d"></a><!-- doxytag: member="moc_datatype.h::MOC_CHAR" ref="g022696d5df791525793150cc3fa1404d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_CHAR&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)0+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype char.
<p>
It has a size of 1 byte.
</div>
</div><p>
<a class="anchor" name="g3ea523671eaeaf32160ddc4b447e47fa"></a><!-- doxytag: member="moc_datatype.h::MOC_DOUBLE" ref="g3ea523671eaeaf32160ddc4b447e47fa" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_DOUBLE&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+5) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype double.
<p>
It has a size of 8 byte.
</div>
</div><p>
<a class="anchor" name="gae9a34cd3ac381b9b7427db7902e06ba"></a><!-- doxytag: member="moc_datatype.h::MOC_FLOAT" ref="gae9a34cd3ac381b9b7427db7902e06ba" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_FLOAT&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+2) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype float.
<p>
It has a size of 4 byte.
</div>
</div><p>
<a class="anchor" name="gc928d8f53f09f8405d6de2244b506d61"></a><!-- doxytag: member="moc_datatype.h::MOC_INT" ref="gc928d8f53f09f8405d6de2244b506d61" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_INT&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+0) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype int.
<p>
It has a size of 4 byte.
</div>
</div><p>
<a class="anchor" name="g38cae657eabde06ce8e851cea1239398"></a><!-- doxytag: member="moc_datatype_spu.h::MOC_LONG" ref="g38cae657eabde06ce8e851cea1239398" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_LONG&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+2) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype long.
<p>
It has a size of 4 byte. <dl class="attention" compact><dt><b>Attention:</b></dt><dd>On the PPU long has a size of 8 byte. So if you are trying to send data of type long from the PPU to a SPU or vice versa there will be an error. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g38cae657eabde06ce8e851cea1239398"></a><!-- doxytag: member="moc_datatype_ppu.h::MOC_LONG" ref="g38cae657eabde06ce8e851cea1239398" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_LONG&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+2) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype long.
<p>
It has a size of 8 byte. <dl class="attention" compact><dt><b>Attention:</b></dt><dd>On the SPU long has a size of 4 byte. So if you are trying to send data of type long from the PPU to a SPU or vice versa there will be an error. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g2a011db78a35d63a6927a5713d1d8f63"></a><!-- doxytag: member="moc_datatype.h::MOC_LONG_LONG" ref="g2a011db78a35d63a6927a5713d1d8f63" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_LONG_LONG&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+0) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype long long.
<p>
It has a size of 8 byte.
</div>
</div><p>
<a class="anchor" name="g448c8046fc3be4e6a5937953e660ef23"></a><!-- doxytag: member="moc_datatype.h::MOC_SHORT" ref="g448c8046fc3be4e6a5937953e660ef23" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_SHORT&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)16+0) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype short.
<p>
It has a size of 2 byte.
</div>
</div><p>
<a class="anchor" name="g367725451f261222bc8035b593c1dd84"></a><!-- doxytag: member="moc_datatype.h::MOC_UNSIGNED" ref="g367725451f261222bc8035b593c1dd84" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_UNSIGNED&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype unsigned int.
<p>
It has a size of 4 byte.
</div>
</div><p>
<a class="anchor" name="g11c8f43b6a61c5d1fe0950c51b2658d7"></a><!-- doxytag: member="moc_datatype.h::MOC_UNSIGNED_CHAR" ref="g11c8f43b6a61c5d1fe0950c51b2658d7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_UNSIGNED_CHAR&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)0+2) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype unsigned char.
<p>
It has a size of 1 byte.
</div>
</div><p>
<a class="anchor" name="gb57eeb637cbd234015a8411061e77dac"></a><!-- doxytag: member="moc_datatype_spu.h::MOC_UNSIGNED_LONG" ref="gb57eeb637cbd234015a8411061e77dac" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_UNSIGNED_LONG&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)32+3) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype unsigned long.
<p>
It has a size of 4 byte. <dl class="attention" compact><dt><b>Attention:</b></dt><dd>On the SPU unsigned long has a size of 8 byte. So if you are trying to send data of type long from the PPU to a SPU or vice versa there will be an error. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gb57eeb637cbd234015a8411061e77dac"></a><!-- doxytag: member="moc_datatype_ppu.h::MOC_UNSIGNED_LONG" ref="gb57eeb637cbd234015a8411061e77dac" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_UNSIGNED_LONG&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+3) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype unsigned long.
<p>
It has a size of 8 byte. <dl class="attention" compact><dt><b>Attention:</b></dt><dd>On the SPU unsigned long has a size of 4 byte. So if you are trying to send data of type long from the PPU to a SPU or vice versa there will be an error. </dd></dl>
</div>
</div><p>
<a class="anchor" name="ga99c6a2d2d560a49f7a09cf4ee20f440"></a><!-- doxytag: member="moc_datatype.h::MOC_UNSIGNED_LONG_LONG" ref="ga99c6a2d2d560a49f7a09cf4ee20f440" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_UNSIGNED_LONG_LONG&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)64+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype unsigned long long.
<p>
It has a size of 8 byte.
</div>
</div><p>
<a class="anchor" name="g7ff42e830b5855f22684868c215b9678"></a><!-- doxytag: member="moc_datatype.h::MOC_UNSIGNED_SHORT" ref="g7ff42e830b5855f22684868c215b9678" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_UNSIGNED_SHORT&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)16+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
C-Datatype unsigned short.
<p>
It has a size of 2 byte.
</div>
</div><p>
<a class="anchor" name="gdc8da17a061cafcea7b90d36154e9e51"></a><!-- doxytag: member="moc_datatype_ppu.h::MOC_VEC_BCHAR16" ref="gdc8da17a061cafcea7b90d36154e9e51" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_BCHAR16&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+0) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector bool char (vec_bchar16).
<p>
It has a size of 16 byte. <dl class="note" compact><dt><b>Note:</b></dt><dd>PPU-only. Is mapped to the SPU-Datatype vector unsigned char. </dd></dl>
</div>
</div><p>
<a class="anchor" name="ga7577143580aabf3f4bac65352e53993"></a><!-- doxytag: member="moc_datatype_ppu.h::MOC_VEC_BINT4" ref="ga7577143580aabf3f4bac65352e53993" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_BINT4&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+2) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector bool int (vec_bint4).
<p>
It has a size of 16 byte. <dl class="note" compact><dt><b>Note:</b></dt><dd>PPU-only. Is mapped to the SPU-Datatype vector unsigned int. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gd63c2823c8de31536a3e7557fb62cb84"></a><!-- doxytag: member="moc_datatype_ppu.h::MOC_VEC_BSHORT8" ref="gd63c2823c8de31536a3e7557fb62cb84" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_BSHORT8&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector bool short (vec_bshort8).
<p>
It has a size of 16 byte. <dl class="note" compact><dt><b>Note:</b></dt><dd>PPU-only. Is mapped to the SPU-Datatype vector unsigned short. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g46f26a2dc0bd937a492890408eb0096a"></a><!-- doxytag: member="moc_datatype.h::MOC_VEC_CHAR16" ref="g46f26a2dc0bd937a492890408eb0096a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_CHAR16&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+4) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector signed char (vec_char16).
<p>
It has a size of 16 byte.
</div>
</div><p>
<a class="anchor" name="g803ad689579f62bebcd84411a684e871"></a><!-- doxytag: member="moc_datatype_spu.h::MOC_VEC_DOUBLE2" ref="g803ad689579f62bebcd84411a684e871" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_DOUBLE2&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+2) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector double (vec_double2).
<p>
It has a size of 16 byte. <dl class="note" compact><dt><b>Note:</b></dt><dd>SPU-only. Is mapped to the PPU-Datatype vector bool int. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g257aaa00d63f4bdbe56428c8687a070a"></a><!-- doxytag: member="moc_datatype.h::MOC_VEC_FLOAT4" ref="g257aaa00d63f4bdbe56428c8687a070a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_FLOAT4&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+6) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector float (vec_float4).
<p>
It has a size of 16 byte.
</div>
</div><p>
<a class="anchor" name="g323f5fd7cc11fa35455060816adcdf13"></a><!-- doxytag: member="moc_datatype.h::MOC_VEC_INT4" ref="g323f5fd7cc11fa35455060816adcdf13" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_INT4&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+5) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector signed int (vec_int4).
<p>
It has a size of 16 byte.
</div>
</div><p>
<a class="anchor" name="gdfe53f246c2b4d5e520888c43393ac6f"></a><!-- doxytag: member="moc_datatype_spu.h::MOC_VEC_LLONG2" ref="gdfe53f246c2b4d5e520888c43393ac6f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_LLONG2&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector signed long long (vec_llong2).
<p>
It has a size of 16 byte. <dl class="note" compact><dt><b>Note:</b></dt><dd>SPU-only. Is mapped to the PPU-Datatype vector bool short. </dd></dl>
</div>
</div><p>
<a class="anchor" name="gae8ee669e938fa84641bac5aa2f85976"></a><!-- doxytag: member="moc_datatype_ppu.h::MOC_VEC_PIXEL8" ref="gae8ee669e938fa84641bac5aa2f85976" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_PIXEL8&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector pixel (vec_pixel8).
<p>
It has a size of 16 byte. <dl class="note" compact><dt><b>Note:</b></dt><dd>PPU-only. Is mapped to the SPU-Datatype vector unsigned short. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g7c1826e9569a0413783a3cda94701e5e"></a><!-- doxytag: member="moc_datatype.h::MOC_VEC_SHORT8" ref="g7c1826e9569a0413783a3cda94701e5e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_SHORT8&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+3) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector signed short (vec_short8).
<p>
It has a size of 16 byte.
</div>
</div><p>
<a class="anchor" name="g6e4b8858f8baa34cd254610445292e2c"></a><!-- doxytag: member="moc_datatype.h::MOC_VEC_UCHAR16" ref="g6e4b8858f8baa34cd254610445292e2c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_UCHAR16&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+0) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector unsigned char (vec_uchar16).
<p>
It has a size of 16 byte.
</div>
</div><p>
<a class="anchor" name="gcca02cda68af06c8d3523ddc1884bbaf"></a><!-- doxytag: member="moc_datatype.h::MOC_VEC_UINT4" ref="gcca02cda68af06c8d3523ddc1884bbaf" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_UINT4&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+2) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector unsigned int (vec_uint4).
<p>
It has a size of 16 byte.
</div>
</div><p>
<a class="anchor" name="g9116c12975ccdf0f323a56828d18fe52"></a><!-- doxytag: member="moc_datatype_spu.h::MOC_VEC_ULLONG2" ref="g9116c12975ccdf0f323a56828d18fe52" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_ULLONG2&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+0) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector unsigned long long (vec_ullong2).
<p>
It has a size of 16 byte. <dl class="note" compact><dt><b>Note:</b></dt><dd>SPU-only. Is mapped to the PPU-Datatype vector bool char. </dd></dl>
</div>
</div><p>
<a class="anchor" name="g15fefb339c331120b7166c45a21e90d5"></a><!-- doxytag: member="moc_datatype.h::MOC_VEC_USHORT8" ref="g15fefb339c331120b7166c45a21e90d5" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MOC_VEC_USHORT8&nbsp;&nbsp;&nbsp;((<a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a>)128+1) </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Cell-specific Datatype vector unsigned short (vec_ushort8).
<p>
It has a size of 16 byte.
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="gb4e45f15c08578bd3fc97c0cca2a509a"></a><!-- doxytag: member="moc_datatype.h::MOC_Datatype" ref="gb4e45f15c08578bd3fc97c0cca2a509a" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef uint8_t <a class="el" href="../../dc/d6e/group__p2p__datatype.html#gb4e45f15c08578bd3fc97c0cca2a509a">MOC_Datatype</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Typedef defining MOC_Datatype.
<p>
One byte is used to encode the Data-Type. The first four msb hold the size in byte / 2 ( if ((datatype &amp; 0xF0)&gt;&gt;4) == 0 then size = 1 else size = ((datatype &amp; 0xF0)&gt;&gt;4)*2 ) and the four lsb hold an id. The combination of id and size is used to uniquely identify a datatype (or rather a group of datatypes belonging together).
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:19 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,57 @@
<!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): MOC_Status_struct Struct Reference</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 class="current"><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="../../annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li><a href="../../functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>MOC_Status_struct Struct Reference<br>
<small>
[<a class="el" href="../../da/df0/group__p2p__status.html">Return Status</a>]</small>
</h1><!-- doxytag: class="MOC_Status_struct" --><hr><a name="_details"></a><h2>Detailed Description</h2>
Structure holding information about a received message. <table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Fields</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1a3fde58aca11d3b901c890916371661"></a><!-- doxytag: member="MOC_Status_struct::MOC_SOURCE" ref="1a3fde58aca11d3b901c890916371661" args="" -->
uint8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html#1a3fde58aca11d3b901c890916371661">MOC_SOURCE</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">message-source <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ae670a7f91ed4d4326bfda4f17ee14f0"></a><!-- doxytag: member="MOC_Status_struct::MOC_TAG" ref="ae670a7f91ed4d4326bfda4f17ee14f0" args="" -->
uint8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html#ae670a7f91ed4d4326bfda4f17ee14f0">MOC_TAG</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">message-tag <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3d3497f7a93c00e6800da9500e52daf2"></a><!-- doxytag: member="MOC_Status_struct::MOC_ERROR" ref="3d3497f7a93c00e6800da9500e52daf2" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html#3d3497f7a93c00e6800da9500e52daf2">MOC_ERROR</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">error-code <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="872c34c85569926730eebe10e47af384"></a><!-- doxytag: member="MOC_Status_struct::message_size" ref="872c34c85569926730eebe10e47af384" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html#872c34c85569926730eebe10e47af384">message_size</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">message-size in byte (internal-variable) <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c84605b34d90e4fde486028fa8b00853"></a><!-- doxytag: member="MOC_Status_struct::mid" ref="c84605b34d90e4fde486028fa8b00853" args="" -->
uint8_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d7a/structMOC__Status__struct.html#c84605b34d90e4fde486028fa8b00853">mid</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">message-ID (internal-variable) <br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:23 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>
@@ -0,0 +1,64 @@
<!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): Environmental Management</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>Environmental Management<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 Environmental Management:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../de/d1b/group__environment__main.png" border="0" alt="" usemap="#d2/df2/de_2d1b_2group____environment____main_map">
<map name="d2/df2/de_2d1b_2group____environment____main_map">
<area shape="rect" href="../../d8/d9a/group__environment__startup.html" title="Functions to start and terminate the MOC&#45;execution environment." alt="" coords="475,5,611,32"><area shape="rect" href="../../d8/da1/group__environment__error.html" title="This section describes how errors are handled." alt="" coords="491,56,595,83"><area shape="rect" href="../../d8/da6/group__environment__timer.html" title="Functions to measure time." alt="" coords="452,107,633,133"><area shape="rect" href="../../d3/d9e/group__end__user.html" title="This section describes the public API provided by the MOC&#45;library." alt="" coords="7,81,172,108"><area shape="rect" href="../../d8/d8f/group__environment__information.html" title="Functions to return some information about the execution environment and the MOC&#45;implementation..." alt="" coords="455,157,631,184"></map></td></tr></table></center>
</div>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This chapter discusses routines for getting and, where appropriate, setting various parameters that relate to the MPI implementation and the execution environment (such as error handling, startup&amp;shutdown and Time).
<p>
<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">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d9a/group__environment__startup.html">Startup &amp; Shutdown</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Functions to start and terminate the MOC-execution environment. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d8f/group__environment__information.html">Implementation Information</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Functions to return some information about the execution environment and the MOC-implementation. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da1/group__environment__error.html">Error-Handling</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This section describes how errors are handled. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/da6/group__environment__timer.html">Timers and Synchronization</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Functions to measure time. <br></td></tr>
<p>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:17 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+120
View File
@@ -0,0 +1,120 @@
<!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): Buffered 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>
</ul>
</div>
</div>
<div class="contents">
<h1>Buffered 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 Buffered Communication:</div>
<div class="dynsection">
<center><table><tr><td><img src="../../de/d84/group__p2p__buffered.png" border="0" alt="" usemap="#d0/dd5/de_2d84_2group____p2p____buffered_map">
<map name="d0/dd5/de_2d84_2group____p2p____buffered_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>
Blocking sending of messages with the use of an intermediate buffer.
<p>
The blocking buffered send-operation returns if the send-buffer can be safely reused (after the data has been copied into the intermediate buffer).
<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="../../de/d84/group__p2p__buffered.html#g307bf844e1416c7c021e4a3468209d0b">MOC_Bsend</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">&nbsp;</td><td class="mdescRight">Performs a blocking buffered mode send operation. <a href="#g307bf844e1416c7c021e4a3468209d0b"></a><br></td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g307bf844e1416c7c021e4a3468209d0b"></a><!-- doxytag: member="moc.h::MOC_Bsend" ref="g307bf844e1416c7c021e4a3468209d0b" 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_Bsend </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><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Performs a blocking buffered mode send operation.
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>This routine blocks until the send-buffer is free.</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>
</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:20 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@@ -0,0 +1 @@
56b9dd35081b559eb10b0fd9b803a3b3
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

+473
View File
@@ -0,0 +1,473 @@
BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
font-family: Geneva, Arial, Helvetica, sans-serif;
}
BODY,TD {
font-size: 90%;
}
H1 {
text-align: center;
font-size: 160%;
}
H2 {
font-size: 120%;
}
H3 {
font-size: 100%;
}
CAPTION {
font-weight: bold
}
DIV.qindex {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.navpath {
width: 100%;
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
line-height: 140%;
}
DIV.navtab {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
TD.navtab {
font-size: 70%;
}
A.qindex {
text-decoration: none;
font-weight: bold;
color: #1A419D;
}
A.qindex:visited {
text-decoration: none;
font-weight: bold;
color: #1A419D
}
A.qindex:hover {
text-decoration: none;
background-color: #ddddff;
}
A.qindexHL {
text-decoration: none;
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
A.qindexHL:hover {
text-decoration: none;
background-color: #6666cc;
color: #ffffff;
}
A.qindexHL:visited {
text-decoration: none;
background-color: #6666cc;
color: #ffffff
}
A.el {
text-decoration: none;
font-weight: bold
}
A.elRef {
font-weight: bold
}
A.code:link {
text-decoration: none;
font-weight: normal;
color: #0000FF
}
A.code:visited {
text-decoration: none;
font-weight: normal;
color: #0000FF
}
A.codeRef:link {
font-weight: normal;
color: #0000FF
}
A.codeRef:visited {
font-weight: normal;
color: #0000FF
}
A:hover {
text-decoration: none;
background-color: #f2f2ff
}
DL.el {
margin-left: -1cm
}
.fragment {
font-family: monospace, fixed;
font-size: 95%;
}
PRE.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
margin-top: 4px;
margin-bottom: 4px;
margin-left: 2px;
margin-right: 8px;
padding-left: 6px;
padding-right: 6px;
padding-top: 4px;
padding-bottom: 4px;
}
DIV.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px
}
DIV.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
DIV.groupText {
margin-left: 16px;
font-style: italic;
font-size: 90%
}
BODY {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
TD.indexkey {
background-color: #e8eef2;
font-weight: bold;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TD.indexvalue {
background-color: #e8eef2;
font-style: italic;
padding-right : 10px;
padding-top : 2px;
padding-left : 10px;
padding-bottom : 2px;
margin-left : 0px;
margin-right : 0px;
margin-top : 2px;
margin-bottom : 2px;
border: 1px solid #CCCCCC;
}
TR.memlist {
background-color: #f0f0f0;
}
P.formulaDsp {
text-align: center;
}
IMG.formulaDsp {
}
IMG.formulaInl {
vertical-align: middle;
}
SPAN.keyword { color: #008000 }
SPAN.keywordtype { color: #604020 }
SPAN.keywordflow { color: #e08000 }
SPAN.comment { color: #800000 }
SPAN.preprocessor { color: #806020 }
SPAN.stringliteral { color: #002080 }
SPAN.charliteral { color: #008080 }
SPAN.vhdldigit { color: #ff00ff }
SPAN.vhdlchar { color: #000000 }
SPAN.vhdlkeyword { color: #700070 }
SPAN.vhdllogic { color: #ff0000 }
.mdescLeft {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.mdescRight {
padding: 0px 8px 4px 8px;
font-size: 80%;
font-style: italic;
background-color: #FAFAFA;
border-top: 1px none #E0E0E0;
border-right: 1px none #E0E0E0;
border-bottom: 1px none #E0E0E0;
border-left: 1px none #E0E0E0;
margin: 0px;
}
.memItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemLeft {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplItemRight {
padding: 1px 8px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
background-color: #FAFAFA;
font-size: 80%;
}
.memTemplParams {
padding: 1px 0px 0px 8px;
margin: 4px;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-color: #E0E0E0;
border-right-color: #E0E0E0;
border-bottom-color: #E0E0E0;
border-left-color: #E0E0E0;
border-top-style: solid;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
color: #606060;
background-color: #FAFAFA;
font-size: 80%;
}
.search {
color: #003399;
font-weight: bold;
}
FORM.search {
margin-bottom: 0px;
margin-top: 0px;
}
INPUT.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
TD.tiny {
font-size: 75%;
}
a {
color: #1A41A8;
}
a:visited {
color: #2A3798;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
TH.dirtab {
background: #e8eef2;
font-weight: bold;
}
HR {
height: 1px;
border: none;
border-top: 1px solid black;
}
/* Style for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
margin-left: 3px;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
padding: 4px;
background-color: #eef3f5;
border-width: 1px;
border-style: solid;
border-color: #dedeee;
-moz-border-radius: 8px 8px 8px 8px;
}
.memname {
white-space: nowrap;
font-weight: bold;
}
.memdoc{
padding-left: 10px;
}
.memproto {
background-color: #d5e1e8;
width: 100%;
border-width: 1px;
border-style: solid;
border-color: #84b0c7;
font-weight: bold;
-moz-border-radius: 8px 8px 8px 8px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
font-style: italic;
white-space: nowrap;
}
/* End Styling for detailed member documentation */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin:0.5em;
}
/* these are for tree view when used as main index */
.directory {
font-size: 9pt;
font-weight: bold;
}
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
/* The following two styles can be used to replace the root node title */
/* with an image of your choice. Simply uncomment the next two styles, */
/* specify the name of your image and be sure to set 'height' to the */
/* proper pixel height of your image. */
/* .directory h3.swap { */
/* height: 61px; */
/* background-repeat: no-repeat; */
/* background-image: url("yourimage.gif"); */
/* } */
/* .directory h3.swap span { */
/* display: none; */
/* } */
.directory > h3 {
margin-top: 0;
}
.directory p {
margin: 0px;
white-space: nowrap;
}
.directory div {
display: none;
margin: 0px;
}
.directory img {
vertical-align: -30%;
}
/* these are for tree view when not used as main index */
.directory-alt {
font-size: 100%;
font-weight: bold;
}
.directory-alt h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
.directory-alt > h3 {
margin-top: 0;
}
.directory-alt p {
margin: 0px;
white-space: nowrap;
}
.directory-alt div {
display: none;
margin: 0px;
}
.directory-alt img {
vertical-align: -30%;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

+49
View File
@@ -0,0 +1,49 @@
<!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): Data Fields</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 class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div>
<div class="contents">
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
<p>
<ul>
<li>message_size
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#872c34c85569926730eebe10e47af384">MOC_Status_struct</a>
<li>mid
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#c84605b34d90e4fde486028fa8b00853">MOC_Status_struct</a>
<li>MOC_ERROR
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#3d3497f7a93c00e6800da9500e52daf2">MOC_Status_struct</a>
<li>MOC_SOURCE
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#1a3fde58aca11d3b901c890916371661">MOC_Status_struct</a>
<li>MOC_TAG
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#ae670a7f91ed4d4326bfda4f17ee14f0">MOC_Status_struct</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:22 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>
+49
View File
@@ -0,0 +1,49 @@
<!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): Data Fields - Variables</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 class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;
<p>
<ul>
<li>message_size
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#872c34c85569926730eebe10e47af384">MOC_Status_struct</a>
<li>mid
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#c84605b34d90e4fde486028fa8b00853">MOC_Status_struct</a>
<li>MOC_ERROR
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#3d3497f7a93c00e6800da9500e52daf2">MOC_Status_struct</a>
<li>MOC_SOURCE
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#1a3fde58aca11d3b901c890916371661">MOC_Status_struct</a>
<li>MOC_TAG
: <a class="el" href="dd/d7a/structMOC__Status__struct.html#ae670a7f91ed4d4326bfda4f17ee14f0">MOC_Status_struct</a>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:22 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>
+23
View File
@@ -0,0 +1,23 @@
digraph G
{
bgcolor="transparent";
edge [fontname="FreeSans",fontsize=10,labelfontname="FreeSans",labelfontsize=10];
node [fontname="FreeSans",fontsize=10,shape=record];
Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",fillcolor="grey75",style="filled" fontcolor="black"];
Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPublicBase.html"];
Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="red",URL="$classTruncated.html"];
Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="FreeSans"];
Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classProtectedBase.html"];
Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="FreeSans"];
Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classPrivateBase.html"];
Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="grey75"];
Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="FreeSans"];
Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="FreeSans"];
Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classTempl.html"];
Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="FreeSans"];
Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="FreeSans",color="black",URL="$classUsed.html"];
}
+85
View File
@@ -0,0 +1,85 @@
<!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): Graph Legend</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>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
Consider the following example: <div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
<span class="keyword">class </span>Invisible { };
<span class="comment"></span>
<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
<span class="comment">/* Class not documented with doxygen comments */</span>
<span class="keyword">class </span>Undocumented { };
<span class="comment"></span>
<span class="comment">/*! Class that is inherited using public inheritance */</span>
<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
<span class="comment"></span>
<span class="comment">/*! A template class */</span>
<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
<span class="comment"></span>
<span class="comment">/*! Class that is inherited using protected inheritance */</span>
<span class="keyword">class </span>ProtectedBase { };
<span class="comment"></span>
<span class="comment">/*! Class that is inherited using private inheritance */</span>
<span class="keyword">class </span>PrivateBase { };
<span class="comment"></span>
<span class="comment">/*! Class that is used by the Inherited class */</span>
<span class="keyword">class </span>Used { };
<span class="comment"></span>
<span class="comment">/*! Super class that inherits a number of other classes */</span>
<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
<span class="keyword">protected</span> ProtectedBase,
<span class="keyword">private</span> PrivateBase,
<span class="keyword">public</span> Undocumented,
<span class="keyword">public</span> Templ&lt;int&gt;
{
<span class="keyword">private</span>:
Used *m_usedClass;
};
</pre></div> If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
<center><div align="center">
<img src="graph_legend.png" alt="graph_legend.png">
</div>
</center> <p>
The boxes in the above graph have the following meaning: <ul>
<li>
A filled gray box represents the struct or class for which the graph is generated. </li>
<li>
A box with a black border denotes a documented struct or class. </li>
<li>
A box with a grey border denotes an undocumented struct or class. </li>
<li>
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
</ul>
The arrows have the following meaning: <ul>
<li>
A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
<li>
A dark green arrow is used for protected inheritance. </li>
<li>
A dark red arrow is used for private inheritance. </li>
<li>
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
<li>
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:23 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+11
View File
@@ -0,0 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPI On Cell (Documentation)</title></head>
<frameset cols="250,*">
<frame src="tree.html" name="treefrm">
<frame src="main.html" name="basefrm">
<noframes>
<a href="main.html">Frames are disabled. Click here to go to the main page.</a>
</noframes>
</frameset>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

+32
View File
@@ -0,0 +1,32 @@
<!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): MPI On Cell</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 class="current"><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>MPI On Cell</h1>
<p>
The idea of this project is to implement a message passing library for work on the Cell BE. The main idea behind such an implementation would be to help the programmer by adding an layer of abstraction between the very low level libraries by IBM and give him the possibility to work with an interface he is more familiar with. To achieve this we decided to try to keep very closely to the standard provided by the Message Passing Interface (MPI), so that programmers knowing how to write MPI programmers can easily work with our library. Because of the very special nature of the Cell, it might not be possible to keep 100% true to the standard, but we try to introduce changes only when absolutely necessary and of great benefit, because of some specialties of the Cell's hardware.<p>
<dl class="user" compact><dt><b>Table of Content</b></dt><dd></dd></dl>
<dl class="user" compact><dt><b></b></dt><dd><a class="el" href="d3/d9e/group__end__user.html">End-User Documentation</a> </dd></dl>
<dl class="user" compact><dt><b></b></dt><dd><a class="el" href="restrictions.html">Restrictions of the Cell-Architecture</a> </dd></dl>
<dl class="user" compact><dt><b></b></dt><dd><a class="el" href="violations.html">Violations of the MPI-Standard</a> </dd></dl>
<dl class="user" compact><dt><b></b></dt><dd><a class="el" href="performance.html">Performance Measurements</a> </dd></dl>
<dl class="user" compact><dt><b></b></dt><dd><a class="el" href="conclusion.html">Summary &amp; Conclusions</a> </dd></dl>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:16 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>
+50
View File
@@ -0,0 +1,50 @@
<!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): Module Index</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 class="current"><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>Modules</h1>Here is a list of all modules:<ul>
<li><a class="el" href="d3/d9e/group__end__user.html">End-User Documentation</a>
<ul>
<li><a class="el" href="de/d1b/group__environment__main.html">Environmental Management</a>
<ul>
<li><a class="el" href="d8/d9a/group__environment__startup.html">Startup &amp; Shutdown</a>
<li><a class="el" href="d8/d8f/group__environment__information.html">Implementation Information</a>
<li><a class="el" href="d8/da1/group__environment__error.html">Error-Handling</a>
<li><a class="el" href="d8/da6/group__environment__timer.html">Timers and Synchronization</a>
</ul>
<li><a class="el" href="d0/d64/group__p2p__main.html">Point-to-Point Communication</a>
<ul>
<li><a class="el" href="da/df0/group__p2p__status.html">Return Status</a>
<li><a class="el" href="dc/d6e/group__p2p__datatype.html">Datatypes</a>
<li><a class="el" href="d5/dc2/group__p2p__synch.html">Synchronous Communication</a>
<li><a class="el" href="de/d84/group__p2p__buffered.html">Buffered Communication</a>
<li><a class="el" href="d2/ded/group__p2p__sendrecv.html">Send-Receive</a>
<li><a class="el" href="d7/d62/group__p2p__imm.html">Non-Blocking Communication</a>
</ul>
<li><a class="el" href="db/dc2/group__broadcast.html">Collective Communication</a>
<li><a class="el" href="d9/d16/group__dma__access.html">Direct Memory Access</a>
<li><a class="el" href="d1/df0/group__comm__main.html">Groups, Context and Communicators</a>
<ul>
<li><a class="el" href="d1/dd1/group__comm__mgt.html">Communicator Management</a>
</ul>
</ul>
</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:22 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>
+63
View File
@@ -0,0 +1,63 @@
<!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): Performance Measurements</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 class="navpath"><a class="el" href="main.html">MPI On Cell</a>
</div>
</div>
<div class="contents">
<h1><a class="anchor" name="performance">Performance Measurements </a></h1>The measurements were taken on a Playstation 3 running Yellow Dog Linux release 6.0 using Cell SDK 3.1.<p>
To measure send-receive operations ping-pongs were used and to measure DMA-calls the time till the used DMA-tag is marked to have no pending calls is used. The stated latencies in the pictures above are one-way latencies.<h2><a class="anchor" name="perf_send_recv">
Send-Receive performance</a></h2>
The following two figures show latency and bandwidth achieved by our implementation. The theoretical maximum bandwidth is 25 GByte/s and synchronous send between SPUs is at a close range to this limit if the data-size is large enough. There is also a big difference between SPU-SPU and SPU-PPU operations. The reason for this is the fact that the PPU cannot handle DMA-operations itself but only remote-control the SPU's Memory Flow Controller. And as you will see later the main-memory performance of the PPU is much lower than that of the SPUs. Because we use ping-pongs there is no way to determine differences in sending from or to the PPU, but other measurements indicate such differences.<p>
<div align="center">
<img src="latency-kb.png" alt="latency-kb.png">
</div>
<p>
<div align="center">
<img src="bandwidth-kb.png" alt="bandwidth-kb.png">
</div>
<p>
The following figure shows the latency of send-receive operations at a lower scale than the first figure. If you look at the latency of synchronous send operations then you can see that there is a big start-up latency and only a very small data-size dependend latency. So there's only a very small time-difference between sending 10 byte and 1 Kbyte, but there is naturally a difference in throughput.<p>
<div align="center">
<img src="latency-b.png" alt="latency-b.png">
</div>
<h2><a class="anchor" name="perf_moc_vs_dma">
Send-Recv vs. DMA performance</a></h2>
The following two figures demonstrate the difference in performance of send-recv operations and DMA-calls. The performance of DMA-calls reaches it's peak much earlier than send-recv and the peak-value is higher than that of send-recv even though the difference is not much. So DMA is a lot faster than send-recv especially for small messages, but for big messages the difference is much lower. It seems that it is always better to use DMA, but keep in mind that in practical applications calculation time easily exceeds communication time.<p>
<div align="center">
<img src="dma-vs-moc-lat.png" alt="dma-vs-moc-lat.png">
</div>
<p>
<div align="center">
<img src="dma-vs-moc-bw.png" alt="dma-vs-moc-bw.png">
</div>
<h2><a class="anchor" name="perf_spu_vs_ppu">
SPU- vs PPU-initiated transfer</a></h2>
The following figure shows the difference between SPU- and PPU-initiated DMA-calls. As you can see the highest performance can be achieved by using SPU-SPU DMA-calls. There is also hardly any difference between put and get operations. DMA-operations between SPU and main-memory achieves lower performance and there is a difference between put and get operations. PPU to SPU DMA calls have the lowest performance with small transfer sizes, but if the transfer-size is big enough they are faster than SPU-main-memory transfers. The lowest performance has a memcopy on the PPU, which also explains the bad performance of buffered send between SPU and PPU.<p>
<div align="center">
<img src="spu-ppu-dma-bw-kb.png" alt="spu-ppu-dma-bw-kb.png">
</div>
<h2><a class="anchor" name="perf_mem">
DMA vs. memcpy</a></h2>
The official Cell documentation states that it is also possible to use memcpy to transfer data from the PPU to a SPU. However one should use DMA, because it is always faster. If you look at the following figure, this is not always true. If the data-size is small enough memcpy is faster.<p>
<div align="center">
<img src="ppu-transfer-bw-b.png" alt="ppu-transfer-bw-b.png">
</div>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:16 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

+40
View File
@@ -0,0 +1,40 @@
<!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): Restrictions of the Cell-Architecture</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 class="navpath"><a class="el" href="main.html">MPI On Cell</a>
</div>
</div>
<div class="contents">
<h1><a class="anchor" name="restrictions">Restrictions of the Cell-Architecture </a></h1><dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="res_arch">
CBE Architecture</a></h2>
There are some restriction caused by the CBE architecture. Programming a SPU can be compared to programming a microcontroller: <ul>
<li><b>Small</b> <b>local-store</b> <b>of</b> <b>SPUs:</b> Only 256 KByte of local-store are available on a SPU which is moreover shared by data and instructions. Because of this a economic stewardship of available resources is needed. </li>
<li><b>No</b> <b>underlying</b> <b>OS:</b> The operation system is running on the PPU, but not on the SPUs. Although the OS also manages the SPUs, there are some things which are missing or have to be done in a very performance decreasing and complex way. E.g. there is no support for several threads on one SPU (unless you program it yourself) and most of the system-calls are delegated to the PPU. </li>
<li><b>Limited</b> <b>I/O-Capabilities</b>: File-operations are only possible on the PPU. So if you want to store data of an SPU into a file, you have to send it to the PPU who then stores the data into a file. Main-memory is managed by the PPU and the SPUs can only read from or write into the main-memory. Allocation of main-memory has to be done by the PPU.</li>
</ul>
<dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="res_alignment">
Memory-Alignment</a></h2>
All Buffers used in send- or receive-functions have to be aligned at a 16-byte boundary (for better performance a 128-byte alignment is recommended). This restriction cannot be circumvented.<p>
<dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="res_size">
Transfer-Size</a></h2>
DMA-calls only transfer data in chunks of 16 bytes. Send-receive operations and DMA-get-operations provided by this library hide this restriction by the use of intermediate buffers. But you should keep this restriction in mind because to gain maximum performance the size of data to be transfered should be a multiple of 16 bytes. </div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:16 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>
Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

+102
View File
@@ -0,0 +1,102 @@
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
DIV.tabs
{
float : left;
width : 100%;
background : url("tab_b.gif") repeat-x bottom;
margin-bottom : 4px;
}
DIV.tabs UL
{
margin : 0px;
padding-left : 10px;
list-style : none;
}
DIV.tabs LI, DIV.tabs FORM
{
display : inline;
margin : 0px;
padding : 0px;
}
DIV.tabs FORM
{
float : right;
}
DIV.tabs A
{
float : left;
background : url("tab_r.gif") no-repeat right top;
border-bottom : 1px solid #84B0C7;
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
DIV.tabs A:hover
{
background-position: 100% -150px;
}
DIV.tabs A:link, DIV.tabs A:visited,
DIV.tabs A:active, DIV.tabs A:hover
{
color: #1A419D;
}
DIV.tabs SPAN
{
float : left;
display : block;
background : url("tab_l.gif") no-repeat left top;
padding : 5px 9px;
white-space : nowrap;
}
DIV.tabs INPUT
{
float : right;
display : inline;
font-size : 1em;
}
DIV.tabs TD
{
font-size : x-small;
font-weight : bold;
text-decoration : none;
}
/* Commented Backslash Hack hides rule from IE5-Mac \*/
DIV.tabs SPAN {float : none;}
/* End IE5-Mac hack */
DIV.tabs A:hover SPAN
{
background-position: 0% -150px;
}
DIV.tabs LI.current A
{
background-position: 100% -150px;
border-width : 0px;
}
DIV.tabs LI.current SPAN
{
background-position: 0% -150px;
padding-bottom : 6px;
}
DIV.navpath
{
background : none;
border : none;
border-bottom : 1px solid #84B0C7;
}
+109
View File
@@ -0,0 +1,109 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Language" content="en" />
<link rel="stylesheet" href="doxygen.css">
<title>TreeView</title>
<script type="text/javascript">
<!-- // Hide script from old browsers
function toggleFolder(id, imageNode)
{
var folder = document.getElementById(id);
var l = imageNode.src.length;
if (imageNode.src.substring(l-20,l)=="ftv2folderclosed.png" ||
imageNode.src.substring(l-18,l)=="ftv2folderopen.png")
{
imageNode = imageNode.previousSibling;
l = imageNode.src.length;
}
if (folder == null)
{
}
else if (folder.style.display == "block")
{
if (imageNode != null)
{
imageNode.nextSibling.src = "ftv2folderclosed.png";
if (imageNode.src.substring(l-13,l) == "ftv2mnode.png")
{
imageNode.src = "ftv2pnode.png";
}
else if (imageNode.src.substring(l-17,l) == "ftv2mlastnode.png")
{
imageNode.src = "ftv2plastnode.png";
}
}
folder.style.display = "none";
}
else
{
if (imageNode != null)
{
imageNode.nextSibling.src = "ftv2folderopen.png";
if (imageNode.src.substring(l-13,l) == "ftv2pnode.png")
{
imageNode.src = "ftv2mnode.png";
}
else if (imageNode.src.substring(l-17,l) == "ftv2plastnode.png")
{
imageNode.src = "ftv2mlastnode.png";
}
}
folder.style.display = "block";
}
}
// End script hiding -->
</script>
</head>
<body class="ftvtree">
<div class="directory">
<h3 class="swap"><span>MPI On Cell (Documentation)</span></h3>
<div style="display: block;">
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder1', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder1', this)"/><a class="el" href="main.html" target="basefrm">MPI On Cell</a></p>
<div id="folder1">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="restrictions.html" target="basefrm">Restrictions of the Cell-Architecture</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="violations.html" target="basefrm">Violations of the MPI-Standard</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="performance.html" target="basefrm">Performance Measurements</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="conclusion.html" target="basefrm">Summary & Conclusions</a></p>
</div>
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder2', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder2', this)"/><a class="el" href="modules.html" target="basefrm">Modules</a></p>
<div id="folder2">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder3', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder3', this)"/><a class="el" href="d3/d9e/group__end__user.html" target="basefrm">End-User Documentation</a></p>
<div id="folder3">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder4', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder4', this)"/><a class="el" href="de/d1b/group__environment__main.html" target="basefrm">Environmental Management</a></p>
<div id="folder4">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d8/d9a/group__environment__startup.html" target="basefrm">Startup & Shutdown</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d8/d8f/group__environment__information.html" target="basefrm">Implementation Information</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d8/da1/group__environment__error.html" target="basefrm">Error-Handling</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d8/da6/group__environment__timer.html" target="basefrm">Timers and Synchronization</a></p>
</div>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder5', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder5', this)"/><a class="el" href="d0/d64/group__p2p__main.html" target="basefrm">Point-to-Point Communication</a></p>
<div id="folder5">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="da/df0/group__p2p__status.html" target="basefrm">Return Status</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dc/d6e/group__p2p__datatype.html" target="basefrm">Datatypes</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d5/dc2/group__p2p__synch.html" target="basefrm">Synchronous Communication</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="de/d84/group__p2p__buffered.html" target="basefrm">Buffered Communication</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d2/ded/group__p2p__sendrecv.html" target="basefrm">Send-Receive</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d7/d62/group__p2p__imm.html" target="basefrm">Non-Blocking Communication</a></p>
</div>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="db/dc2/group__broadcast.html" target="basefrm">Collective Communication</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d9/d16/group__dma__access.html" target="basefrm">Direct Memory Access</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder6', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder6', this)"/><a class="el" href="d1/df0/group__comm__main.html" target="basefrm">Groups, Context and Communicators</a></p>
<div id="folder6">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="d1/dd1/group__comm__mgt.html" target="basefrm">Communicator Management</a></p>
</div>
</div>
</div>
<p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder7', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder7', this)"/><a class="el" href="annotated.html" target="basefrm">Data Structures</a></p>
<div id="folder7">
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="db/d17/structmoc__request__struct.html" target="basefrm">moc_request_struct</a></p>
<p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="dd/d7a/structMOC__Status__struct.html" target="basefrm">MOC_Status_struct</a></p>
</div>
<p><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="functions.html" target="basefrm">Data Fields</a></p>
</div>
</div>
+48
View File
@@ -0,0 +1,48 @@
<!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): Violations of the MPI-Standard</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 class="navpath"><a class="el" href="main.html">MPI On Cell</a>
</div>
</div>
<div class="contents">
<h1><a class="anchor" name="violations">Violations of the MPI-Standard </a></h1><dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="viol_prefix">
Prefix of functions:</a></h2>
The prefix of functions and data-structures is not 'MPI_' as stated by the MPI-standard. Instead it is 'MOC_' to allow the usage of another MPI-Library (e.g. to connect several playstations) and to stress that this implementation is not fully conform with the MPI-standard.<p>
<dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="viol_startup">
Application Startup</a></h2>
MPI-applications (Version 1.3) are started using mpiexec/mpirun and normally only one binary is executed on all MPI-nodes. Because PPU- and SPU-instructions aren't compatible at least two executables (and two compilers) are needed. Also SPU-threads have to be initialized and started by the PPU. Because of this the SPU-binaries are embedded into the PPU-binary and started by this PPU-binary during runtime. In this library this concept is also used. So you have to program at least one PPU- and one SPU-program, embed the SPU-program into the PPU-executable and add the SPU-program-handle to the MOC-environment (see <a class="el" href="d8/d9a/group__environment__startup.html#geea5b7c117adae78e954f0959fe0c447">MOC_Add_spu_thread</a>) during runtime before calling MOC_Init.<p>
<dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="viol_queue">
Order of received messages:</a></h2>
Because of the internal design of this implementation the order of incoming messages cannot be preserved in all cases. Currently the correct order is only preserved from messages from the same source, with the same message-tag and same communicator.<p>
<dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="viol_tag">
Number of usable message-tag</a></h2>
According to the MPI-standard there should be at least 32767 tags available. But to save memory we use only one byte to encode the message-tag. So there are only 256 usable message-tags. Message-tags greater than 249 are reserved for internal purposes.<p>
<dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="viol_nr_pending">
Number of simultaneous pending send-receive operations</a></h2>
According to the MPI-standard there should be hardly any limitations in the number of possible simultaneous transfers. It is stated that only in pathological cases the maximum of possible outstanding transfers should be reached. Because the resources of an SPU are very limited our implementation has a tight limit of possible simultaneous transfers. Although the upper-limit can be changed using <a class="el" href="d8/d9a/group__environment__startup.html#g3e83e7a629951e6788a682aad654baf8">MOC_Set_queue_size</a>, it is limited by the 256 KByte of local-storage of a SPU. There is also a limit of the number of simultaneous DMA-calls, because for each DMA-operation an exclusive DMA-tag is used and there are only 32 DMA-tag (on the PPU only 15) available.<p>
<dl class="user" compact><dt><b></b></dt><dd></dd></dl>
<h2><a class="anchor" name="viol_init">
MPI_Init:</a></h2>
The parameters of the init-function for the SPU does not match the parameters defined by the MPI-standard (see <a class="el" href="d8/d9a/group__environment__startup.html#moc_init_spu">MOC_Init (SPU)</a>) </div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Feb 12 13:48:16 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>