NAMD
DataExchanger.h
Go to the documentation of this file.
1 
7 #ifndef _DATAEXCHANGER_H
8 #define _DATAEXCHANGER_H
9 
10 #include "charm++.h"
11 #include "main.h"
12 #include "DataExchanger.decl.h"
13 
14 #define CPROXY_DE(x) ((CProxy_DataExchanger)(x))
15 CpvExtern(int, breakScheduler);
16 CpvExtern(int, inEval);
17 
18 class DataMessage {
19  public:
20  char core[CmiMsgHeaderSizeBytes];
21  int src, srcPart;
22  int size, code;
23  char data[1];
24 
25  void setMessage(const char *_data, int _src, int _srcPart, int _size, int _handler, int _code) {
26  src = _src; srcPart = _srcPart;
27  size = _size;
28  code = _code;
29  memcpy(data,_data,size);
30  CmiSetHandler(core,_handler);
31  }
32 };
33 
35  public:
36  char core[CmiMsgHeaderSizeBytes];
37  int srcPart;
38  int dcdIndex;
39  uint16_t dcdSelectIndex;
40  char data[1];
41 };
42 
44  public:
45  char core[CmiMsgHeaderSizeBytes];
46  int srcPart;
47  int dcdIndex;
48  uint16_t dcdSelectIndex;
50  double DELTA;
51  double unitcell[6];
52  char data[1];
53 };
54 
56  public:
57  char core[CmiMsgHeaderSizeBytes];
58 };
59 
60 class DataExchanger : public CBase_DataExchanger
61 {
62  public:
64  DataExchanger();
65  ~DataExchanger(void);
66 
68  enum{ TREE_WIDTH=2};
70 
71  //message handlers
78 };
79 
80 extern "C" {
81 void packSend(int dest, int partition, const char *data, int size, int handler, int code=0);
82 void sendReplicaDcdInit(int dstPart, ReplicaDcdInitMsg *msg, int msgsize);
83 void sendReplicaDcdData(int dstPart, ReplicaDcdDataMsg *msg, int msgsize);
84 void sendReplicaDcdAck(int dstPart, ReplicaDcdAckMsg *msg);
88 void recvData(DataMessage *dmsg);
89 void recvAck(DataMessage *dmsg);
90 
91 void replica_send(const char *sndbuf, int sendcount, int destPart, int destPE);
92 void replica_sendRecv(const char *sndbuf, int sendcount, int destPart, int destPE, DataMessage **precvMsg, int srcPart, int srcPE);
93 void replica_recv(DataMessage **precvMsg, int srcPart, int srcPE);
94 void replica_barrier();
95 
96 void replica_bcast(char *buf, int count, int root=0);
97 void replica_min_double(double *dat, int count);
98 
99 void replica_eval(const char *cmdbuf, int targPart, int targPE, DataMessage **precvMsg);
100 }
101 #endif
uint16_t dcdSelectIndex
Definition: DataExchanger.h:39
void replica_barrier()
void setMessage(const char *_data, int _src, int _srcPart, int _size, int _handler, int _code)
Definition: DataExchanger.h:25
~DataExchanger(void)
void replica_bcast(char *buf, int count, int root=0)
static void partition(int *order, const FullAtom *atoms, int begin, int end)
Definition: SortAtoms.C:45
void replica_recv(DataMessage **precvMsg, int srcPart, int srcPE)
char core[CmiMsgHeaderSizeBytes]
Definition: DataExchanger.h:57
void recvReplicaDcdAck(ReplicaDcdAckMsg *msg)
Definition: DataExchanger.C:87
void sendReplicaDcdInit(int dstPart, ReplicaDcdInitMsg *msg, int msgsize)
Definition: DataExchanger.C:45
void recvData(DataMessage *dmsg)
Definition: DataExchanger.C:93
char core[CmiMsgHeaderSizeBytes]
Definition: DataExchanger.h:20
int recv_eval_command_idx
Definition: DataExchanger.h:76
void packSend(int dest, int partition, const char *data, int size, int handler, int code=0)
Definition: DataExchanger.C:34
void recvReplicaDcdInit(ReplicaDcdInitMsg *msg)
Definition: DataExchanger.C:77
void recvReplicaDcdData(ReplicaDcdDataMsg *msg)
Definition: DataExchanger.C:82
void replica_eval(const char *cmdbuf, int targPart, int targPE, DataMessage **precvMsg)
void recvAck(DataMessage *dmsg)
Definition: DataExchanger.C:99
int recv_eval_result_idx
Definition: DataExchanger.h:77
char core[CmiMsgHeaderSizeBytes]
Definition: DataExchanger.h:36
void sendReplicaDcdData(int dstPart, ReplicaDcdDataMsg *msg, int msgsize)
Definition: DataExchanger.C:56
void replica_min_double(double *dat, int count)
char data[1]
Definition: DataExchanger.h:23
uint16_t dcdSelectIndex
Definition: DataExchanger.h:48
CpvExtern(int, breakScheduler)
double unitcell[6]
Definition: DataExchanger.h:51
char core[CmiMsgHeaderSizeBytes]
Definition: DataExchanger.h:45
void sendReplicaDcdAck(int dstPart, ReplicaDcdAckMsg *msg)
Definition: DataExchanger.C:67
void replica_sendRecv(const char *sndbuf, int sendcount, int destPart, int destPE, DataMessage **precvMsg, int srcPart, int srcPE)
void replica_send(const char *sndbuf, int sendcount, int destPart, int destPE)