Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 247b28499c443e092731ffba814075f2 > files > 117

mpqc-html-2.3.1-9mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>MPQC: sc::ActiveMsgMemoryGrp Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><b>sc</b>::<a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html">ActiveMsgMemoryGrp</a>
  </div>
</div>
<div class="contents">
<h1>sc::ActiveMsgMemoryGrp Class Reference</h1><!-- doxytag: class="sc::ActiveMsgMemoryGrp" --><!-- doxytag: inherits="sc::MsgMemoryGrp" -->The <a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html" title="The ActiveMsgMemoryGrp abstract class specializes the MsgMemoryGrp class.">ActiveMsgMemoryGrp</a> abstract class specializes the <a class="el" href="classsc_1_1MsgMemoryGrp.html" title="A MsgMemoryGrp that initializes its data using a messagegrp.">MsgMemoryGrp</a> class.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="memamsg_8h_source.html">memamsg.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for sc::ActiveMsgMemoryGrp:</div>
<div class="dynsection">

<p><center><img src="classsc_1_1ActiveMsgMemoryGrp.png" usemap="#sc::ActiveMsgMemoryGrp_map" border="0" alt=""></center>
<map name="sc::ActiveMsgMemoryGrp_map">
<area href="classsc_1_1MsgMemoryGrp.html" alt="sc::MsgMemoryGrp" shape="rect" coords="0,224,158,248">
<area href="classsc_1_1MemoryGrp.html" alt="sc::MemoryGrp" shape="rect" coords="0,168,158,192">
<area href="classsc_1_1DescribedClass.html" alt="sc::DescribedClass" shape="rect" coords="0,112,158,136">
<area href="classsc_1_1RefCount.html" alt="sc::RefCount" shape="rect" coords="0,56,158,80">
<area href="classsc_1_1Identity.html" alt="sc::Identity" shape="rect" coords="0,0,158,24">
<area href="classsc_1_1MTMPIMemoryGrp.html" alt="sc::MTMPIMemoryGrp" shape="rect" coords="0,336,158,360">
</map>
</div>

<p>
<a href="classsc_1_1ActiveMsgMemoryGrp-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cd1dcfa193b1df01078cf55a59c7f395"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::ActiveMsgMemoryGrp" ref="cd1dcfa193b1df01078cf55a59c7f395" args="(const Ref&lt; MessageGrp &gt; &amp;msg)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>ActiveMsgMemoryGrp</b> (const <a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1MessageGrp.html">MessageGrp</a> &gt; &amp;msg)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="af41f57f7a7a4daa33336965679fb050"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::ActiveMsgMemoryGrp" ref="af41f57f7a7a4daa33336965679fb050" args="(const Ref&lt; KeyVal &gt; &amp;)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>ActiveMsgMemoryGrp</b> (const <a class="el" href="classsc_1_1Ref.html">Ref</a>&lt; <a class="el" href="classsc_1_1KeyVal.html">KeyVal</a> &gt; &amp;)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#60953da3be5901a6f90fff5a80e028b3">set_localsize</a> (size_t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the size of locally held memory.  <a href="#60953da3be5901a6f90fff5a80e028b3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9328676b9aeda2379035f122f0b65f43"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::localdata" ref="9328676b9aeda2379035f122f0b65f43" args="()" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#9328676b9aeda2379035f122f0b65f43">localdata</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a pointer to the local data. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3ff33de5a310bfea26ad1be53d10f87a"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::obtain_writeonly" ref="3ff33de5a310bfea26ad1be53d10f87a" args="(distsize_t offset, int size)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#3ff33de5a310bfea26ad1be53d10f87a">obtain_writeonly</a> (distsize_t offset, int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This gives write access to the memory location. No locking is done. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#613932193268365d56eda08873cca65f">obtain_readwrite</a> (distsize_t offset, int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Only one thread can have an unreleased obtain_readwrite at a time.  <a href="#613932193268365d56eda08873cca65f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="069a32ab667dc25184d4334e645e170e"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::obtain_readonly" ref="069a32ab667dc25184d4334e645e170e" args="(distsize_t offset, int size)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#069a32ab667dc25184d4334e645e170e">obtain_readonly</a> (distsize_t offset, int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This gives read access to the memory location. No locking is done. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cff637071563ec5acc50d7377f355662"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::release_readonly" ref="cff637071563ec5acc50d7377f355662" args="(void *data, distsize_t offset, int size)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#cff637071563ec5acc50d7377f355662">release_readonly</a> (void *data, distsize_t offset, int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is called when read access is no longer needed. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f80308b406d1a87824fa1029fc03fcb9"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::release_writeonly" ref="f80308b406d1a87824fa1029fc03fcb9" args="(void *data, distsize_t offset, int size)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#f80308b406d1a87824fa1029fc03fcb9">release_writeonly</a> (void *data, distsize_t offset, int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is called when write access is no longer needed. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#9eef3abc6db3efd9d20869c8a028237b">release_readwrite</a> (void *data, distsize_t offset, int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is called when read/write access is no longer needed.  <a href="#9eef3abc6db3efd9d20869c8a028237b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="85dad311cc1abe5781177a3422ed6bb6"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::sum_reduction" ref="85dad311cc1abe5781177a3422ed6bb6" args="(double *data, distsize_t doffset, int dsize)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>sum_reduction</b> (double *data, distsize_t doffset, int dsize)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8767a228771f1647790ef4ad64d9f9a6"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::sum_reduction_on_node" ref="8767a228771f1647790ef4ad64d9f9a6" args="(double *data, size_t doffset, int dsize, int node=&#45;1)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>sum_reduction_on_node</b> (double *data, size_t doffset, int dsize, int node=-1)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0d758450ad01aa01da187ad985dfc7d4"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::print" ref="0d758450ad01aa01da187ad985dfc7d4" args="(std::ostream &amp;o=ExEnv::out0()) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html#0d758450ad01aa01da187ad985dfc7d4">print</a> (std::ostream &amp;o=ExEnv::out0()) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prints out information about the object. <br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4a256c7d2f4d5e32db65270565056959"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::retrieve_data" ref="4a256c7d2f4d5e32db65270565056959" args="(void *, int node, int offset, int size, int lock)=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>retrieve_data</b> (void *, int node, int offset, int size, int lock)=0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fdc545b17442266088f6e51f125c3a02"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::replace_data" ref="fdc545b17442266088f6e51f125c3a02" args="(void *, int node, int offset, int size, int unlock)=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>replace_data</b> (void *, int node, int offset, int size, int unlock)=0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="791c81d618cd07df5aa44d163dfce8a5"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::sum_data" ref="791c81d618cd07df5aa44d163dfce8a5" args="(double *data, int node, int doffset, int dsize)=0" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><b>sum_data</b> (double *data, int node, int doffset, int dsize)=0</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="73455a4bdf3c17da364e7969aa6f6f89"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::data_" ref="73455a4bdf3c17da364e7969aa6f6f89" args="" -->
char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>data_</b></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="classsc_1_1ActiveMsgMemoryGrp.html" title="The ActiveMsgMemoryGrp abstract class specializes the MsgMemoryGrp class.">ActiveMsgMemoryGrp</a> abstract class specializes the <a class="el" href="classsc_1_1MsgMemoryGrp.html" title="A MsgMemoryGrp that initializes its data using a messagegrp.">MsgMemoryGrp</a> class. 
<p>
It uses active messages to implement global shared memory. <hr><h2>Member Function Documentation</h2>
<a class="anchor" name="613932193268365d56eda08873cca65f"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::obtain_readwrite" ref="613932193268365d56eda08873cca65f" args="(distsize_t offset, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* sc::ActiveMsgMemoryGrp::obtain_readwrite           </td>
          <td>(</td>
          <td class="paramtype">distsize_t&nbsp;</td>
          <td class="paramname"> <em>offset</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><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Only one thread can have an unreleased obtain_readwrite at a time. 
<p>
The actual memory region locked can be larger than that requested. If the memory region is already locked this will block. For this reason, data should be held as read/write for as short a time as possible. 
<p>Implements <a class="el" href="classsc_1_1MemoryGrp.html#adba96c579589e6be4ce48bd275137a0">sc::MemoryGrp</a>.</p>

</div>
</div><p>
<a class="anchor" name="9eef3abc6db3efd9d20869c8a028237b"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::release_readwrite" ref="9eef3abc6db3efd9d20869c8a028237b" args="(void *data, distsize_t offset, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::ActiveMsgMemoryGrp::release_readwrite           </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">distsize_t&nbsp;</td>
          <td class="paramname"> <em>offset</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><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is called when read/write access is no longer needed. 
<p>
The memory will be unlocked. 
<p>Implements <a class="el" href="classsc_1_1MemoryGrp.html#ab51f4f3cf1d7c12fe9c834e0d928eed">sc::MemoryGrp</a>.</p>

</div>
</div><p>
<a class="anchor" name="60953da3be5901a6f90fff5a80e028b3"></a><!-- doxytag: member="sc::ActiveMsgMemoryGrp::set_localsize" ref="60953da3be5901a6f90fff5a80e028b3" args="(size_t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::ActiveMsgMemoryGrp::set_localsize           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the size of locally held memory. 
<p>
When memory is accessed using a global offset counting starts at node 0 and proceeds up to node <a class="el" href="classsc_1_1MemoryGrp.html#a2f204165147154bd15600ea8929b3c6" title="Returns how many nodes there are.">n()</a> - 1. 
<p>Reimplemented from <a class="el" href="classsc_1_1MsgMemoryGrp.html#902db59bfb4f13979efa58b7d9077b53">sc::MsgMemoryGrp</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="memamsg_8h_source.html">memamsg.h</a></ul>
</div>
<hr>
<address>
<small>

Generated at Wed Oct 14 14:12:16 2009 for <a
href="http://www.mpqc.org">MPQC</a>
2.3.1 using the documentation package <a
href="http://www.doxygen.org">Doxygen</a>
1.5.9.

</small>
</address>
</body>
</html>