37bcfb11ff8c4f6686d24d9fdeb8687c74ba3fee
[charm.git] / src / conv-perf / charmProjections.C
1
2 #include "envelope.h"
3 #include "converse.h"
4 #include "charmProjections.h"
5 #include "traceCoreCommon.h"
6 #include "charmEvents.h"
7
8 CtvStaticDeclare(int,curThreadEvent);
9
10 static int _numEvents = 0;
11 static int _threadMsg, _threadChare, _threadEP;
12 static int curEvent;
13 static int execEvent;
14 static int execEp;
15 static int execPe;
16
17 extern "C" void initCharmProjections() 
18 {
19   CtvInitialize(int,curThreadEvent);
20   CtvAccess(curThreadEvent) = 0;
21   curEvent = 0;
22 }
23
24 extern "C" int  traceRegisterUserEvent(const char*) {}  //TODO
25
26 extern "C" void creation(envelope *e, int num)
27 {
28   if(e==0) {
29     CtvAccess(curThreadEvent)=curEvent;
30         int* iData = (int*)malloc(sizeof(int)*4); 
31         iData[0] = ForChareMsg;
32         iData[1] = _threadEP;
33         iData[2] = curEvent++;
34         iData[3] = CkMyPe();
35         LogEvent(_CHARM_LANG_ID, _E_CREATION, 4, iData); 
36   } else {
37     e->setEvent(curEvent);
38     for(int i=0; i<num; i++) {
39                 int* iData = (int*)malloc(sizeof(int)*5); 
40                 iData[0] = e->getMsgtype();
41                 iData[1] = e->getEpIdx();
42                 iData[2] = curEvent+i;
43                 iData[3] = CkMyPe();
44                 iData[4] = e->getTotalsize();
45                 LogEvent(_CHARM_LANG_ID, _E_CREATION, 5, iData); 
46     }
47     curEvent += num;
48   }
49 }
50
51 extern "C" void beginExecute(envelope *e)
52 {
53   if(e==0) {
54     execEvent = CtvAccess(curThreadEvent);
55     execEp = (-1);
56         int* iData = (int*)malloc(sizeof(int)*4); 
57         iData[0] = ForChareMsg;
58         iData[1] = _threadEP;
59         iData[2] = execEvent;
60         iData[3] = CkMyPe();
61         LogEvent(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 4, iData); 
62   } else {
63     beginExecute(e->getEvent(),e->getMsgtype(),e->getEpIdx(),e->getSrcPe(),e->getTotalsize());
64   }
65 }
66
67 extern "C" void beginExecute(int event,int msgType,int ep,int srcPe,int ml)
68 {
69   execEvent=event;
70   execEp=ep;
71   execPe=srcPe;
72   int* iData = (int*)malloc(sizeof(int)*5); 
73   iData[0] = msgType;
74   iData[1] = ep;
75   iData[2] = event;
76   iData[3] = srcPe;
77   iData[4] = ml;
78   LogEvent(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 5, iData); 
79 }
80
81 extern "C" void endExecute(void)
82 {
83   if(execEp == (-1)) {
84         int* iData = (int*)malloc(sizeof(int)*4); 
85         iData[0] = 0;
86         iData[1] = _threadEP;
87         iData[2] = execEvent;
88         iData[3] = CkMyPe();
89         LogEvent(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
90   } else {
91         int* iData = (int*)malloc(sizeof(int)*4); 
92         iData[0] = 0;
93         iData[1] = execEp;
94         iData[2] = execEvent;
95         iData[3] = execPe;
96         LogEvent(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
97   }
98 }
99
100 extern "C" void enqueue(envelope *e) {} //TODO
101
102 extern "C" void dequeue(envelope *e) {} //TODO
103
104 extern "C" void beginComputation(void)
105 {
106         if(CkMyRank()==0) {
107                 //DOUBT: what are these registrations ? ... cocurrently running with projections => problem 
108         //_threadMsg = CkRegisterMsg("dummy_thread_msg", 0, 0, 0, 0);
109         //_threadChare = CkRegisterChare("dummy_thread_chare", 0);
110         //_threadEP = CkRegisterEp("dummy_thread_ep", 0, _threadMsg,_threadChare);
111         }
112         int* iData = (int*)malloc(sizeof(int)*4); 
113         iData[0] = iData[1] = 0;
114         iData[2] = iData[3] = -1;
115         LogEvent(_CHARM_LANG_ID, _E_BEGIN_COMPUTATION, 4, iData); 
116 }
117
118 extern "C" void endComputation(void)
119 {
120         int* iData = (int*)malloc(sizeof(int)*4); 
121         iData[0] = iData[1] = 0;
122         iData[2] = iData[3] = -1;
123         LogEvent(_CHARM_LANG_ID, _E_END_COMPUTATION, 4, iData); 
124 }
125
126 extern "C" void messageRecv(char *env, int pe) {} //TODO
127
128 extern "C" void userEvent(int e)
129 extern "C" void beginPack(void)
130 {
131         int* iData = (int*)malloc(sizeof(int)*4); 
132         iData[0] = iData[1] = iData[2] = 0;
133         iData[3] = CkMyPe();
134         LogEvent(_CHARM_LANG_ID, _E_BEGIN_PACK, 4, iData); 
135 }
136
137 extern "C" void endPack(void)
138 {
139         int* iData = (int*)malloc(sizeof(int)*4); 
140         iData[0] = iData[1] = iData[2] = 0;
141         iData[3] = CkMyPe();
142         LogEvent(_CHARM_LANG_ID, _E_END_PACK, 4, iData); 
143 }
144
145 extern "C" void beginUnpack(void)
146 {
147         int* iData = (int*)malloc(sizeof(int)*4); 
148         iData[0] = iData[1] = iData[2] = 0;
149         iData[3] = CkMyPe();
150         LogEvent(_CHARM_LANG_ID, _E_BEGIN_UNPACK, 4, iData); 
151 }
152
153 extern "C" void endUnpack(void)
154 {
155         int* iData = (int*)malloc(sizeof(int)*4); 
156         iData[0] = iData[1] = iData[2] = 0;
157         iData[3] = CkMyPe();
158         LogEvent(_CHARM_LANG_ID, _E_END_UNPACK, 4, iData); 
159 }
160
161