projector files
authorArun Singla <asingla@uiuc.edu>
Tue, 23 Apr 2002 17:35:22 +0000 (17:35 +0000)
committerArun Singla <asingla@uiuc.edu>
Tue, 23 Apr 2002 17:35:22 +0000 (17:35 +0000)
src/conv-perf/README.conv-perf [new file with mode: 0644]
src/conv-perf/charmEvents.h
src/conv-perf/charmProjections.C [new file with mode: 0644]
src/conv-perf/charmProjections.h [new file with mode: 0644]
src/conv-perf/traceCore.C
src/conv-perf/traceCore.h
src/conv-perf/traceCoreCommon.C
src/conv-perf/traceCoreCommon.h

diff --git a/src/conv-perf/README.conv-perf b/src/conv-perf/README.conv-perf
new file mode 100644 (file)
index 0000000..c8f5202
--- /dev/null
@@ -0,0 +1,44 @@
+#########################################################################################
+MODULES PER LANGUAGE
+#########################################################################################
+
+TRACER
+------
+LanguageID RegisterLanguage(Language)
+       - could be done at runtime or manually
+
+EventID RegisterEvent(LanguageID, EventNameString, EventDataPrototype)
+       - EventNameString is a string identifying the event 
+       - EventDataPrototype could be a string in language specific format
+         OR variable number of arguments identifying the data structure for that event
+
+void LogEvent(LanguageID, EventID, EventData)
+       - EventData could be a string in language specific format
+         OR variable number of arguments specifying the value of attributes of EventDataPrototype
+
+
+INTERPRETOR
+-----------
+void RegisterEventInterpretor(Language/ID, EventInterpretor)
+       - Language/ID is Language or LanguageID depending upon whether it was runtime 
+         registered or manually registered
+       - EventInterpretor could be a function pointer [Single Per Lanuage]
+
+ANALYSER
+--------
+void RegisterTraceAnalyser(Language/ID, TraceAnalyser)
+       - Language/ID is Language or LanguageID depending upon whether it was runtime 
+         registered or manually registered
+       - TraceAnalyser could be a function pointer [Multiple Per Lanuage]
+
+
+VIZUALIZER
+----------
+void RegisterTraceVizualizer(Language/ID, TraceVisualizer)
+       - Language/ID is Language or LanguageID depending upon whether it was runtime 
+         registered or manually registered
+       - TraceVisualizer could be a function pointer [Multiple Per Lanuage]
+
+
+
+
index 50818db706f22d288db8f66bdd6a77c31ced3b39..07125c93a40ccca3a3475d25c1e7658668d0b387 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef __CHARM_EVENTS_H__
 #define __CHARM_EVENTS_H__
 
-#include "traceCoreCommon.h"
+#include "charmProjections.h"
 
 /* Language ID */
 #define _CHARM_LANG_ID         2       // language ID for charm 
          RegisterEvent(_CHARM_LANG_ID, _E_BEGIN_INTERRUPT  ); \
          RegisterEvent(_CHARM_LANG_ID, _E_END_INTERRUPT    ); \
          RegisterEvent(_CHARM_LANG_ID, _E_MSG_RECV_CHARM   ); \
+         RegisterEvent(_CHARM_LANG_ID, _E_USER_EVENT_CHARM ); \
          RegisterEvent(_CHARM_LANG_ID, _E_BEGIN_PACK       ); \
          RegisterEvent(_CHARM_LANG_ID, _E_END_PACK         ); \
          RegisterEvent(_CHARM_LANG_ID, _E_BEGIN_UNPACK     ); \
          RegisterEvent(_CHARM_LANG_ID, _E_END_UNPACK       ); \
        }
-#define _LOG_E_CREATION() \
-       { LogEvent(_CHARM_LANG_ID, _E_CREATION); }
-#define _LOG_E_BEGIN_PROCESSING() \
-       { LogEvent(_CHARM_LANG_ID, _E_BEGIN_PROCESSING); }
-#define _LOG_E_END_PROCESSING() \
-       { LogEvent(_CHARM_LANG_ID, _E_END_PROCESSING); }
-#define _LOG_E_ENQUEUE() \
-       { LogEvent(_CHARM_LANG_ID, _E_ENQUEUE); }
-#define _LOG_E_DEQUEUE() \
-       { LogEvent(_CHARM_LANG_ID, _E_DEQUEUE); }
-#define _LOG_E_BEGIN_COMPUTATION() \
-       { LogEvent(_CHARM_LANG_ID, _E_BEGIN_COMPUTATION); }
-#define _LOG_E_END_COMPUTATION() \
-       { LogEvent(_CHARM_LANG_ID, _E_END_COMPUTATION); }
-#define _LOG_E_BEGIN_INTERRUPT() \
-       { LogEvent(_CHARM_LANG_ID, _E_BEGIN_INTERRUPT); }
-#define _LOG_E_END_INTERRUPT() \
-       { LogEvent(_CHARM_LANG_ID, _E_END_INTERRUPT); }
-#define _LOG_E_MSG_RECV_CHARM() \
-       { LogEvent(_CHARM_LANG_ID, _E_MSG_RECV_CHARM); }
-#define _LOG_E_BEGIN_PACK() \
-       { LogEvent(_CHARM_LANG_ID, _E_BEGIN_PACK); }
-#define _LOG_E_END_PACK() \
-       { LogEvent(_CHARM_LANG_ID, _E_END_PACK); }
-#define _LOG_E_BEGIN_UNPACK() \
-       { LogEvent(_CHARM_LANG_ID, _E_BEGIN_UNPACK); }
-#define _LOG_E_END_UNPACK() \
-       { LogEvent(_CHARM_LANG_ID, _E_END_UNPACK); }
+#define _LOG_E_CREATION_1(env)                 { creation(env); }
+#define _LOG_E_CREATION_N(env, n)      { creation(env, n); }
+#define _LOG_E_BEGIN_EXECUTE(env)      { beginExecute(env); }
+#define _LOG_E_BEGIN_EXECUTE_DETAILED(event, msgType, ep, srcPe, ml) \
+       { beginExecute(event, msgType, ep, srcPe, ml); }
+#define _LOG_E_END_EXECUTE()           { endExecute(); }
+//#define _LOG_E_BEGIN_PROCESSING() 
+//#define _LOG_E_END_PROCESSING() 
+#define _LOG_E_ENQUEUE(env)            { enqueue(env); }
+#define _LOG_E_DEQUEUE(env)            { dequeue(env); }
+#define _LOG_E_BEGIN_COMPUTATION()     { beginComputation(); }
+#define _LOG_E_END_COMPUTATION()       { endComputation(); }
+//#define _LOG_E_BEGIN_INTERRUPT()
+//#define _LOG_E_END_INTERRUPT() 
+#define _LOG_E_MSG_RECV_CHARM(env, pe)         { messageRecv(env, pe); }
+#define _LOG_E_USER_EVENT_CHARM(x)             { userEvent(x); }
+#define _LOG_E_BEGIN_PACK()                    { beginPack(); }
+#define _LOG_E_END_PACK()                              { endPack(); }
+#define _LOG_E_BEGIN_UNPACK()                  { beginUnpack(); }
+#define _LOG_E_END_UNPACK()                    { endUnpack(); }
 
 #endif
diff --git a/src/conv-perf/charmProjections.C b/src/conv-perf/charmProjections.C
new file mode 100644 (file)
index 0000000..37bcfb1
--- /dev/null
@@ -0,0 +1,161 @@
+
+#include "envelope.h"
+#include "converse.h"
+#include "charmProjections.h"
+#include "traceCoreCommon.h"
+#include "charmEvents.h"
+
+CtvStaticDeclare(int,curThreadEvent);
+
+static int _numEvents = 0;
+static int _threadMsg, _threadChare, _threadEP;
+static int curEvent;
+static int execEvent;
+static int execEp;
+static int execPe;
+
+extern "C" void initCharmProjections() 
+{
+  CtvInitialize(int,curThreadEvent);
+  CtvAccess(curThreadEvent) = 0;
+  curEvent = 0;
+}
+
+extern "C" int  traceRegisterUserEvent(const char*) {} //TODO
+
+extern "C" void creation(envelope *e, int num)
+{
+  if(e==0) {
+    CtvAccess(curThreadEvent)=curEvent;
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = ForChareMsg;
+       iData[1] = _threadEP;
+       iData[2] = curEvent++;
+       iData[3] = CkMyPe();
+       LogEvent(_CHARM_LANG_ID, _E_CREATION, 4, iData); 
+  } else {
+    e->setEvent(curEvent);
+    for(int i=0; i<num; i++) {
+               int* iData = (int*)malloc(sizeof(int)*5); 
+               iData[0] = e->getMsgtype();
+               iData[1] = e->getEpIdx();
+               iData[2] = curEvent+i;
+               iData[3] = CkMyPe();
+               iData[4] = e->getTotalsize();
+               LogEvent(_CHARM_LANG_ID, _E_CREATION, 5, iData); 
+    }
+    curEvent += num;
+  }
+}
+
+extern "C" void beginExecute(envelope *e)
+{
+  if(e==0) {
+    execEvent = CtvAccess(curThreadEvent);
+    execEp = (-1);
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = ForChareMsg;
+       iData[1] = _threadEP;
+       iData[2] = execEvent;
+       iData[3] = CkMyPe();
+       LogEvent(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 4, iData); 
+  } else {
+    beginExecute(e->getEvent(),e->getMsgtype(),e->getEpIdx(),e->getSrcPe(),e->getTotalsize());
+  }
+}
+
+extern "C" void beginExecute(int event,int msgType,int ep,int srcPe,int ml)
+{
+  execEvent=event;
+  execEp=ep;
+  execPe=srcPe;
+  int* iData = (int*)malloc(sizeof(int)*5); 
+  iData[0] = msgType;
+  iData[1] = ep;
+  iData[2] = event;
+  iData[3] = srcPe;
+  iData[4] = ml;
+  LogEvent(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 5, iData); 
+}
+
+extern "C" void endExecute(void)
+{
+  if(execEp == (-1)) {
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = 0;
+       iData[1] = _threadEP;
+       iData[2] = execEvent;
+       iData[3] = CkMyPe();
+       LogEvent(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
+  } else {
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = 0;
+       iData[1] = execEp;
+       iData[2] = execEvent;
+       iData[3] = execPe;
+       LogEvent(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData); 
+  }
+}
+
+extern "C" void enqueue(envelope *e) {}        //TODO
+
+extern "C" void dequeue(envelope *e) {}        //TODO
+
+extern "C" void beginComputation(void)
+{
+       if(CkMyRank()==0) {
+               //DOUBT: what are these registrations ? ... cocurrently running with projections => problem 
+       //_threadMsg = CkRegisterMsg("dummy_thread_msg", 0, 0, 0, 0);
+       //_threadChare = CkRegisterChare("dummy_thread_chare", 0);
+       //_threadEP = CkRegisterEp("dummy_thread_ep", 0, _threadMsg,_threadChare);
+       }
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = iData[1] = 0;
+       iData[2] = iData[3] = -1;
+       LogEvent(_CHARM_LANG_ID, _E_BEGIN_COMPUTATION, 4, iData); 
+}
+
+extern "C" void endComputation(void)
+{
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = iData[1] = 0;
+       iData[2] = iData[3] = -1;
+       LogEvent(_CHARM_LANG_ID, _E_END_COMPUTATION, 4, iData); 
+}
+
+extern "C" void messageRecv(char *env, int pe) {} //TODO
+
+extern "C" void userEvent(int e)
+extern "C" void beginPack(void)
+{
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = iData[1] = iData[2] = 0;
+       iData[3] = CkMyPe();
+       LogEvent(_CHARM_LANG_ID, _E_BEGIN_PACK, 4, iData); 
+}
+
+extern "C" void endPack(void)
+{
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = iData[1] = iData[2] = 0;
+       iData[3] = CkMyPe();
+       LogEvent(_CHARM_LANG_ID, _E_END_PACK, 4, iData); 
+}
+
+extern "C" void beginUnpack(void)
+{
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = iData[1] = iData[2] = 0;
+       iData[3] = CkMyPe();
+       LogEvent(_CHARM_LANG_ID, _E_BEGIN_UNPACK, 4, iData); 
+}
+
+extern "C" void endUnpack(void)
+{
+       int* iData = (int*)malloc(sizeof(int)*4); 
+       iData[0] = iData[1] = iData[2] = 0;
+       iData[3] = CkMyPe();
+       LogEvent(_CHARM_LANG_ID, _E_END_UNPACK, 4, iData); 
+}
+
+
diff --git a/src/conv-perf/charmProjections.h b/src/conv-perf/charmProjections.h
new file mode 100644 (file)
index 0000000..ee4685a
--- /dev/null
@@ -0,0 +1,33 @@
+
+#ifndef __CHARM_PROJECTIONS_H__
+#define __CHARM_PROJECTIONS_H__
+
+#include "envelope.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void initCharmProjections();
+int  traceRegisterUserEvent(const char*);      //TODO
+
+void creation(envelope *e, int num=1);
+void beginExecute(envelope *e);
+void beginExecute(int event,int msgType,int ep,int srcPe,int ml);
+void endExecute(void);
+void enqueue(envelope *e);
+void dequeue(envelope *e);
+void beginComputation(void);
+void endComputation(void);
+void messageRecv(char *env, int pe);
+void userEvent(int e);
+void beginPack(void);
+void endPack(void);
+void beginUnpack(void);
+void endUnpack(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
index a213f0c3f7a3220014555e55ed5c1789b30a58c1..fce742269216e941d08646cdd1fd681db88b298e 100644 (file)
@@ -18,7 +18,19 @@ void TraceCore::RegisterEvent(int lID, int eID)
        CmiPrintf("registering event (%d, %d)\n", lID, eID);
 }      
 
-void TraceCore::LogEvent(int lID, int eID) 
+//NOTE: only for compatibility with incomplete converse instrumentation
+void TraceCore::LogEvent(int lID, int eID)
+{
+       CmiPrintf("logging event (%d, %d)\n", lID, eID);
+}
+
+void TraceCore::LogEvent(int lID, int eID, int iLen, int* iData)
+{ LogEvent(int lID, int eID, int iLen, int* iData, 0, NULL); }
+
+void TraceCore::LogEvent(int lID, int eID, int sLen, char* sData);
+{ LogEvent(int lID, int eID, 0, NULL, int sLen, int* sData); }
+
+void TraceCore::LogEvent(int lID, int eID, int iLen, int* iData, int sLen, char* sData)
 {
        CmiPrintf("logging event (%d, %d)\n", lID, eID);
 }
index a79e9b080165076e07f09b4933429edec6837afc..a7c1dd3d3efb1796067ba28cbec4fcf153fc28b1 100644 (file)
@@ -26,6 +26,9 @@ class TraceCore
        void RegisterLanguage(int lID);
        void RegisterEvent(int lID, int eID);
        void LogEvent(int lID, int eID);
+       void LogEvent(int lID, int eID, int iLen, int* iData);
+       void LogEvent(int lID, int eID, int sLen, char* sData);
+       void LogEvent(int lID, int eID, int iLen, int* iData, int sLen, char* sData);
 };
 
 //TODO
index a989a65d6cd5e174b3258aa751aa27d90fcf8d8f..6cb6363dbb38c4a100d3d1ba31b2b4622bdfe7e6 100644 (file)
@@ -7,6 +7,8 @@
 #define TRACE_CORE_BUFFER_SIZE 10000
 
 /* Trace Storage and associated Structure */
+CpvDeclare(int, _traceCoreOn);
+CpvDeclare(double, _traceCoreInitTime);
 CpvDeclare(char*, _traceCoreRoot);
 CpvDeclare(int, _traceCoreBufferSize);
 CpvDeclare(TraceCore*, _traceCore);
index f350fe7e3b042557b63b17e4a55cf631879f54f6..dfa4e0934ee0bc51cd870c26bb470fcc63a0d5fc 100644 (file)
@@ -9,8 +9,8 @@ extern "C" {
 #endif
 
 /* Trace Storage and associated Structure */
-CpvDeclare(int, _traceCoreOn);
-CpvDeclare(double, _traceCoreInitTime);
+CpvExtern(int, _traceCoreOn);
+CpvExtern(double, _traceCoreInitTime);
 
 /* Trace Timer */
 #define  TRACE_CORE_TIMER   CmiWallTimer