<!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::ActiveMsgMemoryGrp 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:16:40 2002 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>sc::ActiveMsgMemoryGrp Class Reference</h1>The <a class="el" href="class_sc__ActiveMsgMemoryGrp.html">ActiveMsgMemoryGrp</a> abstract class specializes the <a class="el" href="class_sc__MsgMemoryGrp.html">MsgMemoryGrp</a> class. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="memamsg_h-source.html">memamsg.h</a>></code> <p> Inheritance diagram for sc::ActiveMsgMemoryGrp<p><center><img src="class_sc__ActiveMsgMemoryGrp_inherit_graph.gif" border="0" usemap="#sc::ActiveMsgMemoryGrp_inherit_map" alt="Inheritance graph"></center> <map name="sc::ActiveMsgMemoryGrp_inherit_map"> <area href="class_sc__MTMPIMemoryGrp.html" shape="rect" coords="22,414,163,432"> <area href="class_sc__MsgMemoryGrp.html" shape="rect" coords="31,280,154,299"> <area href="class_sc__MemoryGrp.html" shape="rect" coords="43,214,142,232"> <area href="class_sc__DescribedClass.html" shape="rect" coords="35,147,150,166"> <area href="class_sc__RefCount.html" shape="rect" coords="51,80,134,99"> <area href="class_sc__Identity.html" shape="rect" coords="57,14,129,32"> </map> <center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for sc::ActiveMsgMemoryGrp:<p><center><img src="class_sc__ActiveMsgMemoryGrp_coll_graph.gif" border="0" usemap="#sc::ActiveMsgMemoryGrp_coll_map" alt="Collaboration graph"></center> <map name="sc::ActiveMsgMemoryGrp_coll_map"> <area href="class_sc__MsgMemoryGrp.html" shape="rect" coords="241,307,363,326"> <area href="class_sc__MemoryGrp.html" shape="rect" coords="182,238,281,257"> <area href="class_sc__DescribedClass.html" shape="rect" coords="14,153,129,171"> <area href="class_sc__RefCount.html" shape="rect" coords="30,83,113,102"> <area href="class_sc__Identity.html" shape="rect" coords="35,14,107,33"> <area href="class_sc__Ref.html" shape="rect" coords="262,153,398,171"> <area href="class_sc__RefBase.html" shape="rect" coords="371,83,449,102"> <area href="class_sc__Ref.html" shape="rect" coords="370,195,509,214"> </map> <center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_sc__ActiveMsgMemoryGrp-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::ActiveMsgMemoryGrp::ActiveMsgMemoryGrp"></a> </td><td valign=bottom><b>ActiveMsgMemoryGrp</b> (const <a class="el" href="class_sc__Ref.html">Ref</a>< <a class="el" href="class_sc__MessageGrp.html">MessageGrp</a> > &msg)</td></tr> <tr><td nowrap align=right valign=top><a name="a1" doxytag="sc::ActiveMsgMemoryGrp::ActiveMsgMemoryGrp"></a> </td><td valign=bottom><b>ActiveMsgMemoryGrp</b> (const <a class="el" href="class_sc__Ref.html">Ref</a>< <a class="el" href="class_sc__KeyVal.html">KeyVal</a> > &)</td></tr> <tr><td nowrap align=right valign=top><a name="a2" doxytag="sc::ActiveMsgMemoryGrp::~ActiveMsgMemoryGrp"></a> </td><td valign=bottom><b>~ActiveMsgMemoryGrp</b> ()</td></tr> <tr><td nowrap align=right valign=top>void </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a3">set_localsize</a> (size_t)</td></tr> <tr><td> </td><td><font size=-1><em>Set the size of locally held memory.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top><a name="a4" doxytag="sc::ActiveMsgMemoryGrp::localdata"></a> void* </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a4">localdata</a> ()</td></tr> <tr><td> </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="a5" doxytag="sc::ActiveMsgMemoryGrp::obtain_writeonly"></a> void* </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a5">obtain_writeonly</a> (distsize_t offset, int size)</td></tr> <tr><td> </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>void* </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a6">obtain_readwrite</a> (distsize_t offset, int size)</td></tr> <tr><td> </td><td><font size=-1><em>Only one thread can have an unreleased obtain_readwrite at a time.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top><a name="a7" doxytag="sc::ActiveMsgMemoryGrp::obtain_readonly"></a> void* </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a7">obtain_readonly</a> (distsize_t offset, int size)</td></tr> <tr><td> </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="a8" doxytag="sc::ActiveMsgMemoryGrp::release_readonly"></a> void </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a8">release_readonly</a> (void *data, distsize_t offset, int size)</td></tr> <tr><td> </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="a9" doxytag="sc::ActiveMsgMemoryGrp::release_writeonly"></a> void </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a9">release_writeonly</a> (void *data, distsize_t offset, int size)</td></tr> <tr><td> </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>void </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a10">release_readwrite</a> (void *data, distsize_t offset, int size)</td></tr> <tr><td> </td><td><font size=-1><em>This is called when read/write access is no longer needed.</em> <a href="#a10">More...</a><em></em></font><br><br></td></tr> <tr><td nowrap align=right valign=top><a name="a11" doxytag="sc::ActiveMsgMemoryGrp::sum_reduction"></a> void </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="a12" doxytag="sc::ActiveMsgMemoryGrp::sum_reduction_on_node"></a> void </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><a name="a13" doxytag="sc::ActiveMsgMemoryGrp::print"></a> void </td><td valign=bottom><a class="el" href="class_sc__ActiveMsgMemoryGrp.html#a13">print</a> (std::ostream &o=ExEnv::out0()) const</td></tr> <tr><td> </td><td><font size=-1><em>Prints out information about the object.</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::ActiveMsgMemoryGrp::retrieve_data"></a> virtual void </td><td valign=bottom><b>retrieve_data</b> (void *, int node, int offset, int size, int lock)=0</td></tr> <tr><td nowrap align=right valign=top><a name="b1" doxytag="sc::ActiveMsgMemoryGrp::replace_data"></a> virtual void </td><td valign=bottom><b>replace_data</b> (void *, int node, int offset, int size, int unlock)=0</td></tr> <tr><td nowrap align=right valign=top><a name="b2" doxytag="sc::ActiveMsgMemoryGrp::sum_data"></a> virtual void </td><td 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 nowrap align=right valign=top><a name="n0" doxytag="sc::ActiveMsgMemoryGrp::data_"></a> char* </td><td valign=bottom><b>data_</b></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> The <a class="el" href="class_sc__ActiveMsgMemoryGrp.html">ActiveMsgMemoryGrp</a> abstract class specializes the <a class="el" href="class_sc__MsgMemoryGrp.html">MsgMemoryGrp</a> class. <p> It uses active messages to implement global shared memory. <p> <hr><h2>Member Function Documentation</h2> <a name="a6" doxytag="sc::ActiveMsgMemoryGrp::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::ActiveMsgMemoryGrp::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> )<code> [virtual]</code> </b></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 from <a class="el" href="class_sc__MemoryGrp.html#a15">sc::MemoryGrp</a>. </td> </tr> </table> <a name="a10" doxytag="sc::ActiveMsgMemoryGrp::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::ActiveMsgMemoryGrp::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> )<code> [virtual]</code> </b></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> This is called when read/write access is no longer needed. <p> The memory will be unlocked. <p> Reimplemented from <a class="el" href="class_sc__MemoryGrp.html#a19">sc::MemoryGrp</a>. </td> </tr> </table> <a name="a3" doxytag="sc::ActiveMsgMemoryGrp::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::ActiveMsgMemoryGrp::set_localsize ( </b></td> <td valign="bottom"><b> size_t <em>localsize</em> )<code> [virtual]</code> </b></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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 from <a class="el" href="class_sc__MsgMemoryGrp.html#a3">sc::MsgMemoryGrp</a>. </td> </tr> </table> <hr>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="memamsg_h-source.html">memamsg.h</a></ul> <hr> <address> <small> Generated at Mon Oct 14 14:16:40 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>