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

Reply via email to