Add complete set of dependency generation flags.
[charm.git] / src / conv-perf / charmProjections.C
blobc4b7e72e4b8f2805442b1c31d9eb91d1d6bc4b41
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include "converse.h"
5 #include "charmProjections.h"
6 #include "traceCoreCommon.h"
7 #include "charmEvents.h"
8 #include "ck.h"
9 #include "trace-common.h" // for _threadEP
11 #if CMK_TRACE_ENABLED
12 CtvStaticDeclare(int,curThreadEvent);
14 static int curEvent;
15 static int execEvent;
16 static int execEp;
17 static int execPe;
18 static int curevent=0;
19 #endif
21 extern "C" void initCharmProjections() 
23 #if CMK_TRACE_ENABLED
24   CtvInitialize(int,curThreadEvent);
25   CtvAccess(curThreadEvent) = 0;
26   curEvent = 0;
27 #endif
30 //TODO
31 //extern "C" int  traceRegisterUserEvent(const char*) 
32 //{return -1;}  
34 extern "C" void charm_creation(envelope *e, int ep, int num)
36 #if CMK_TRACE_ENABLED
37   if(e==0) {
38     CtvAccess(curThreadEvent)=curEvent;
39         int iData[4];
40         iData[0] = ForChareMsg;
41         iData[1] = ep;
42         iData[2] = curEvent++;
43         iData[3] = CkMyPe();
44         LogEvent1(_CHARM_LANG_ID, _E_CREATION, 4, iData); 
45   } else {
46     e->setEvent(curEvent);
47     for(int i=0; i<num; i++) {
48                 int iData[5];
49                 iData[0] = e->getMsgtype();
50                 iData[1] = ep;
51                 iData[2] = curEvent+i;
52                 iData[3] = CkMyPe();
53                 iData[4] = e->getTotalsize();
54                 LogEvent1(_CHARM_LANG_ID, _E_CREATION, 5, iData); 
55     }
56     curEvent += num;
57   }
58 #endif
61 extern "C" void charm_beginExecute(envelope *e)
63 #if CMK_TRACE_ENABLED
64   if(e==0) {
65     execEvent = CtvAccess(curThreadEvent);
66     execEp = (-1);
67         int iData[4];
68         iData[0] = ForChareMsg;
69         iData[1] = _threadEP;
70         iData[2] = execEvent;
71         iData[3] = CkMyPe();
72         LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 4, iData); 
73   } else {
74     charm_beginExecuteDetailed(e->getEvent(),e->getMsgtype(),e->getEpIdx(),e->getSrcPe(),e->getTotalsize());
75   }
76 #endif
79 extern "C" void charm_beginExecuteDetailed(int event,int msgType,int ep,int srcPe,int ml)
81 #if CMK_TRACE_ENABLED
82   execEvent=event;
83   execEp=ep;
84   execPe=srcPe;
85   int iData[5];
86   iData[0] = msgType;
87   iData[1] = ep;
88   iData[2] = event;
89   iData[3] = srcPe;
90   iData[4] = ml;
91  // CkPrintf("iData in beginExecuteDetailed %d %d \n",event,srcPe);
92   LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 5, iData); 
93 #endif
96 extern "C" void charm_endExecute(void)
98 #if CMK_TRACE_ENABLED
99   if(execEp == (-1)) {
100         int iData[4];
101         iData[0] = 0;
102         iData[1] = _threadEP;
103         iData[2] = execEvent;
104         iData[3] = CkMyPe();
105         LogEvent1(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
106   } else {
107         int iData[4];
108         iData[0] = 0;
109         iData[1] = execEp;
110         iData[2] = execEvent;
111         iData[3] = execPe;
112         LogEvent1(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
113   }
114 #endif
117 // implementing enqueue and dequeue --schak 
118 // however these type of events are not generated by anyone
120 extern "C" void charm_enqueueMsg(envelope *e) {
121 #if CMK_TRACE_ENABLED
122         int iData[3];
123         iData[0] = e->getMsgtype();
124         iData[1] = e->getEvent();
125         iData[2] = e->getSrcPe();
126         LogEvent1(_CHARM_LANG_ID,_E_ENQUEUE,3,iData);
127 #endif
128 }       
130 extern "C" void charm_dequeueMsg(envelope *e) {
131 #if CMK_TRACE_ENABLED
132         int iData[3];
133         iData[0] = e->getMsgtype();
134         iData[1] = e->getEvent();
135         iData[2] = e->getSrcPe();
136         LogEvent1(_CHARM_LANG_ID,_E_DEQUEUE,3,iData);
137 #endif
138 }       
140 extern "C" void charm_beginComputation(void)
142 #if CMK_TRACE_ENABLED
143         LogEvent1(_CHARM_LANG_ID, _E_BEGIN_COMPUTATION, 0, NULL); 
144 #endif
147 extern "C" void charm_endComputation(void)
149 #if CMK_TRACE_ENABLED
150         LogEvent1(_CHARM_LANG_ID, _E_END_COMPUTATION, 0, NULL); 
151 #endif
154 extern "C" void charm_messageRecv(char *env, int pe) {} //TODO
156 extern "C" void charm_userEvent(int e) {
157 #if CMK_TRACE_ENABLED
158         int iData[3];
159         iData[0] = e;
160         iData[1] = curevent;
161         iData[2] = CkMyPe();
162         curevent++;
163         LogEvent1(_CHARM_LANG_ID, _E_USER_EVENT_CHARM,3,iData);
164 #endif
165 }       
168 extern "C" void charm_userPairEvent(int e,double bt,double et){
169 #if CMK_TRACE_ENABLED
170         int iData1[3];
171         int iData2[3];
172         iData1[0] = iData2[0] = e;
173         iData1[1] = iData2[1] = curevent;
174         iData1[2] = iData2[2] = CkMyPe();
175         curevent++;
176         LogEvent4(_CHARM_LANG_ID, _E_USER_EVENT_PAIR,3,iData1,bt);
177         LogEvent4(_CHARM_LANG_ID, _E_USER_EVENT_PAIR,3,iData2,et);
178         
179 #endif
182 extern "C" void charm_beginPack(void)
184 #if CMK_TRACE_ENABLED
185         int iData[1];
186         iData[0] = CkMyPe();
187         LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PACK, 1, iData); 
188 #endif
191 extern "C" void charm_endPack(void)
193 #if CMK_TRACE_ENABLED
194         int iData[1];
195         iData[0] = CkMyPe();
196         LogEvent1(_CHARM_LANG_ID, _E_END_PACK, 1, iData); 
197 #endif
200 extern "C" void charm_beginUnpack(void)
202 #if CMK_TRACE_ENABLED
203         int iData[1];
204         iData[0] = CkMyPe();
205         LogEvent1(_CHARM_LANG_ID, _E_BEGIN_UNPACK, 1, iData); 
206 #endif
209 extern "C" void charm_endUnpack(void)
211 #if CMK_TRACE_ENABLED
212         int iData[1];
213         iData[0] = CkMyPe();
214         LogEvent1(_CHARM_LANG_ID, _E_END_UNPACK, 1, iData); 
215 #endif