Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > VMS_impls > VMS__MC_shared_impl
diff VMS.c @ 166:aefd87f9d12f
loop graph
| author | Nina Engelhardt |
|---|---|
| date | Tue, 18 Oct 2011 15:53:04 +0200 |
| parents | 395f58384a5c |
| children | 981acd1db6af |
line diff
1.1 --- a/VMS.c Wed Sep 28 14:58:41 2011 +0200 1.2 +++ b/VMS.c Tue Oct 18 15:53:04 2011 +0200 1.3 @@ -190,7 +190,17 @@ 1.4 _VMSMasterEnv->dependencies = VMS__malloc(10*sizeof(void*)); 1.5 _VMSMasterEnv->dependenciesInfo = makePrivDynArrayInfoFrom((void***)&(_VMSMasterEnv->dependencies),10); 1.6 #endif 1.7 + 1.8 + #ifdef DETECT_LOOP_GRAPH 1.9 + _VMSMasterEnv->loop_graph = VMS__malloc(10*sizeof(void*)); 1.10 + _VMSMasterEnv->loop_graph_array_info = makePrivDynArrayInfoFrom((void***)&(_VMSMasterEnv->loop_graph),10); 1.11 + int loop_i; 1.12 + for(loop_i=0;loop_i<NUM_CORES;loop_i++){ 1.13 + _VMSMasterEnv->loop_counter[loop_i]=0; 1.14 + } 1.15 1.16 + #endif 1.17 + 1.18 #ifdef MEAS__PERF_COUNTERS 1.19 _VMSMasterEnv->counter_history = VMS__malloc(10*sizeof(void*)); 1.20 _VMSMasterEnv->counter_history_array_info = makePrivDynArrayInfoFrom((void***)&(_VMSMasterEnv->counter_history),10); 1.21 @@ -809,6 +819,41 @@ 1.22 printf("Could not open Dependencies file, please clean \"counters\" folder. (Must contain less than 255 files.)\n"); 1.23 } 1.24 #endif 1.25 + #ifdef DETECT_LOOP_GRAPH 1.26 + FILE* loop_output; 1.27 + int loop_n; 1.28 + char loop_filename[255]; 1.29 + for(loop_n=0;loop_n<255;loop_n++) 1.30 + { 1.31 + sprintf(loop_filename, "./counters/LoopGraph.%d.dot",loop_n); 1.32 + loop_output = fopen(loop_filename,"r"); 1.33 + if(loop_output) 1.34 + { 1.35 + fclose(loop_output); 1.36 + }else{ 1.37 + break; 1.38 + } 1.39 + } 1.40 + if(loop_n<255){ 1.41 + printf("Saving Loop Graph to File: %s ...\n", loop_filename); 1.42 + loop_output = fopen(loop_filename,"w+"); 1.43 + if(loop_output!=NULL){ 1.44 + set_dependency_file(loop_output); 1.45 + fprintf(loop_output,"digraph Loop {\n"); 1.46 + set_loop_file(loop_output); 1.47 + forAllInDynArrayDo(_VMSMasterEnv->counter_history_array_info, &print_dot_node_info ); 1.48 + forAllInDynArrayDo( _VMSMasterEnv->loop_graph_array_info, &print_per_slot_to_file ); 1.49 + //int coreIdx; 1.50 + //for(coreIdx=0;coreIdx<NUM_CORES;coreIdx++){ 1.51 + // fprintf(loop_output,"sync%d_%d [shape=rect,label=\"Sync\"];\n",coreIdx,_VMSMasterEnv->loop_counter[coreIdx]); 1.52 + //} 1.53 + fprintf(loop_output,"}\n"); 1.54 + } else 1.55 + printf("Opening Loop Graph file failed. Please check that folder \"counters\" exists in run directory.\n"); 1.56 + } else { 1.57 + printf("Could not open Loop Graph file, please clean \"counters\" folder. (Must contain less than 255 files.)\n"); 1.58 + } 1.59 +#endif 1.60 #ifdef MEAS__TIME_PLUGIN 1.61 printHist( _VMSMasterEnv->reqHdlrLowTimeHist ); 1.62 saveHistToFile( _VMSMasterEnv->reqHdlrLowTimeHist );
