Changeset: f3d30300c77d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f3d30300c77d Modified Files: monetdb5/scheduler/mut_policy.c Branch: mutation Log Message:
Step towards better cost model for mutation. Mat packs are blocking, they should be removed a.s.a.p diffs (48 lines): diff --git a/monetdb5/scheduler/mut_policy.c b/monetdb5/scheduler/mut_policy.c --- a/monetdb5/scheduler/mut_policy.c +++ b/monetdb5/scheduler/mut_policy.c @@ -42,8 +42,10 @@ */ static int mutationCandidate(InstrPtr p){ - if ( getModuleId(p) == matRef && getFunctionId(p) == packRef) + if ( getModuleId(p) == matRef && (getFunctionId(p) == packRef || getFunctionId(p) == mergepackRef)) return 1; + //if ( getModuleId(p) == sqlRef && (getFunctionId(p) == subdeltaRef || getFunctionId(p) == projectdeltaRef)) + //return 1; return ( getModuleId(p) == algebraRef && (getFunctionId(p) == subselectRef || getFunctionId(p) == thetasubselectRef || @@ -71,6 +73,11 @@ MUTfindtarget(Client cntxt, Mutant m, ln if (src->calls && (src->profiler[i].ticks/src->calls <= threshold || (upperbound && src->profiler[i].ticks/src->calls >= upperbound)) ) continue; + // mat.pack are blocking, they weight more in the comparison + if ( getModuleId(p) == sqlRef && ( getFunctionId(p) == packRef || getFunctionId(p)== mergepackRef) ){ + if (src->calls && target >= 0 && src->profiler[i].ticks/src->calls * GDKnr_threads <= src->profiler[target].ticks/src->calls) + continue; + } else if (src->calls && target >= 0 && src->profiler[i].ticks/src->calls <= src->profiler[target].ticks/src->calls) continue; DEBUG_MULTICORE{ @@ -161,6 +168,11 @@ MUTpolicyBaseline(Client cntxt, Mutant m OPTdeadcodeImplementation(cntxt,m->src,0,0); chkProgram(cntxt->fdout,cntxt->nspace,mb); chkFlow(cntxt->fdout,mb); + + // retain general profiler marks + if (mb->profiler && mb->profiler[1].trace) + for( i =0; i < mb->stop; i++) + mb->profiler[i].trace =1 ; return mb->errors? -1:1; } @@ -194,7 +206,7 @@ MUTpolicy(Client cntxt, Mutant m) printFunction(cntxt->fdout, m->src,0,LIST_MAL_DEBUG); if ( r < 0 || m->src->errors) throw(MAL,"run_multicore","Baseline error"); - while( r > 0 && m->src->errors == 0){ + while(0 && r > 0 && m->src->errors == 0){ target = MUTfindpack(m, target-1); if ( target < 0 ) break; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list