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