#include <Communicate.h>
Definition at line 18 of file Communicate.h.
 
◆ Communicate()
      
        
          | Communicate::Communicate  | 
          ( | 
          void  | 
           | ) | 
           | 
        
      
 
Definition at line 32 of file Communicate.C.
References CsmAckHandler(), CsmHandler(), and split().
   34   CkpvInitialize(CmmTable, CsmMessages);
    35   CsmHandlerIndex = CmiRegisterHandler((CmiHandler) 
CsmHandler);
    36   CsmAckHandlerIndex = CmiRegisterHandler((CmiHandler) 
CsmAckHandler);
    37   CkpvAccess(CsmMessages) = CmmNew();
    40   int self = CkMyNode();
    42   int range_end = CkNumNodes();
    43   while ( 
self != range_begin ) {
    44     parent_node = range_begin;
    46     int split = range_begin + ( range_end - range_begin ) / 2;
    48     else { range_begin = 
split; }
    50   int send_near = 
self + 1;
    51   int send_far = send_near + ( range_end - send_near ) / 2;
    53   parent = CkNodeFirst(parent_node);
    55   if ( send_far < range_end ) children[nchildren++] = CkNodeFirst(send_far);
    56   if ( send_near < send_far ) children[nchildren++] = CkNodeFirst(send_near);
    58   CkpvInitialize(
int, CsmAcks);
    59   CkpvAccess(CsmAcks) = nchildren;
    61   ackmsg = (
char *) CmiAlloc(CmiMsgHeaderSizeBytes);
    62   CmiSetHandler(ackmsg, CsmAckHandlerIndex);
 static void CsmHandler(void *msg)
 
std::vector< std::string > split(const std::string &text, std::string delimiter)
 
static void CsmAckHandler(void *msg)
 
 
 
 
◆ ~Communicate()
      
        
          | Communicate::~Communicate  | 
          ( | 
          void  | 
           | ) | 
           | 
        
      
 
 
◆ getMessage()
      
        
          | void * Communicate::getMessage  | 
          ( | 
          int  | 
          PE,  | 
        
        
           | 
           | 
          int  | 
          tag  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Definition at line 83 of file Communicate.C.
References NAMD_bug().
   85   if ( CmiMyRank() ) 
NAMD_bug(
"Communicate::getMessage called on non-rank-zero Pe\n");
    90   itag[0] = (PE==(-1)) ? (CmmWildCard) : PE;
    91   itag[1] = (tag==(-1)) ? (CmmWildCard) : tag;
    92   while((msg=CmmGet(CkpvAccess(CsmMessages),2,itag,rtag))==0) {
    97   CmiSyncSend(parent, CmiMsgHeaderSizeBytes, ackmsg);
    99   while ( CkpvAccess(CsmAcks) < nchildren ) {
   103   CkpvAccess(CsmAcks) = 0;
   105   int size = SIZEFIELD(msg);
   106   for ( 
int i = 0; i < nchildren; ++i ) {
   107     CmiSyncSend(children[i],size,(
char*)msg);
 void NAMD_bug(const char *err_msg)
 
 
 
 
◆ newInputStream()
      
        
          | MIStream * Communicate::newInputStream  | 
          ( | 
          int  | 
          pe,  | 
        
        
           | 
           | 
          int  | 
          tag  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
 
◆ newOutputStream()
      
        
          | MOStream * Communicate::newOutputStream  | 
          ( | 
          int  | 
          pe,  | 
        
        
           | 
           | 
          int  | 
          tag,  | 
        
        
           | 
           | 
          unsigned int  | 
          bufsize  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
 
◆ sendMessage()
      
        
          | void Communicate::sendMessage  | 
          ( | 
          int  | 
          PE,  | 
        
        
           | 
           | 
          void *  | 
          msg,  | 
        
        
           | 
           | 
          int  | 
          size  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Definition at line 113 of file Communicate.C.
References ALL, ALLBUTME, and NAMD_bug().
Referenced by MOStream::end().
  115   if ( CmiMyPe() ) 
NAMD_bug(
"Communicate::sendMessage not from Pe 0");
   117   while ( CkpvAccess(CsmAcks) < nchildren ) {
   121   CkpvAccess(CsmAcks) = 0;
   123   CmiSetHandler(msg, CsmHandlerIndex);
   126       NAMD_bug(
"Unexpected Communicate::sendMessage(ALL,...)");
   131       for ( 
int i = 0; i < nchildren; ++i ) {
   132         CmiSyncSend(children[i],size,(
char*)msg);
   136       NAMD_bug(
"Unexpected Communicate::sendMessage(PEL,...)");
 
void NAMD_bug(const char *err_msg)
 
 
 
 
The documentation for this class was generated from the following files: