Sophie

Sophie

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

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::RDMAMemoryGrp 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_1RDMAMemoryGrp.html">RDMAMemoryGrp</a>
  </div>
</div>
<div class="contents">
<h1>sc::RDMAMemoryGrp Class Reference</h1><!-- doxytag: class="sc::RDMAMemoryGrp" --><!-- doxytag: inherits="sc::MsgMemoryGrp" -->The <a class="el" href="classsc_1_1RDMAMemoryGrp.html" title="The RDMAMemoryGrp abstract class specializes the MsgMemoryGrp class.">RDMAMemoryGrp</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="memrdma_8h_source.html">memrdma.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for sc::RDMAMemoryGrp:</div>
<div class="dynsection">

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

<p>
<a href="classsc_1_1RDMAMemoryGrp-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="1f6dace769b0e27059c1423b9ba0a056"></a><!-- doxytag: member="sc::RDMAMemoryGrp::RDMAMemoryGrp" ref="1f6dace769b0e27059c1423b9ba0a056" args="(const Ref&lt; MessageGrp &gt; &amp;msg)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>RDMAMemoryGrp</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="3a15c7ec2794366d6d78346ebc2d1677"></a><!-- doxytag: member="sc::RDMAMemoryGrp::RDMAMemoryGrp" ref="3a15c7ec2794366d6d78346ebc2d1677" args="(const Ref&lt; KeyVal &gt; &amp;)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>RDMAMemoryGrp</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"><a class="anchor" name="af0175ef88b5a6f4063d4bd2fe07e47c"></a><!-- doxytag: member="sc::RDMAMemoryGrp::localdata" ref="af0175ef88b5a6f4063d4bd2fe07e47c" args="()" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1RDMAMemoryGrp.html#af0175ef88b5a6f4063d4bd2fe07e47c">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">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1RDMAMemoryGrp.html#49c353380e4629ae9222bda6708e5524">set_localsize</a> (size_t localsize)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the size of locally held memory.  <a href="#49c353380e4629ae9222bda6708e5524"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="605c01e0eec98d41702d9d0817bb4c1d"></a><!-- doxytag: member="sc::RDMAMemoryGrp::obtain_writeonly" ref="605c01e0eec98d41702d9d0817bb4c1d" args="(distsize_t offset, int size)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1RDMAMemoryGrp.html#605c01e0eec98d41702d9d0817bb4c1d">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_1RDMAMemoryGrp.html#22ac29f224a65fafbaea14e0cc45933f">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="#22ac29f224a65fafbaea14e0cc45933f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d9214850aa359f18468921c147e99a55"></a><!-- doxytag: member="sc::RDMAMemoryGrp::obtain_readonly" ref="d9214850aa359f18468921c147e99a55" args="(distsize_t offset, int size)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1RDMAMemoryGrp.html#d9214850aa359f18468921c147e99a55">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="fc778397f41c333901068ad6492fd23b"></a><!-- doxytag: member="sc::RDMAMemoryGrp::release_readonly" ref="fc778397f41c333901068ad6492fd23b" args="(void *data, distsize_t offset, int size)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1RDMAMemoryGrp.html#fc778397f41c333901068ad6492fd23b">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="5047821279b886672a64efd55eae1286"></a><!-- doxytag: member="sc::RDMAMemoryGrp::release_writeonly" ref="5047821279b886672a64efd55eae1286" args="(void *data, distsize_t offset, int size)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1RDMAMemoryGrp.html#5047821279b886672a64efd55eae1286">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_1RDMAMemoryGrp.html#f724dded9e2334c27e91d90d13d548c4">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="#f724dded9e2334c27e91d90d13d548c4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7ab225c7d38010b434bde153d5b47a19"></a><!-- doxytag: member="sc::RDMAMemoryGrp::sum_reduction" ref="7ab225c7d38010b434bde153d5b47a19" 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="eff84c681afcc912e764cdeed33eb7fd"></a><!-- doxytag: member="sc::RDMAMemoryGrp::sum_reduction_on_node" ref="eff84c681afcc912e764cdeed33eb7fd" 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="fca3d60da8d76114eb52538cc72aef5c"></a><!-- doxytag: member="sc::RDMAMemoryGrp::print" ref="fca3d60da8d76114eb52538cc72aef5c" args="(std::ostream &amp;o=ExEnv::out0()) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsc_1_1RDMAMemoryGrp.html#fca3d60da8d76114eb52538cc72aef5c">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="4ee4641805ed3782e2111f353556c5df"></a><!-- doxytag: member="sc::RDMAMemoryGrp::retrieve_data" ref="4ee4641805ed3782e2111f353556c5df" 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="cc72100d6264048f01b3abb1e7f0cd3f"></a><!-- doxytag: member="sc::RDMAMemoryGrp::replace_data" ref="cc72100d6264048f01b3abb1e7f0cd3f" 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="fe8988ce71b2d8faa61f93bd1ec1bb50"></a><!-- doxytag: member="sc::RDMAMemoryGrp::sum_data" ref="fe8988ce71b2d8faa61f93bd1ec1bb50" 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 class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b1d4937764ec60681d1e353f6f039c1f"></a><!-- doxytag: member="sc::RDMAMemoryGrp::malloc_region" ref="b1d4937764ec60681d1e353f6f039c1f" args="(size_t nbyte)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><b>malloc_region</b> (size_t nbyte)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1659dd30674fd1d3d94787c3c602cea7"></a><!-- doxytag: member="sc::RDMAMemoryGrp::free_region" ref="1659dd30674fd1d3d94787c3c602cea7" args="(void *)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>free_region</b> (void *)</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="7bb349fd3492aab6f9e392b33f0f9d8c"></a><!-- doxytag: member="sc::RDMAMemoryGrp::data_" ref="7bb349fd3492aab6f9e392b33f0f9d8c" args="" -->
char *&nbsp;</td><td class="memItemRight" valign="bottom"><b>data_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="39db4534f5812ec4942b8d7fc7f8551f"></a><!-- doxytag: member="sc::RDMAMemoryGrp::pools_" ref="39db4534f5812ec4942b8d7fc7f8551f" args="" -->
std::vector&lt; Pool * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>pools_</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0957fcae43f67ec24724671eb152889b"></a><!-- doxytag: member="sc::RDMAMemoryGrp::default_pool_size_" ref="0957fcae43f67ec24724671eb152889b" args="" -->
size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>default_pool_size_</b></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="classsc_1_1RDMAMemoryGrp.html" title="The RDMAMemoryGrp abstract class specializes the MsgMemoryGrp class.">RDMAMemoryGrp</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 RDMA to implement global shared memory. <hr><h2>Member Function Documentation</h2>
<a class="anchor" name="22ac29f224a65fafbaea14e0cc45933f"></a><!-- doxytag: member="sc::RDMAMemoryGrp::obtain_readwrite" ref="22ac29f224a65fafbaea14e0cc45933f" args="(distsize_t offset, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* sc::RDMAMemoryGrp::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="f724dded9e2334c27e91d90d13d548c4"></a><!-- doxytag: member="sc::RDMAMemoryGrp::release_readwrite" ref="f724dded9e2334c27e91d90d13d548c4" args="(void *data, distsize_t offset, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::RDMAMemoryGrp::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="49c353380e4629ae9222bda6708e5524"></a><!-- doxytag: member="sc::RDMAMemoryGrp::set_localsize" ref="49c353380e4629ae9222bda6708e5524" args="(size_t localsize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sc::RDMAMemoryGrp::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>

<p>Reimplemented in <a class="el" href="classsc_1_1ARMCIMemoryGrp.html#8d0b5d860b35b2510ddb2a4b88ef2503">sc::ARMCIMemoryGrp</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="memrdma_8h_source.html">memrdma.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>