# HG changeset patch # User Some Random Person # Date 1331966491 25200 # Node ID b5b5323b417779dce9c0199b86ab6ef186e0e72c # Parent 51b8f15fea297996a436636aee739105c8df355e added debugging stuff diff -r 51b8f15fea29 -r b5b5323b4177 SSR.c --- a/SSR.c Wed Mar 14 23:22:00 2012 -0700 +++ b/SSR.c Fri Mar 16 23:41:31 2012 -0700 @@ -29,8 +29,8 @@ * A: thinking pin the coreCtlrs for all of BLIS -- let Master arbitrate * among library, DKU, WT, FoR -- all the patterns in terms of virtual * processors (or equivalently work-units), so Master picks which virt procr - * from which portions of app (DKU, WT, FoR) onto which sched slots - *Might even do hierarchy of masters -- group of sched slots for each core + * from which portions of app (DKU, WT, FoR) onto which anim slots + *Might even do hierarchy of masters -- group of anim slots for each core * has its own master, that keeps generated work local * single-reader-single-writer sync everywhere -- no atomic primitives * Might have the different assigners talk to each other, to negotiate @@ -186,7 +186,7 @@ //Hook up the semantic layer's plug-ins to the Master virt procr _VMSMasterEnv->requestHandler = &SSR__Request_Handler; - _VMSMasterEnv->slaveAssigner = &SSR__assign_slaveVP; + _VMSMasterEnv->slaveAssigner = &SSR__assign_slaveVP_to_slot; #ifdef HOLISTIC__TURN_ON_PERF_COUNTERS _VMSMasterEnv->counterHandler = &SSR__counter_handler; #endif @@ -562,7 +562,7 @@ void * SSR__receive_type_to( const int type, SlaveVP *receivePr ) - { + { DEBUG__printf1(dbgRqstHdlr,"WL: receive type to: %d", receivePr->slaveID); SSRSemReq reqData; reqData.receivePr = receivePr; @@ -585,7 +585,8 @@ */ void * SSR__receive_from_to( SlaveVP *sendPr, SlaveVP *receivePr ) - { SSRSemReq reqData; + { DEBUG__printf2(dbgRqstHdlr,"WL: receive from %d to: %d", sendPr->slaveID, receivePr->slaveID); + SSRSemReq reqData; //hash on the receiver, 'cause always know it, but sometimes want to // receive from anonymous sender diff -r 51b8f15fea29 -r b5b5323b4177 SSR.h --- a/SSR.h Wed Mar 14 23:22:00 2012 -0700 +++ b/SSR.h Fri Mar 16 23:41:31 2012 -0700 @@ -33,7 +33,7 @@ //=========================================================================== /*Semantic layer-specific data sent inside a request from lib called in app - * to request handler called in MasterLoop + * to request handler called in AnimationMaster */ typedef struct @@ -253,7 +253,7 @@ SSR__Request_Handler( SlaveVP *requestingPr, void *_semEnv ); SlaveVP * -SSR__assign_slaveVP( void *_semEnv, int coreNum, SchedSlot *slot ); +SSR__assign_slaveVP_to_slot( void *_semEnv, AnimSlot *slot ); SlaveVP* SSR__create_procr_helper( TopLevelFnPtr fnPtr, void *initData, diff -r 51b8f15fea29 -r b5b5323b4177 SSR_Counter_Recording.c --- a/SSR_Counter_Recording.c Wed Mar 14 23:22:00 2012 -0700 +++ b/SSR_Counter_Recording.c Fri Mar 16 23:41:31 2012 -0700 @@ -31,9 +31,10 @@ void SSR__counter_handler(int evt_type, int vpid, int task, SlaveVP* pr, uint64 cycles, uint64 instrs) { - if (pr->isMasterVP || pr->isShutdownVP) { //Save only values for actual work + if (pr->typeOfVP == Master || pr->typeOfVP == Shutdown) + { //Only save values for application work, done in a SlaveVP return; - } + } SSRSemEnv *semanticEnv = _VMSMasterEnv->semanticEnv; @@ -47,7 +48,7 @@ if(pr){ e.coreID = pr->coreAnimatedBy; - e.slot = pr->schedSlot; + e.slot = pr->animSlotAssignedTo; } else { e.coreID = -1; e.slot = NULL; diff -r 51b8f15fea29 -r b5b5323b4177 SSR_Counter_Recording.h --- a/SSR_Counter_Recording.h Wed Mar 14 23:22:00 2012 -0700 +++ b/SSR_Counter_Recording.h Fri Mar 16 23:41:31 2012 -0700 @@ -13,7 +13,7 @@ typedef struct { int event_type; int coreID; - SchedSlot* slot; + AnimSlot* slot; int vp; int task; uint64 cycles; diff -r 51b8f15fea29 -r b5b5323b4177 SSR_Measurement.h --- a/SSR_Measurement.h Wed Mar 14 23:22:00 2012 -0700 +++ b/SSR_Measurement.h Fri Mar 16 23:41:31 2012 -0700 @@ -71,7 +71,7 @@ #else //===================== turned off ========================== - #define MEAS__Make_Meas_Hists_for_Language + #define MEAS__Make_Meas_Hists_for_Language #define Meas_startSendFromTo #define Meas_endSendFromTo #define Meas_startSendOfType diff -r 51b8f15fea29 -r b5b5323b4177 SSR_PluginFns.c --- a/SSR_PluginFns.c Wed Mar 14 23:22:00 2012 -0700 +++ b/SSR_PluginFns.c Fri Mar 16 23:41:31 2012 -0700 @@ -28,61 +28,62 @@ //============================== Assigner ================================== // /*For SSR, assigning a slave simply takes the next work-unit off the - * ready-to-go work-unit queue and assigns it to the slaveToSched. + * ready-to-go work-unit queue and assigns it to the offered slot. *If the ready-to-go work-unit queue is empty, then nothing to assign - * to the slave -- return FALSE to let Master loop know scheduling that - * slave failed. + * to the animation slot -- return FALSE to let Master loop know assigning + * that slot failed. */ SlaveVP * -SSR__assign_slaveVP( void *_semEnv, int coreNum, SchedSlot *slot ) - { SlaveVP *schedPr; +SSR__assign_slaveVP_to_slot( void *_semEnv, AnimSlot *slot ) + { SlaveVP *assignPr; SSRSemEnv *semEnv; - int32 slotNum; + int32 coreNum, slotNum; + coreNum = slot->coreOfSlot; slotNum = slot->slotIdx; semEnv = (SSRSemEnv *)_semEnv; - schedPr = readPrivQ( semEnv->readyVPQs[coreNum] ); + assignPr = readPrivQ( semEnv->readyVPQs[coreNum] ); //Note, using a non-blocking queue -- it returns NULL if queue empty - if(!schedPr){ - schedPr = semEnv->idlePr[coreNum][slotNum]; + if(!assignPr){ + assignPr = semEnv->idlePr[coreNum][slotNum]; //things that would normally happen in resume(), but these VPs never go there #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC - schedPr->numTimesAssigned++; //Somewhere here! + assignPr->assignCount++; //Somewhere here! Unit newu; - newu.vp = schedPr->slaveID; - newu.task = schedPr->numTimesAssigned; + newu.vp = assignPr->slaveID; + newu.task = assignPr->assignCount; addToListOfArrays(Unit,newu,semEnv->unitList); - if (schedPr->numTimesAssigned > 1){ + if (assignPr->assignCount > 1){ Dependency newd; - newd.from_vp = schedPr->slaveID; - newd.from_task = schedPr->numTimesAssigned - 1; - newd.to_vp = schedPr->slaveID; - newd.to_task = schedPr->numTimesAssigned; + newd.from_vp = assignPr->slaveID; + newd.from_task = assignPr->assignCount - 1; + newd.to_vp = assignPr->slaveID; + newd.to_task = assignPr->assignCount; addToListOfArrays(Dependency, newd ,semEnv->ctlDependenciesList); } #endif } #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC - if (schedPr) { - //schedPr->numTimesAssigned++; + if (assignPr) { + //assignPr->numTimesAssigned++; Unit prev_in_slot = semEnv->last_in_slot[coreNum * NUM_SCHED_SLOTS + slotNum]; if(prev_in_slot.vp != 0){ Dependency newd; newd.from_vp = prev_in_slot.vp; newd.from_task = prev_in_slot.task; - newd.to_vp = schedPr->slaveID; - newd.to_task = schedPr->numTimesAssigned; + newd.to_vp = assignPr->slaveID; + newd.to_task = assignPr->assignCount; addToListOfArrays(Dependency,newd,semEnv->hwArcs); } - prev_in_slot.vp = schedPr->slaveID; - prev_in_slot.task = schedPr->numTimesAssigned; + prev_in_slot.vp = assignPr->slaveID; + prev_in_slot.task = assignPr->assignCount; semEnv->last_in_slot[coreNum * NUM_SCHED_SLOTS + slotNum] = prev_in_slot; } #endif - return( schedPr ); + return( assignPr ); } @@ -177,7 +178,7 @@ void handleDissipate( SlaveVP *requestingPr, SSRSemEnv *semEnv ) { - DEBUG_Print1(dbgRqstHdlr,"Dissipate request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"Dissipate request from processor %d",requestingPr->slaveID) //free any semantic data allocated to the virt procr VMS_PI__free( requestingPr->semanticData ); @@ -239,19 +240,18 @@ { SSRSemReq *semReq; SlaveVP *newPr; - DEBUG_Print1(dbgRqstHdlr,"Create request from processor %d ",requestingPr->slaveID) semReq = VMS_PI__take_sem_reqst_from( req ); newPr = SSR__create_procr_helper( semReq->fnPtr, semReq->initData, semEnv, semReq->coreToAssignOnto ); - DEBUG_Print1(dbgRqstHdlr,"(new VP: %d)\n",newPr->slaveID) + DEBUG__printf2(dbgRqstHdlr,"Create from: %d, new VP: %d", requestingPr->slaveID, newPr->slaveID) #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC Dependency newd; newd.from_vp = requestingPr->slaveID; - newd.from_task = requestingPr->numTimesAssigned; + newd.from_task = requestingPr->assignCount; newd.to_vp = newPr->slaveID; newd.to_task = 1; //addToListOfArraysDependency(newd,semEnv->commDependenciesList); @@ -278,18 +278,18 @@ */ #endif #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC - procr->numTimesAssigned++; //Somewhere here! + procr->assignCount++; //Somewhere here! Unit newu; newu.vp = procr->slaveID; - newu.task = procr->numTimesAssigned; + newu.task = procr->assignCount; addToListOfArrays(Unit,newu,semEnv->unitList); - if (procr->numTimesAssigned > 1){ + if (procr->assignCount > 1){ Dependency newd; newd.from_vp = procr->slaveID; - newd.from_task = procr->numTimesAssigned - 1; + newd.from_task = procr->assignCount - 1; newd.to_vp = procr->slaveID; - newd.to_task = procr->numTimesAssigned; + newd.to_task = procr->assignCount; addToListOfArrays(Dependency, newd ,semEnv->ctlDependenciesList); } #endif diff -r 51b8f15fea29 -r b5b5323b4177 SSR_Request_Handlers.c --- a/SSR_Request_Handlers.c Wed Mar 14 23:22:00 2012 -0700 +++ b/SSR_Request_Handlers.c Fri Mar 16 23:41:31 2012 -0700 @@ -89,7 +89,7 @@ HashEntry *entry; HashTable *commHashTbl = semEnv->commHashTbl; - DEBUG_Print1(dbgRqstHdlr,"SendType request from processor %d\n",semReq->sendPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"SendType request from processor %d",semReq->sendPr->slaveID) receivePr = semReq->receivePr; //For "send", know both send & recv procrs sendPr = semReq->sendPr; @@ -120,7 +120,7 @@ SSRSemReq *clonedReq = cloneReq( semReq ); clonedReq-> nextReqInHashEntry = waitingReq->nextReqInHashEntry; waitingReq->nextReqInHashEntry = clonedReq; - DEBUG_Print2( dbgRqstHdlr, "linked requests: %p, %p | ", clonedReq,\ + DEBUG__printf2( dbgRqstHdlr, "linked requests: %p, %p ", clonedReq,\ waitingReq ) return; } @@ -129,9 +129,9 @@ #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC Dependency newd; newd.from_vp = sendPr->slaveID; - newd.from_task = sendPr->numTimesAssigned; + newd.from_task = sendPr->assignCount; newd.to_vp = receivePr->slaveID; - newd.to_task = receivePr->numTimesAssigned +1; + newd.to_task = receivePr->assignCount +1; //(newd,semEnv->commDependenciesList); addToListOfArrays(Dependency,newd,semEnv->dynDependenciesList); int32 groupId = semReq->msgType; @@ -143,10 +143,10 @@ } Unit u; u.vp = sendPr->slaveID; - u.task = sendPr->numTimesAssigned; + u.task = sendPr->assignCount; addToListOfArrays(Unit,u,semEnv->ntonGroups[groupId]->senders); u.vp = receivePr->slaveID; - u.task = receivePr->numTimesAssigned +1; + u.task = receivePr->assignCount +1; addToListOfArrays(Unit,u,semEnv->ntonGroups[groupId]->receivers); #endif @@ -185,7 +185,7 @@ HashEntry *entry; HashTable *commHashTbl = semEnv->commHashTbl; - DEBUG_Print2(dbgRqstHdlr,"SendFromTo request from processor %d to %d\n",semReq->sendPr->slaveID,semReq->receivePr->slaveID) + DEBUG__printf2(dbgRqstHdlr,"SendFromTo request from processor %d to %d",semReq->sendPr->slaveID,semReq->receivePr->slaveID) receivePr = semReq->receivePr; //For "send", know both send & recv procrs sendPr = semReq->sendPr; @@ -209,9 +209,9 @@ #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC Dependency newd; newd.from_vp = sendPr->slaveID; - newd.from_task = sendPr->numTimesAssigned; + newd.from_task = sendPr->assignCount; newd.to_vp = receivePr->slaveID; - newd.to_task = receivePr->numTimesAssigned +1; + newd.to_task = receivePr->assignCount +1; //addToListOfArraysDependency(newd,semEnv->commDependenciesList); addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif @@ -285,7 +285,7 @@ receivePr = semReq->receivePr; - DEBUG_Print1(dbgRqstHdlr,"ReceiveType request from processor %d\n",receivePr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"ReceiveType request from processor %d",receivePr->slaveID) key[0] = (int)receivePr->slaveID; key[1] = (int)(semReq->msgType); @@ -318,9 +318,9 @@ #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC Dependency newd; newd.from_vp = sendPr->slaveID; - newd.from_task = sendPr->numTimesAssigned; + newd.from_task = sendPr->assignCount; newd.to_vp = receivePr->slaveID; - newd.to_task = receivePr->numTimesAssigned +1; + newd.to_task = receivePr->assignCount +1; //addToListOfArraysDependency(newd,semEnv->commDependenciesList); addToListOfArrays(Dependency,newd,semEnv->dynDependenciesList); int32 groupId = semReq->msgType; @@ -332,10 +332,10 @@ } Unit u; u.vp = sendPr->slaveID; - u.task = sendPr->numTimesAssigned; + u.task = sendPr->assignCount; addToListOfArrays(Unit,u,semEnv->ntonGroups[groupId]->senders); u.vp = receivePr->slaveID; - u.task = receivePr->numTimesAssigned +1; + u.task = receivePr->assignCount +1; addToListOfArrays(Unit,u,semEnv->ntonGroups[groupId]->receivers); #endif @@ -352,13 +352,13 @@ */ void handleReceiveFromTo( SSRSemReq *semReq, SSRSemEnv *semEnv) - { SlaveVP *sendPr, *receivePr; + { SlaveVP *sendPr, *receivePr; int key[] = {0,0,0}; - SSRSemReq *waitingReq; + SSRSemReq *waitingReq; HashEntry *entry; HashTable *commHashTbl = semEnv->commHashTbl; - DEBUG_Print2(dbgRqstHdlr,"ReceiveFromTo request from processor %d to %d\n",semReq->sendPr->slaveID,semReq->receivePr->slaveID) + DEBUG__printf2(dbgRqstHdlr,"ReceiveFromTo %d : %d",semReq->sendPr->slaveID,semReq->receivePr->slaveID) receivePr = semReq->receivePr; sendPr = semReq->sendPr; //for receive from-to, know send procr @@ -378,9 +378,9 @@ #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC Dependency newd; newd.from_vp = sendPr->slaveID; - newd.from_task = sendPr->numTimesAssigned; + newd.from_task = sendPr->assignCount; newd.to_vp = receivePr->slaveID; - newd.to_task = receivePr->numTimesAssigned +1; + newd.to_task = receivePr->assignCount +1; //addToListOfArraysDependency(newd,semEnv->commDependenciesList); addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif @@ -427,7 +427,7 @@ handleMalloc( SSRSemReq *semReq, SlaveVP *requestingPr, SSRSemEnv *semEnv ) { void *ptr; - DEBUG_Print1(dbgRqstHdlr,"Malloc request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"Malloc request from processor %d",requestingPr->slaveID) ptr = VMS_PI__malloc( semReq->sizeToMalloc ); requestingPr->dataRetFromReq = ptr; @@ -439,7 +439,7 @@ void handleFree( SSRSemReq *semReq, SlaveVP *requestingPr, SSRSemEnv *semEnv ) { - DEBUG_Print1(dbgRqstHdlr,"Free request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"Free request from processor %d",requestingPr->slaveID) VMS_PI__free( semReq->ptrToFree ); resume_slaveVP( requestingPr, semEnv ); } @@ -477,7 +477,7 @@ handleStartFnSingleton( SSRSemReq *semReq, SlaveVP *requestingPr, SSRSemEnv *semEnv ) { SSRSingleton *singleton; - DEBUG_Print1(dbgRqstHdlr,"StartFnSingleton request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"StartFnSingleton request from processor %d",requestingPr->slaveID) singleton = &(semEnv->fnSingletons[ semReq->singletonID ]); handleStartSingleton_helper( singleton, requestingPr, semEnv ); @@ -487,7 +487,7 @@ SSRSemEnv *semEnv ) { SSRSingleton *singleton; - DEBUG_Print1(dbgRqstHdlr,"StartDataSingleton request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"StartDataSingleton request from processor %d",requestingPr->slaveID) if( *(semReq->singletonPtrAddr) == NULL ) { singleton = VMS_PI__malloc( sizeof(SSRSingleton) ); singleton->waitQ = makeVMSQ(); @@ -534,7 +534,7 @@ { SSRSingleton *singleton; - DEBUG_Print1(dbgRqstHdlr,"EndFnSingleton request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"EndFnSingleton request from processor %d",requestingPr->slaveID) singleton = &(semEnv->fnSingletons[ semReq->singletonID ]); handleEndSingleton_helper( singleton, requestingPr, semEnv ); @@ -545,7 +545,7 @@ { SSRSingleton *singleton; - DEBUG_Print1(dbgRqstHdlr,"EndDataSingleton request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"EndDataSingleton request from processor %d",requestingPr->slaveID) singleton = *(semReq->singletonPtrAddr); handleEndSingleton_helper( singleton, requestingPr, semEnv ); @@ -558,7 +558,7 @@ void handleAtomic( SSRSemReq *semReq, SlaveVP *requestingPr, SSRSemEnv *semEnv ) { - DEBUG_Print1(dbgRqstHdlr,"Atomic request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"Atomic request from processor %d",requestingPr->slaveID) semReq->fnToExecInMaster( semReq->dataForFn ); resume_slaveVP( requestingPr, semEnv ); } @@ -583,7 +583,7 @@ { SSRSemData *semData; TransListElem *nextTransElem; - DEBUG_Print1(dbgRqstHdlr,"TransStart request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"TransStart request from processor %d",requestingPr->slaveID) //check ordering of entering transactions is correct semData = requestingPr->semanticData; @@ -637,7 +637,7 @@ SSRTrans *transStruc; TransListElem *lastTrans; - DEBUG_Print1(dbgRqstHdlr,"TransEnd request from processor %d\n",requestingPr->slaveID) + DEBUG__printf1(dbgRqstHdlr,"TransEnd request from processor %d",requestingPr->slaveID) transStruc = &(semEnv->transactionStrucs[ semReq->transID ]);