# HG changeset patch # User Nina Engelhardt # Date 1324311310 -3600 # Node ID bde026832af7043ec159d59dc31f493b0f7194f8 # Parent 6a367b5d9a2db3a39c4ce94a66dfd242fce2acb5 switch dependencies to ListOfArrays diff -r 6a367b5d9a2d -r bde026832af7 SSR.h --- a/SSR.h Mon Dec 05 19:00:51 2011 +0100 +++ b/SSR.h Mon Dec 19 17:15:10 2011 +0100 @@ -108,10 +108,8 @@ #ifdef OBSERVE_UCC Unit*** unitcollection; PrivDynArrayInfo* unitcollectionInfo; - Dependency** ctlDependencies; - PrivDynArrayInfo* ctlDependenciesInfo; - Dependency** commDependencies; - PrivDynArrayInfo* commDependenciesInfo; + ListOfArrays* ctlDependenciesList; + ListOfArrays* commDependenciesList; //NtoN structure? #endif diff -r 6a367b5d9a2d -r bde026832af7 SSR_PluginFns.c --- a/SSR_PluginFns.c Mon Dec 05 19:00:51 2011 +0100 +++ b/SSR_PluginFns.c Mon Dec 19 17:15:10 2011 +0100 @@ -210,7 +210,12 @@ DEBUG1(dbgRqstHdlr,"(new VP: %d)\n",newPr->procrID) #ifdef OBSERVE_UCC - addToDynArray((void*)new_dependency(requestingPr->procrID,requestingPr->numTimesScheduled,newPr->procrID,0),semEnv->commDependenciesInfo); + Dependency newd; + newd.from_vp = requestingPr->procrID; + newd.from_task = requestingPr->numTimesScheduled; + newd.to_vp = newPr->procrID; + newd.to_task = 0; + addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif //For SSR, caller needs ptr to created processor returned to it @@ -231,9 +236,12 @@ saveLowTimeStampCountInto(lastRecord->unblocked_timestamp); #endif #ifdef OBSERVE_UCC - Dependency* newd = new_dependency(procr->procrID,procr->numTimesScheduled, - procr->procrID,procr->numTimesScheduled + 1); - addToDynArray((void*) newd ,semEnv->ctlDependenciesInfo); + Dependency newd; + newd.from_vp = procr->procrID; + newd.from_task = procr->numTimesScheduled; + newd.to_vp = procr->procrID; + newd.to_task = procr->numTimesScheduled + 1; + addToListOfArrays(Dependency, newd ,semEnv->ctlDependenciesList); #endif writePrivQ( procr, semEnv->readyVPQs[ procr->coreAnimatedBy] ); } diff -r 6a367b5d9a2d -r bde026832af7 SSR_Request_Handlers.c --- a/SSR_Request_Handlers.c Mon Dec 05 19:00:51 2011 +0100 +++ b/SSR_Request_Handlers.c Mon Dec 19 17:15:10 2011 +0100 @@ -127,8 +127,12 @@ else { #ifdef OBSERVE_UCC - addToDynArray((void*)new_dependency(sendPr->procrID,sendPr->numTimesScheduled, - receivePr->procrID,receivePr->numTimesScheduled +1),semEnv->commDependenciesInfo); + Dependency newd; + newd.from_vp = sendPr->procrID; + newd.from_task = sendPr->numTimesScheduled; + newd.to_vp = receivePr->procrID; + newd.to_task = receivePr->numTimesScheduled +1; + addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif //waiting request is a receive, so it pairs to this send @@ -188,9 +192,12 @@ else { //waiting request is a receive, so it completes pair with this send #ifdef OBSERVE_UCC - addToDynArray((void*) new_dependency(sendPr->procrID,sendPr->numTimesScheduled, - receivePr->procrID,receivePr->numTimesScheduled +1) - ,semEnv->commDependenciesInfo); + Dependency newd; + newd.from_vp = sendPr->procrID; + newd.from_task = sendPr->numTimesScheduled; + newd.to_vp = receivePr->procrID; + newd.to_task = receivePr->numTimesScheduled +1; + addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif //First, remove the waiting receive request from the entry entry->content = waitingReq->nextReqInHashEntry; @@ -293,8 +300,12 @@ VMS__free( waitingReq ); #ifdef OBSERVE_UCC - addToDynArray((void*)new_dependency(sendPr->procrID,sendPr->numTimesScheduled, - receivePr->procrID,receivePr->numTimesScheduled +1),semEnv->commDependenciesInfo); + Dependency newd; + newd.from_vp = sendPr->procrID; + newd.from_task = sendPr->numTimesScheduled; + newd.to_vp = receivePr->procrID; + newd.to_task = receivePr->numTimesScheduled +1; + addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif resume_procr( sendPr, semEnv ); @@ -334,9 +345,12 @@ if( waitingReq->reqType == send_from_to ) { //waiting request is a send, so pair it with this receive #ifdef OBSERVE_UCC - addToDynArray((void*) new_dependency(sendPr->procrID,sendPr->numTimesScheduled, - receivePr->procrID,receivePr->numTimesScheduled +1) - ,semEnv->commDependenciesInfo); + Dependency newd; + newd.from_vp = sendPr->procrID; + newd.from_task = sendPr->numTimesScheduled; + newd.to_vp = receivePr->procrID; + newd.to_task = receivePr->numTimesScheduled +1; + addToListOfArrays(Dependency,newd,semEnv->commDependenciesList); #endif //For from-to, should only ever be a single reqst waiting tobe paird entry->content = waitingReq->nextReqInHashEntry; diff -r 6a367b5d9a2d -r bde026832af7 SSR_lib.c --- a/SSR_lib.c Mon Dec 05 19:00:51 2011 +0100 +++ b/SSR_lib.c Mon Dec 19 17:15:10 2011 +0100 @@ -211,10 +211,8 @@ #ifdef OBSERVE_UCC //TODO: set up unit recording structure - semanticEnv->ctlDependencies = VMS__malloc(10*sizeof(void*)); - semanticEnv->ctlDependenciesInfo = makePrivDynArrayInfoFrom((void***)&(semanticEnv->ctlDependencies),10); - semanticEnv->commDependencies = VMS__malloc(10*sizeof(void*)); - semanticEnv->commDependenciesInfo = makePrivDynArrayInfoFrom((void***)&(semanticEnv->commDependencies),10); + semanticEnv->ctlDependenciesList = makeListOfArrays(sizeof(Dependency),128); + semanticEnv->commDependenciesList = makeListOfArrays(sizeof(Dependency),128); //TODO: set up N:N recording structure #endif @@ -255,7 +253,6 @@ void SSR__cleanup_after_shutdown() { SSRSemEnv *semanticEnv; - int coreIdx; semanticEnv = _VMSMasterEnv->semanticEnv; @@ -279,13 +276,14 @@ output = fopen(filename,"w+"); if(output!=NULL){ set_dependency_file(output); - fprintf(output,"digraph Dependencies {\n"); - set_dot_file(output); + //fprintf(output,"digraph Dependencies {\n"); + //set_dot_file(output); //FIXME: first line still depends on counters being enabled, replace w/ unit struct! - forAllInDynArrayDo(_VMSMasterEnv->counter_history_array_info, &print_dot_node_info ); - forAllInDynArrayDo( semanticEnv->commDependenciesInfo, &print_dependency_to_file ); - forAllInDynArrayDo( semanticEnv->ctlDependenciesInfo, &print_dependency_to_file ); - fprintf(output,"}\n"); + //forAllInDynArrayDo(_VMSMasterEnv->counter_history_array_info, &print_dot_node_info ); + forAllInListOfArraysDo( semanticEnv->commDependenciesList, &print_comm_dependency_to_file ); + forAllInListOfArraysDo( semanticEnv->ctlDependenciesList, &print_ctl_dependency_to_file ); + //fprintf(output,"}\n"); + fflush(output); } else printf("Opening Dependencies file failed. Please check that folder \"counters\" exists in run directory and has write permission.\n"); } else { diff -r 6a367b5d9a2d -r bde026832af7 dependency.c --- a/dependency.c Mon Dec 05 19:00:51 2011 +0100 +++ b/dependency.c Mon Dec 19 17:15:10 2011 +0100 @@ -16,6 +16,16 @@ dependency_file = file; } +void print_ctl_dependency_to_file(void* _dep){ + Dependency* dep = (Dependency*) _dep; + fprintf(dependency_file,"ctlDep,%d,%d,%d,%d\n",dep->from_vp,dep->from_task,dep->to_vp,dep->to_task); +} + +void print_comm_dependency_to_file(void* _dep){ + Dependency* dep = (Dependency*) _dep; + fprintf(dependency_file,"commDep,%d,%d,%d,%d\n",dep->from_vp,dep->from_task,dep->to_vp,dep->to_task); +} + void print_dependency_to_file(void* _dep){ Dependency* dep = (Dependency*) _dep; fprintf(dependency_file,"VP_%d_%d -> VP_%d_%d;\n",dep->from_vp,dep->from_task,dep->to_vp,dep->to_task); diff -r 6a367b5d9a2d -r bde026832af7 dependency.h --- a/dependency.h Mon Dec 05 19:00:51 2011 +0100 +++ b/dependency.h Mon Dec 19 17:15:10 2011 +0100 @@ -1,6 +1,6 @@ /* * File: dependency.h - * Author: engelhardt + * Author: Nina Engelhardt * * Created on 29. August 2011, 17:41 */ @@ -29,6 +29,10 @@ int set_dependency_file(FILE* file); +void print_ctl_dependency_to_file(void* _dep); + +void print_comm_dependency_to_file(void* _dep); + void print_dependency_to_file(void* dep); #endif /* DEPENDENCY_H */