Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > SSR_impls > SSR__MC_shared_impl
changeset 74:b73e4a6f3497 Holistic_Model
add dependency tracking for singleton
author | Nina Engelhardt <nengel@mailbox.tu-berlin.de> |
---|---|
date | Tue, 17 Apr 2012 20:14:34 +0200 |
parents | f20b4d9d3086 |
children | 52a02c918db8 |
files | SSR.c SSR.h SSR_Request_Handlers.c dependency.c dependency.h |
diffstat | 5 files changed, 32 insertions(+), 1 deletions(-) [+] |
line diff
1.1 --- a/SSR.c Mon Apr 16 18:25:31 2012 +0200 1.2 +++ b/SSR.c Tue Apr 17 20:14:34 2012 +0200 1.3 @@ -214,6 +214,7 @@ 1.4 semanticEnv->ctlDependenciesList = makeListOfArrays(sizeof(Dependency),128); 1.5 semanticEnv->commDependenciesList = makeListOfArrays(sizeof(Dependency),128); 1.6 semanticEnv->dynDependenciesList = makeListOfArrays(sizeof(Dependency),128); 1.7 + semanticEnv->singletonDependenciesList = makeListOfArrays(sizeof(Dependency),128); 1.8 semanticEnv->ntonGroupsInfo = makePrivDynArrayOfSize((void***)&(semanticEnv->ntonGroups),8); 1.9 1.10 semanticEnv->hwArcs = makeListOfArrays(sizeof(Dependency),128); 1.11 @@ -322,6 +323,7 @@ 1.12 forAllInListOfArraysDo( semanticEnv->commDependenciesList, &print_comm_dependency_to_file ); 1.13 forAllInListOfArraysDo( semanticEnv->ctlDependenciesList, &print_ctl_dependency_to_file ); 1.14 forAllInListOfArraysDo( semanticEnv->dynDependenciesList, &print_dyn_dependency_to_file ); 1.15 + forAllInListOfArraysDo( semanticEnv->singletonDependenciesList, &print_singleton_dependency_to_file ); 1.16 forAllInListOfArraysDo( semanticEnv->hwArcs, &print_hw_dependency_to_file ); 1.17 //fprintf(output,"}\n"); 1.18 fflush(output); 1.19 @@ -337,7 +339,7 @@ 1.20 freeListOfArrays(semanticEnv->commDependenciesList); 1.21 freeListOfArrays(semanticEnv->ctlDependenciesList); 1.22 freeListOfArrays(semanticEnv->dynDependenciesList); 1.23 - 1.24 + freeListOfArrays(semanticEnv->singletonDependenciesList); 1.25 #endif 1.26 #ifdef HOLISTIC__TURN_ON_PERF_COUNTERS 1.27 for(n=0;n<255;n++)
2.1 --- a/SSR.h Mon Apr 16 18:25:31 2012 +0200 2.2 +++ b/SSR.h Tue Apr 17 20:14:34 2012 +0200 2.3 @@ -53,6 +53,8 @@ 2.4 int32 hasBeenStarted; 2.5 int32 hasFinished; 2.6 PrivQueueStruc *waitQ; 2.7 + int executingVp; 2.8 + int executingTask; 2.9 } 2.10 SSRSingleton; 2.11 2.12 @@ -121,6 +123,7 @@ 2.13 NtoN** ntonGroups; 2.14 PrivDynArrayInfo* ntonGroupsInfo; 2.15 ListOfArrays* dynDependenciesList; 2.16 + ListOfArrays* singletonDependenciesList; 2.17 Unit last_in_slot[NUM_CORES * NUM_ANIM_SLOTS]; 2.18 ListOfArrays* hwArcs; 2.19 int lastReqType;
3.1 --- a/SSR_Request_Handlers.c Mon Apr 16 18:25:31 2012 +0200 3.2 +++ b/SSR_Request_Handlers.c Tue Apr 17 20:14:34 2012 +0200 3.3 @@ -458,6 +458,14 @@ 3.4 if( singleton->hasFinished ) 3.5 { //the code that sets the flag to true first sets the end instr addr 3.6 reqstingPr->dataRetFromReq = singleton->endInstrAddr; 3.7 + #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC 3.8 + Dependency newd; 3.9 + newd.from_vp = singleton->executingVp; 3.10 + newd.from_task = singleton->executingTask; 3.11 + newd.to_vp = reqstingPr->slaveID; 3.12 + newd.to_task = reqstingPr->assignCount +1; 3.13 + addToListOfArrays(Dependency,newd,semEnv->singletonDependenciesList); 3.14 + #endif 3.15 resume_slaveVP( reqstingPr, semEnv ); 3.16 return; 3.17 } 3.18 @@ -517,12 +525,22 @@ 3.19 } 3.20 3.21 singleton->hasFinished = TRUE; 3.22 + singleton->executingVp = requestingPr->slaveID; 3.23 + singleton->executingTask = requestingPr->assignCount; 3.24 waitQ = singleton->waitQ; 3.25 numWaiting = numInPrivQ( waitQ ); 3.26 for( i = 0; i < numWaiting; i++ ) 3.27 { //they will resume inside start singleton, then jmp to end singleton 3.28 resumingPr = readPrivQ( waitQ ); 3.29 resumingPr->dataRetFromReq = singleton->endInstrAddr; 3.30 + #ifdef HOLISTIC__TURN_ON_OBSERVE_UCC 3.31 + Dependency newd; 3.32 + newd.from_vp = singleton->executingVp; 3.33 + newd.from_task = singleton->executingTask; 3.34 + newd.to_vp = resumingPr->slaveID; 3.35 + newd.to_task = resumingPr->assignCount +1; 3.36 + addToListOfArrays(Dependency,newd,semEnv->singletonDependenciesList); 3.37 + #endif 3.38 resume_slaveVP( resumingPr, semEnv ); 3.39 } 3.40
4.1 --- a/dependency.c Mon Apr 16 18:25:31 2012 +0200 4.2 +++ b/dependency.c Tue Apr 17 20:14:34 2012 +0200 4.3 @@ -42,6 +42,12 @@ 4.4 fprintf(dependency_file,"dynDep,%d,%d,%d,%d\n",dep->from_vp,dep->from_task,dep->to_vp,dep->to_task); 4.5 } 4.6 4.7 +void print_singleton_dependency_to_file(void* _dep){ 4.8 + Dependency* dep = (Dependency*) _dep; 4.9 + if(!dep) return; 4.10 + fprintf(dependency_file,"singDep,%d,%d,%d,%d\n",dep->from_vp,dep->from_task,dep->to_vp,dep->to_task); 4.11 +} 4.12 + 4.13 void print_hw_dependency_to_file(void* _dep){ 4.14 Dependency* dep = (Dependency*) _dep; 4.15 if(!dep) return;
5.1 --- a/dependency.h Mon Apr 16 18:25:31 2012 +0200 5.2 +++ b/dependency.h Tue Apr 17 20:14:34 2012 +0200 5.3 @@ -46,6 +46,8 @@ 5.4 5.5 void print_dyn_dependency_to_file(void* _dep); 5.6 5.7 +void print_singleton_dependency_to_file(void* _dep); 5.8 + 5.9 void print_hw_dependency_to_file(void* _dep); 5.10 5.11 void print_dependency_to_file(void* dep);