# HG changeset patch # User Merten Sach # Date 1305123204 -7200 # Node ID 11bfe9d136ed2a011f18f222fa1e6523934c2805 # Parent 9c3107044f86c36fea3a8f72f64910b1363555be removed warnings diff -r 9c3107044f86 -r 11bfe9d136ed CoreLoop.c --- a/CoreLoop.c Sat Nov 20 08:19:05 2010 +0100 +++ b/CoreLoop.c Wed May 11 16:13:24 2011 +0200 @@ -8,7 +8,6 @@ #include "VMS.h" #include "Queue_impl/BlockingQueue.h" -#include #include #include @@ -50,7 +49,7 @@ gate.preGateProgress = 0; gate.waitProgress = 0; gate.exitProgress = 0; - _VMSMasterEnv->workStealingGates[ thisCoresIdx ] = &gate;//race @startup + _VMSMasterEnv->workStealingGates[ thisCoresIdx ] = (GateStruc*)&gate;//race @startup //wait until signalled that setup is complete pthread_mutex_lock( &suspendLock ); diff -r 9c3107044f86 -r 11bfe9d136ed MasterLoop.c --- a/MasterLoop.c Sat Nov 20 08:19:05 2010 +0100 +++ b/MasterLoop.c Wed May 11 16:13:24 2011 +0200 @@ -87,7 +87,7 @@ volatile VirtProcr *volatileMasterPr; volatileMasterPr = animatingPr; - masterPr = volatileMasterPr; //used to force re-define after jmp + masterPr = (VirtProcr*)volatileMasterPr; //used to force re-define after jmp //First animation of each MasterVP will in turn animate this part // of setup code.. (VP creator sets up the stack as if this function @@ -114,10 +114,10 @@ #endif //======================================================================== - masterEnv = _VMSMasterEnv; + masterEnv = (MasterEnv*)_VMSMasterEnv; //GCC may optimize so doesn't always re-define from frame-storage - masterPr = volatileMasterPr; //just to make sure after jmp + masterPr = (VirtProcr*)volatileMasterPr; //just to make sure after jmp thisCoresIdx = masterPr->coreAnimatedBy; readyToAnimateQ = masterEnv->readyToAnimateQs[thisCoresIdx]; schedSlots = masterEnv->allSchedSlots[thisCoresIdx]; diff -r 9c3107044f86 -r 11bfe9d136ed VMS.c --- a/VMS.c Sat Nov 20 08:19:05 2010 +0100 +++ b/VMS.c Wed May 11 16:13:24 2011 +0200 @@ -118,7 +118,7 @@ //======================================================================== //===================== Only VMS__malloc after this ==================== - masterEnv = _VMSMasterEnv; + masterEnv = (MasterEnv*)_VMSMasterEnv; //Make a readyToAnimateQ for each core loop readyToAnimateQs = VMS__malloc( NUM_CORES * sizeof(VMSQueueStruc *) ); @@ -153,7 +153,7 @@ //============================= MEASUREMENT STUFF ======================== #ifdef STATS__TURN_ON_PROBES _VMSMasterEnv->dynIntervalProbesInfo = - makePrivDynArrayOfSize( &(_VMSMasterEnv->intervalProbes), 200); + makePrivDynArrayOfSize( (void***)&(_VMSMasterEnv->intervalProbes), 200); _VMSMasterEnv->probeNameHashTbl = makeHashTable( 1000, &VMS__free ); @@ -767,7 +767,7 @@ SchedSlot ***allSchedSlots; //ptr to array of ptrs //Before getting rid of everything, print out any measurements made - forAllInDynArrayDo( _VMSMasterEnv->measHistsInfo, &printHist ); + forAllInDynArrayDo( _VMSMasterEnv->measHistsInfo, (DynArrayFnPtr)&printHist ); //forAllInDynArrayDo( _VMSMasterEnv->measHistsInfo, &freeHistExt ); #ifdef MEAS__TIME_PLUGIN printHist( _VMSMasterEnv->reqHdlrLowTimeHist ); @@ -849,7 +849,7 @@ void VMS__throw_exception( char *msgStr, VirtProcr *reqstPr, VMSExcp *excpData ) { - printf(msgStr); + printf("%s",msgStr); fflush(stdin); exit(1); } diff -r 9c3107044f86 -r 11bfe9d136ed VMS.h --- a/VMS.h Sat Nov 20 08:19:05 2010 +0100 +++ b/VMS.h Wed May 11 16:13:24 2011 +0200 @@ -17,6 +17,7 @@ #include "Hash_impl/PrivateHash.h" #include "vmalloc.h" +//#include #include #include @@ -50,7 +51,7 @@ #define DEBUG2( bool, msg, p1, p2) \ // if(bool) {printf(msg, p1, p2); fflush(stdin);} -#define ERROR(msg) printf(msg); fflush(stdin); +#define ERROR(msg) printf(msg); //fflush(stdin); #define ERROR1(msg, param) printf(msg, param); fflush(stdin); #define ERROR2(msg, p1, p2) printf(msg, p1, p2); fflush(stdin); @@ -76,7 +77,7 @@ //========================= Hardware related Constants ===================== //This value is the number of hardware threads in the shared memory // machine -#define NUM_CORES 4 +#define NUM_CORES 8 // tradeoff amortizing master fixed overhead vs imbalance potential // when work-stealing, can make bigger, at risk of losing cache affinity @@ -401,21 +402,46 @@ #define MEAS__SUB_CREATE /*turn on/off subtraction of create from plugin*/ + +//VPThread #define createHistIdx 1 #define mutexLockHistIdx 2 #define mutexUnlockHistIdx 3 #define condWaitHistIdx 4 #define condSignalHistIdx 5 +//VCilk +#define spawnHistIdx 1 +#define syncHistIdx 2 + +//SSR +#define SendFromToHistIdx 1 +#define SendOfTypeHistIdx 2 +#define ReceiveFromToHistIdx 3 +#define ReceiveOfTypeHistIdx 4 + #define MakeTheMeasHists \ _VMSMasterEnv->measHistsInfo = \ - makePrivDynArrayOfSize( &(_VMSMasterEnv->measHists), 200);\ - makeAMeasHist( createHistIdx, "Create", 50, 0, 200 ) \ - makeAMeasHist( mutexLockHistIdx, "mutex lock", 50, 0, 100 ) \ - makeAMeasHist( mutexUnlockHistIdx, "mutex unlock", 50, 0, 100 ) \ - makeAMeasHist( condWaitHistIdx, "cond wait", 50, 0, 100 ) \ - makeAMeasHist( condSignalHistIdx, "cond signal", 50, 0, 100 ) + makePrivDynArrayOfSize( (void***)&(_VMSMasterEnv->measHists), 200);\ + makeAMeasHist( spawnHistIdx, "Spawn", 50, 0, 200 ) \ + makeAMeasHist( syncHistIdx, "Sync", 50, 0, 200 ) + +// makeAMeasHist( createHistIdx, "Create", 50, 0, 100 ) \ +// makeAMeasHist( mutexLockHistIdx, "mutex lock", 50, 0, 100 ) \ +// makeAMeasHist( mutexUnlockHistIdx, "mutex unlock", 50, 0, 100 ) \ +// makeAMeasHist( condWaitHistIdx, "cond wait", 50, 0, 100 ) \ +// makeAMeasHist( condSignalHistIdx, "cond signal", 50, 0, 100 ) + +// makeAMeasHist( SendFromToHistIdx, "SendFromTo", 50, 0, 100 ) \ +// makeAMeasHist( SendOfTypeHistIdx, "SendOfType", 50, 0, 100 ) \ +// makeAMeasHist( ReceiveFromToHistIdx,"ReceiveFromTo", 50, 0, 100 ) \ +// makeAMeasHist( ReceiveOfTypeHistIdx,"ReceiveOfType", 50, 0, 100 ) + + +//=========================================================================== +//VPThread + #define Meas_startCreate \ int32 startStamp, endStamp; \ @@ -462,6 +488,63 @@ addIntervalToHist( startStamp, endStamp, \ _VMSMasterEnv->measHists[ condSignalHistIdx ] ); +//=========================================================================== +// VCilk +#define Meas_startSpawn \ + int32 startStamp, endStamp; \ + saveLowTimeStampCountInto( startStamp ); \ + +#define Meas_endSpawn \ + saveLowTimeStampCountInto( endStamp ); \ + addIntervalToHist( startStamp, endStamp, \ + _VMSMasterEnv->measHists[ spawnHistIdx ] ); + +#define Meas_startSync \ + int32 startStamp, endStamp; \ + saveLowTimeStampCountInto( startStamp ); \ + +#define Meas_endSync \ + saveLowTimeStampCountInto( endStamp ); \ + addIntervalToHist( startStamp, endStamp, \ + _VMSMasterEnv->measHists[ syncHistIdx ] ); + +//=========================================================================== +// SSR +#define Meas_startSendFromTo \ + int32 startStamp, endStamp; \ + saveLowTimeStampCountInto( startStamp ); \ + +#define Meas_endSendFromTo \ + saveLowTimeStampCountInto( endStamp ); \ + addIntervalToHist( startStamp, endStamp, \ + _VMSMasterEnv->measHists[ SendFromToHistIdx ] ); + +#define Meas_startSendOfType \ + int32 startStamp, endStamp; \ + saveLowTimeStampCountInto( startStamp ); \ + +#define Meas_endSendOfType \ + saveLowTimeStampCountInto( endStamp ); \ + addIntervalToHist( startStamp, endStamp, \ + _VMSMasterEnv->measHists[ SendOfTypeHistIdx ] ); + +#define Meas_startReceiveFromTo \ + int32 startStamp, endStamp; \ + saveLowTimeStampCountInto( startStamp ); \ + +#define Meas_endReceiveFromTo \ + saveLowTimeStampCountInto( endStamp ); \ + addIntervalToHist( startStamp, endStamp, \ + _VMSMasterEnv->measHists[ ReceiveFromToHistIdx ] ); + +#define Meas_startReceiveOfType \ + int32 startStamp, endStamp; \ + saveLowTimeStampCountInto( startStamp ); \ + +#define Meas_endReceiveOfType \ + saveLowTimeStampCountInto( endStamp ); \ + addIntervalToHist( startStamp, endStamp, \ + _VMSMasterEnv->measHists[ReceiveOfTypeHistIdx ] ); //===== diff -r 9c3107044f86 -r 11bfe9d136ed VMS__DESIGN_NOTES.txt --- a/VMS__DESIGN_NOTES.txt Sat Nov 20 08:19:05 2010 +0100 +++ b/VMS__DESIGN_NOTES.txt Wed May 11 16:13:24 2011 +0200 @@ -1,2 +1,2 @@ - -Implement VMS this way: + +Implement VMS this way: