Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 263386785cefb9ae5d63b926d214d809 > files > 329

mpqc-2.1.2-4mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>sc::MemoryGrp class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:17:08 2002 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>sc::MemoryGrp  Class Reference</h1>The <a class="el" href="class_sc__MessageGrp.html">MessageGrp</a> abstract class provides a way of accessing distributed memory in a parallel machine. 
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="memory_h-source.html">memory.h</a>&gt;</code>
<p>
Inheritance diagram for sc::MemoryGrp<p><center><img src="class_sc__MemoryGrp_inherit_graph.gif" border="0" usemap="#sc::MemoryGrp_inherit_map" alt="Inheritance graph"></center>
<map name="sc::MemoryGrp_inherit_map">
<area href="class_sc__MsgMemoryGrp.html" shape="rect" coords="113,280,235,299">
<area href="class_sc__ProcMemoryGrp.html" shape="rect" coords="259,280,382,299">
<area href="class_sc__DescribedClass.html" shape="rect" coords="190,147,305,166">
<area href="class_sc__RefCount.html" shape="rect" coords="206,80,289,99">
<area href="class_sc__Identity.html" shape="rect" coords="211,14,283,32">
<area href="class_sc__ActiveMsgMemoryGrp.html" shape="rect" coords="14,347,171,366">
<area href="class_sc__ShmMemoryGrp.html" shape="rect" coords="195,347,318,366">
<area href="class_sc__MTMPIMemoryGrp.html" shape="rect" coords="22,414,163,432">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for sc::MemoryGrp:<p><center><img src="class_sc__MemoryGrp_coll_graph.gif" border="0" usemap="#sc::MemoryGrp_coll_map" alt="Collaboration graph"></center>
<map name="sc::MemoryGrp_coll_map">
<area href="class_sc__DescribedClass.html" shape="rect" coords="14,152,129,171">
<area href="class_sc__RefCount.html" shape="rect" coords="30,83,113,101">
<area href="class_sc__Identity.html" shape="rect" coords="35,13,107,32">
<area href="class_sc__Ref.html" shape="rect" coords="259,152,395,171">
<area href="class_sc__RefBase.html" shape="rect" coords="289,83,366,101">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_sc__MemoryGrp-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="a0" doxytag="sc::MemoryGrp::MemoryGrp"></a>
&nbsp;</td><td valign=bottom><b>MemoryGrp</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="a1" doxytag="sc::MemoryGrp::MemoryGrp"></a>
&nbsp;</td><td valign=bottom><b>MemoryGrp</b> (const <a class="el" href="class_sc__Ref.html">Ref</a>&lt; <a class="el" href="class_sc__KeyVal.html">KeyVal</a> &gt; &amp;)</td></tr>
<tr><td nowrap align=right valign=top><a name="a2" doxytag="sc::MemoryGrp::~MemoryGrp"></a>
virtual&nbsp;</td><td valign=bottom><b>~MemoryGrp</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="a3" doxytag="sc::MemoryGrp::me"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a3">me</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns who I am.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a4" doxytag="sc::MemoryGrp::n"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a4">n</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns how many nodes there are.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a5">set_localsize</a> (size_t)=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set the size of locally held memory.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a6" doxytag="sc::MemoryGrp::localsize"></a>
size_t&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a6">localsize</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the amount of memory residing locally on <a class="el" href="class_sc__MemoryGrp.html#a3">me</a>().</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a7" doxytag="sc::MemoryGrp::localdata"></a>
virtual void*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a7">localdata</a> ()=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns a pointer to the local data.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a8" doxytag="sc::MemoryGrp::localoffset"></a>
distsize_t&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a8">localoffset</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the global offset to this node's memory.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a9" doxytag="sc::MemoryGrp::size"></a>
int&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a9">size</a> (int node)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the amount of memory residing on node.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a10" doxytag="sc::MemoryGrp::offset"></a>
distsize_t&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a10">offset</a> (int node)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the global offset to node's memory.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a11" doxytag="sc::MemoryGrp::totalsize"></a>
distsize_t&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a11">totalsize</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the sum of all memory allocated on all nodes.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a12" doxytag="sc::MemoryGrp::activate"></a>
virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a12">activate</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Activate is called before the memory is to be used.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a13" doxytag="sc::MemoryGrp::deactivate"></a>
virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a13">deactivate</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Deactivate is called after the memory has been used.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a14" doxytag="sc::MemoryGrp::obtain_writeonly"></a>
virtual void*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a14">obtain_writeonly</a> (distsize_t offset, int size)=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This gives write access to the memory location. No locking is done.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a15">obtain_readwrite</a> (distsize_t offset, int size)=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Only one thread can have an unreleased obtain_readwrite at a time.</em> <a href="#a15">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a16" doxytag="sc::MemoryGrp::obtain_readonly"></a>
virtual void*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a16">obtain_readonly</a> (distsize_t offset, int size)=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This gives read access to the memory location. No locking is done.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a17" doxytag="sc::MemoryGrp::release_readonly"></a>
virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a17">release_readonly</a> (void *data, distsize_t offset, int size)=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This is called when read access is no longer needed.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a18" doxytag="sc::MemoryGrp::release_writeonly"></a>
virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a18">release_writeonly</a> (void *data, distsize_t offset, int size)=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This is called when write access is no longer needed.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a19">release_readwrite</a> (void *data, distsize_t offset, int size)=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This is called when read/write access is no longer needed.</em> <a href="#a19">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a20" doxytag="sc::MemoryGrp::sum_reduction"></a>
virtual void&nbsp;</td><td valign=bottom><b>sum_reduction</b> (double *data, distsize_t doffset, int dsize)</td></tr>
<tr><td nowrap align=right valign=top><a name="a21" doxytag="sc::MemoryGrp::sum_reduction_on_node"></a>
virtual void&nbsp;</td><td valign=bottom><b>sum_reduction_on_node</b> (double *data, size_t doffset, int dsize, int node=-1)</td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a22">sync</a> ()=0</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Synchronizes all the nodes.</em> <a href="#a22">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a23">catchup</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Processes outstanding requests.</em> <a href="#a23">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a24" doxytag="sc::MemoryGrp::print"></a>
virtual void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#a24">print</a> (std::ostream &amp;o=ExEnv::out0()) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Prints out information about the object.</em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Static Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top>MemoryGrp*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#d0">initial_memorygrp</a> (int &amp;argc, char **argv)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Create a memory group.</em> <a href="#d0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="d1" doxytag="sc::MemoryGrp::initial_memorygrp"></a>
MemoryGrp*&nbsp;</td><td valign=bottom><b>initial_memorygrp</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="d2" doxytag="sc::MemoryGrp::set_default_memorygrp"></a>
void&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#d2">set_default_memorygrp</a> (const <a class="el" href="class_sc__Ref.html">Ref</a>&lt; MemoryGrp &gt; &amp;)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>The default memory group contains the primary memory group to be used by an application.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="d3" doxytag="sc::MemoryGrp::get_default_memorygrp"></a>
MemoryGrp*&nbsp;</td><td valign=bottom><a class="el" href="class_sc__MemoryGrp.html#d3">get_default_memorygrp</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Returns the default memory group.</em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="b0" doxytag="sc::MemoryGrp::obtain_local_lock"></a>
void&nbsp;</td><td valign=bottom><b>obtain_local_lock</b> (size_t start, size_t fence)</td></tr>
<tr><td nowrap align=right valign=top><a name="b1" doxytag="sc::MemoryGrp::release_local_lock"></a>
void&nbsp;</td><td valign=bottom><b>release_local_lock</b> (size_t start, size_t fence)</td></tr>
<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="n0" doxytag="sc::MemoryGrp::me_"></a>
int&nbsp;</td><td valign=bottom><b>me_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n1" doxytag="sc::MemoryGrp::n_"></a>
int&nbsp;</td><td valign=bottom><b>n_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n2" doxytag="sc::MemoryGrp::offsets_"></a>
distsize_t*&nbsp;</td><td valign=bottom><b>offsets_</b></td></tr>
<tr><td nowrap align=right valign=top><a name="n3" doxytag="sc::MemoryGrp::debug_"></a>
int&nbsp;</td><td valign=bottom><b>debug_</b></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="class_sc__MessageGrp.html">MessageGrp</a> abstract class provides a way of accessing distributed memory in a parallel machine.
<p>
Several specializations are available. For one processor, <a class="el" href="class_sc__ProcMemoryGrp.html">ProcMemoryGrp</a> provides a simple stub implementation. Otherwise, the specializations that work well are <a class="el" href="class_sc__ShmMemoryGrp.html">ShmMemoryGrp</a>, ParagonMemoryGrp, and MPLMemoryGrp. If your parallel operation system and libraries do not directly support active messages or global shared memory you can try IParagonMemoryGrp or MPIMemoryGrp, as is appropriate. However, these latter specializations do not always work and perform poorly.
<p>
If a <a class="el" href="class_sc__MemoryGrp.html">MemoryGrp</a> is not given to the program, then one will be automatically chosen depending on which <a class="el" href="class_sc__MessageGrp.html">MessageGrp</a> is used by default, the type of machine on which the code was compiled, and what options were given at configuration time. The following rules are applied until the first matching set of criteria are found.
<p>
\begin{itemize}
<p>
\item If an <a class="el" href="class_sc__MPIMessageGrp.html">MPIMessageGrp</a> is used then:
<p>
\begin{itemize}
<p>
\item If the has the Message Passing Library then MPLMemoryGrp is used.
<p>
\item Otherwise, MPIMemoryGrp is used.
<p>
\end{itemize}
<p>
\item If an <a class="el" href="class_sc__ShmMessageGrp.html">ShmMessageGrp</a> is used, then a <a class="el" href="class_sc__ShmMemoryGrp.html">ShmMemoryGrp</a> is used.
<p>
\item If there is only one processor, then <a class="el" href="class_sc__ProcMemoryGrp.html">ProcMemoryGrp</a> is used.
<p>
\item Otherwise, no memory group can be created.
<p>
\end{itemize} 
<p>
<hr><h2>Member Function Documentation</h2>
<a name="a23" doxytag="sc::MemoryGrp::catchup"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::MemoryGrp::catchup (
          </b></td>
          <td valign="bottom"><b>
)<code> [virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Processes outstanding requests.
<p>
Some memory group implementations don't have access to real shared memory or even active messages. Instead, requests are processed whenever certain memory group routines are called. This can cause large latencies and buffer overflows. If this is a problem, then the catchup member can be called to process all outstanding requests.     </td>
  </tr>
</table>
<a name="d0" doxytag="sc::MemoryGrp::initial_memorygrp"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
MemoryGrp * sc::MemoryGrp::initial_memorygrp (
          </b></td>
          <td valign="bottom"><b>
int &amp; <em>argc</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
char ** <em>argv</em>&nbsp;)<code> [static]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Create a memory group.
<p>
This routine looks for a -memorygrp argument, then the environmental variable MEMORYGRP, and, finally, the default <a class="el" href="class_sc__MessageGrp.html">MessageGrp</a> object to decide which specialization of <a class="el" href="class_sc__MemoryGrp.html">MemoryGrp</a> would be appropriate. The argument to -memorygrp should be either string for a <a class="el" href="class_sc__ParsedKeyVal.html">ParsedKeyVal</a> constructor or a classname. The default <a class="el" href="class_sc__ThreadGrp.html">ThreadGrp</a> and <a class="el" href="class_sc__MessageGrp.html">MessageGrp</a> objects should be initialized before this is called.     </td>
  </tr>
</table>
<a name="a15" doxytag="sc::MemoryGrp::obtain_readwrite"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void * sc::MemoryGrp::obtain_readwrite (
          </b></td>
          <td valign="bottom"><b>
distsize_t <em>offset</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
int <em>size</em>&nbsp;)<code> [pure virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>
Reimplemented in <a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a6">sc::ActiveMsgMemoryGrp</a>, <a class="el" href="class_sc__ProcMemoryGrp.html#a5">sc::ProcMemoryGrp</a>, and <a class="el" href="class_sc__ShmMemoryGrp.html#a5">sc::ShmMemoryGrp</a>.    </td>
  </tr>
</table>
<a name="a19" doxytag="sc::MemoryGrp::release_readwrite"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::MemoryGrp::release_readwrite (
          </b></td>
          <td valign="bottom"><b>
void * <em>data</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
distsize_t <em>offset</em>, 
          </b></td>
        </tr>
        <tr>
          <td></td>
          <td><b>
int <em>size</em>&nbsp;)<code> [pure virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This is called when read/write access is no longer needed.
<p>
The memory will be unlocked. 
<p>
Reimplemented in <a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a10">sc::ActiveMsgMemoryGrp</a>, <a class="el" href="class_sc__ProcMemoryGrp.html#a10">sc::ProcMemoryGrp</a>, and <a class="el" href="class_sc__ShmMemoryGrp.html#a10">sc::ShmMemoryGrp</a>.    </td>
  </tr>
</table>
<a name="a5" doxytag="sc::MemoryGrp::set_localsize"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::MemoryGrp::set_localsize (
          </b></td>
          <td valign="bottom"><b>
size_t <em>localsize</em>&nbsp;)<code> [pure virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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="class_sc__MemoryGrp.html#a4">n</a>() - 1. 
<p>
Reimplemented in <a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a3">sc::ActiveMsgMemoryGrp</a>, <a class="el" href="class_sc__MsgMemoryGrp.html#a3">sc::MsgMemoryGrp</a>, <a class="el" href="class_sc__ProcMemoryGrp.html#a3">sc::ProcMemoryGrp</a>, and <a class="el" href="class_sc__ShmMemoryGrp.html#a3">sc::ShmMemoryGrp</a>.    </td>
  </tr>
</table>
<a name="a22" doxytag="sc::MemoryGrp::sync"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td nowrap valign="top"><b> 
void sc::MemoryGrp::sync (
          </b></td>
          <td valign="bottom"><b>
)<code> [pure virtual]</code>
          </b></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Synchronizes all the nodes.
<p>
Consider using this when the way you you access memory changes. 
<p>
Reimplemented in <a class="el" href="class_sc__MsgMemoryGrp.html#a4">sc::MsgMemoryGrp</a>, <a class="el" href="class_sc__MTMPIMemoryGrp.html#a5">sc::MTMPIMemoryGrp</a>, and <a class="el" href="class_sc__ProcMemoryGrp.html#a11">sc::ProcMemoryGrp</a>.    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="memory_h-source.html">memory.h</a></ul>
<hr>
<address>
<small>

Generated at Mon Oct 14 14:17:08 2002 for <a
href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a>
2.1.2 using the documentation package <a
href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a>
1.2.5.

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