# HG changeset patch # User Merten Sach # Date 1325873378 -3600 # Node ID a1269b1549fc2cb4180809e8df40fb948e6c38e5 # Parent 1320dd56673ace11ad8766eeec9df4875dbdaed2 added preprocessor defines to disable perf_counters for vtune mesurement diff -r 1320dd56673a -r a1269b1549fc src/Application/main.c --- a/src/Application/main.c Fri Dec 16 16:40:07 2011 +0100 +++ b/src/Application/main.c Fri Jan 06 19:09:38 2012 +0100 @@ -19,6 +19,8 @@ #undef DEBUG //#define DEBUG +#define MEASURE_PERF + #if !defined(unix) && !defined(__unix__) #ifdef __MACH__ #define unix 1 @@ -104,8 +106,10 @@ barr->counter++; if(barr->counter == barr->nthreads) { +#ifdef MEASURE_PERF read(cycles_counter_main_fd, &(barr->endBarrierCycles.cycles), \ sizeof(barr->endBarrierCycles.cycles)); +#endif barr->counter = 0; for(i=0; i < barr->nthreads; i++) @@ -183,8 +187,9 @@ uint64 numCycles; for(o=0; o < outer_iters; o++) { - +#ifdef MEASURE_PERF saveCyclesAndInstrs(cpuid,startWorkload.cycles); +#endif //workltask for(i=0; i < inner_iters; i++) @@ -192,12 +197,14 @@ workspace1 += (workspace1 + 32)/2; workspace2 += (workspace2 + 23.2)/1.4; } - + +#ifdef MEASURE_PERF saveCyclesAndInstrs(cpuid,endWorkload.cycles); numCycles = endWorkload.cycles - startWorkload.cycles; //sanity check (400K is about 20K iters) if( numCycles < 400000 ) {totalWorkCycles += numCycles; numGoodTasks++;} else {totalBadCycles += numCycles; } +#endif //mutex access often causes switch to different Slave VP VPThread__mutex_lock(privateMutex, animatingPr); @@ -266,9 +273,11 @@ measurement_t *startExeCycles, *endExeCycles; startExeCycles = params->startExeCycles; +#ifdef MEASURE_PERF int nread = read(cycles_counter_main_fd, &(startExeCycles->cycles), sizeof(startExeCycles->cycles)); if(nread<0) perror("Error reading cycles counter"); +#endif //create (which starts running) all threads for(i=0; iendExeCycles->cycles = barr.endBarrierCycles.cycles; +#endif /* @@ -358,6 +369,7 @@ }//for +#ifdef MEASURE_PERF //setup performance counters hw_event = malloc(sizeof(struct perf_event_attr)); memset(hw_event,0,sizeof(struct perf_event_attr)); @@ -419,6 +431,7 @@ fprintf(stderr,"in main "); perror("Failed to open cycles counter"); } +#endif measurement_t startExeCycles, endExeCycles; BenchParams *benchParams; @@ -435,6 +448,7 @@ //This is the transition to the VMS runtime VPThread__create_seed_procr_and_do_work( &benchmark, benchParams ); +#ifdef MEASURE_PERF uint64_t totalWorkCyclesAcrossCores = 0, totalBadCyclesAcrossCores = 0; uint64_t totalSyncCyclesAcrossCores = 0, totalBadSyncCyclesAcrossCores = 0; for(i=0; i