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