Changeset: 84dad0228f47 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84dad0228f47 Added Files: monetdb5/optimizer/opt_multicore.c monetdb5/optimizer/opt_multicore.h monetdb5/scheduler/run_multicore.c monetdb5/scheduler/run_multicore.h monetdb5/scheduler/run_multicore.mal Removed Files: monetdb5/optimizer/opt_mutation.c monetdb5/optimizer/opt_mutation.h monetdb5/scheduler/run_mutation.c monetdb5/scheduler/run_mutation.h monetdb5/scheduler/run_mutation.mal Modified Files: monetdb5/modules/mal/mal_init.mal monetdb5/optimizer/Makefile.ag monetdb5/optimizer/opt_pipes.c monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_support.c monetdb5/optimizer/opt_support.h monetdb5/optimizer/opt_wrapper.c monetdb5/optimizer/optimizer.mal monetdb5/scheduler/Makefile.ag monetdb5/scheduler/Tests/mutation00.mal monetdb5/scheduler/Tests/mutation00.stable.out monetdb5/scheduler/Tests/mutation01.mal monetdb5/scheduler/Tests/query00.stable.out monetdb5/scheduler/mut_policy.c monetdb5/scheduler/mut_policy.h monetdb5/scheduler/mut_transforms.h Branch: mutation Log Message:
Rename, the focus from the method diffs (truncated from 694 to 300 lines): diff --git a/monetdb5/modules/mal/mal_init.mal b/monetdb5/modules/mal/mal_init.mal --- a/monetdb5/modules/mal/mal_init.mal +++ b/monetdb5/modules/mal/mal_init.mal @@ -118,7 +118,7 @@ include transaction; # @- # scheduler components include run_isolate; -include run_mutation; +include run_multicore; include run_memo; include run_octopus; include srvpool; diff --git a/monetdb5/optimizer/Makefile.ag b/monetdb5/optimizer/Makefile.ag --- a/monetdb5/optimizer/Makefile.ag +++ b/monetdb5/optimizer/Makefile.ag @@ -54,7 +54,7 @@ lib_optimizer = { opt_mergetable.c opt_mergetable.h \ opt_mitosis.c opt_mitosis.h \ opt_multiplex.c opt_multiplex.h \ - opt_mutation.c opt_mutation.h \ + opt_multicore.c opt_multicore.h \ opt_octopus.c opt_octopus.h \ opt_origin.c opt_origin.h \ opt_pipes.c opt_pipes.h \ diff --git a/monetdb5/optimizer/opt_mutation.c b/monetdb5/optimizer/opt_multicore.c rename from monetdb5/optimizer/opt_mutation.c rename to monetdb5/optimizer/opt_multicore.c --- a/monetdb5/optimizer/opt_mutation.c +++ b/monetdb5/optimizer/opt_multicore.c @@ -17,7 +17,7 @@ * All Rights Reserved. */ #include "monetdb_config.h" -#include "opt_mutation.h" +#include "opt_multicore.h" /* (c) M Kersten @@ -26,7 +26,7 @@ */ int -OPTmutationImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +OPTmulticoreImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { int i,limit, slimit; InstrPtr *old= mb->stmt; @@ -48,7 +48,7 @@ OPTmutationImplementation(Client cntxt, for (i = 1; i < limit; i++) { if ( getModuleId(old[i]) == languageRef && getFunctionId(old[i]) == dataflowRef){ setModuleId(old[i], schedulerRef); - setFunctionId(old[i], mutationRef); + setFunctionId(old[i], multicoreRef); } pushInstruction(mb,old[i]); } diff --git a/monetdb5/optimizer/opt_mutation.h b/monetdb5/optimizer/opt_multicore.h rename from monetdb5/optimizer/opt_mutation.h rename to monetdb5/optimizer/opt_multicore.h --- a/monetdb5/optimizer/opt_mutation.h +++ b/monetdb5/optimizer/opt_multicore.h @@ -16,16 +16,16 @@ * Copyright August 2008-2013 MonetDB B.V. * All Rights Reserved. */ -#ifndef _OPT_MUTATION_ -#define _OPT_MUTATION_ +#ifndef _OPT_MULTICORE +#define _OPT_MULTICORE #include "opt_prelude.h" #include "opt_support.h" #include "mal_interpreter.h" #include "mal_instruction.h" #include "mal_function.h" -opt_export int OPTmutationImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +opt_export int OPTmulticoreImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -#define OPTDEBUGmutation if ( optDebug & (1 <<DEBUG_OPT_MUTATION) ) +#define OPTDEBUGmulticore if ( optDebug & (1 <<DEBUG_OPT_MULTICORE) ) #endif diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c --- a/monetdb5/optimizer/opt_pipes.c +++ b/monetdb5/optimizer/opt_pipes.c @@ -275,10 +275,10 @@ struct PIPELINES { "optimizer.garbageCollector();", "experimental", "OPTcompress", NULL, 1}, /* - * The mutation optimizer modifies the plan at each call. + * The multicore optimizer modifies the plan at each call. * It is a refinement of the default pipeline */ - {"mutation_pipe", + {"multicore_pipe", "optimizer.inline();" "optimizer.remap();" "optimizer.costModel();" @@ -300,7 +300,7 @@ struct PIPELINES { "optimizer.dataflow();" "optimizer.querylog();" "optimizer.multiplex();" - "optimizer.mutation();" + "optimizer.multicore();" "optimizer.garbageCollector();", "stable", NULL, NULL, 1}, /* sentinel */ diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c --- a/monetdb5/optimizer/opt_prelude.c +++ b/monetdb5/optimizer/opt_prelude.c @@ -129,7 +129,7 @@ str likeuselectRef; str ilikeuselectRef; str likeRef; str ilikeRef; -str mutationRef; +str multicoreRef; str not_likeRef; str not_ilikeRef; str listRef; @@ -391,7 +391,7 @@ void optimizerInit(void){ listRef = putName("list",4); likeRef = putName("like",4); ilikeRef = putName("ilike",5); - mutationRef = putName("mutation",8); + multicoreRef = putName("multicore",9); not_likeRef = putName("not_like",8); not_ilikeRef = putName("not_ilike",9); lockRef = putName("lock",4); diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h --- a/monetdb5/optimizer/opt_prelude.h +++ b/monetdb5/optimizer/opt_prelude.h @@ -129,7 +129,7 @@ opt_export str ilikeuselectRef; opt_export str listRef; opt_export str likeRef; opt_export str ilikeRef; -opt_export str mutationRef; +opt_export str multicoreRef; opt_export str not_likeRef; opt_export str not_ilikeRef; opt_export str lockRef; diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -168,7 +168,7 @@ struct OPTcatalog { {"mergetable", 0, 0, 0, DEBUG_OPT_MERGETABLE}, {"mitosis", 0, 0, 0, DEBUG_OPT_MITOSIS}, {"multiplex", 0, 0, 0, DEBUG_OPT_MULTIPLEX}, -{"mutation", 0, 0, 0, DEBUG_OPT_MUTATION}, +{"multicore", 0, 0, 0, DEBUG_OPT_MULTICORE}, {"octopus", 0, 0, 0, DEBUG_OPT_OCTOPUS}, {"origin", 0, 0, 0, DEBUG_OPT_ORIGIN}, {"peephole", 0, 0, 0, DEBUG_OPT_PEEPHOLE}, diff --git a/monetdb5/optimizer/opt_support.h b/monetdb5/optimizer/opt_support.h --- a/monetdb5/optimizer/opt_support.h +++ b/monetdb5/optimizer/opt_support.h @@ -64,7 +64,7 @@ #define DEBUG_OPT_MACRO 23 #define DEBUG_OPT_MATPACK 53 #define DEBUG_OPT_MERGETABLE 24 -#define DEBUG_OPT_MUTATION 54 +#define DEBUG_OPT_MULTICORE 54 #define DEBUG_OPT_OCTOPUS 25 #define DEBUG_OPT_ORIGIN 52 #define DEBUG_OPT_PARTITIONS 26 diff --git a/monetdb5/optimizer/opt_wrapper.c b/monetdb5/optimizer/opt_wrapper.c --- a/monetdb5/optimizer/opt_wrapper.c +++ b/monetdb5/optimizer/opt_wrapper.c @@ -61,7 +61,7 @@ All Rights Reserved. #include "opt_mergetable.h" #include "opt_mitosis.h" #include "opt_multiplex.h" -#include "opt_mutation.h" +#include "opt_multicore.h" #include "opt_octopus.h" #include "opt_origin.h" #include "opt_prejoin.h" @@ -106,7 +106,7 @@ struct{ {"mergetable", &OPTmergetableImplementation}, {"mitosis", &OPTmitosisImplementation}, {"multiplex", &OPTmultiplexImplementation}, - {"mutation", &OPTmutationImplementation}, + {"multicore", &OPTmulticoreImplementation}, {"octopus", &OPToctopusImplementation}, {"origin", &OPToriginImplementation}, {"prejoin", &OPTprejoinImplementation}, diff --git a/monetdb5/optimizer/optimizer.mal b/monetdb5/optimizer/optimizer.mal --- a/monetdb5/optimizer/optimizer.mal +++ b/monetdb5/optimizer/optimizer.mal @@ -494,12 +494,12 @@ pattern optimizer.pushselect(mod:str, fc address OPTwrapper comment "Push selects down projections"; -#opt_mutation.mal +#opt_multicore.mal -pattern optimizer.mutation():str +pattern optimizer.multicore():str address OPTwrapper; -pattern optimizer.mutation(mod:str, fcn:str):str +pattern optimizer.multicore(mod:str, fcn:str):str address OPTwrapper -comment "Prepare for plan mutation"; +comment "Prepare for adaptive multicore procesing"; optimizer.prelude(); diff --git a/monetdb5/scheduler/Makefile.ag b/monetdb5/scheduler/Makefile.ag --- a/monetdb5/scheduler/Makefile.ag +++ b/monetdb5/scheduler/Makefile.ag @@ -30,7 +30,7 @@ lib_scheduler = { SOURCES = \ run_adder.c run_adder.h \ run_isolate.c run_isolate.h \ - run_mutation.c run_mutation.h \ + run_multicore.c run_multicore.h \ mut_transforms.c mut_transforms.h \ mut_policy.c mut_policy.h \ run_memo.c run_memo.h \ @@ -42,7 +42,7 @@ lib_scheduler = { headers_mal = { HEADERS = mal DIR = libdir/monetdb5 - SOURCES = run_adder.mal run_isolate.mal run_mutation.mal run_memo.mal run_octopus.mal srvpool.mal + SOURCES = run_adder.mal run_isolate.mal run_multicore.mal run_memo.mal run_octopus.mal srvpool.mal } EXTRA_DIST_DIR = Tests diff --git a/monetdb5/scheduler/Tests/mutation00.mal b/monetdb5/scheduler/Tests/mutation00.mal --- a/monetdb5/scheduler/Tests/mutation00.mal +++ b/monetdb5/scheduler/Tests/mutation00.mal @@ -1,7 +1,7 @@ -# example framework for a mutation based execution stack +# example framework for a multicore based execution stack -# The mutation scheduler picks a plan from a specific pool -# possibly after performing introspection and plan mutation +# The multicore scheduler picks a plan from a specific pool +# possibly after performing introspection and plan multicore function initialize{unsafe}():bat[:oid,:lng]; b:= bat.new(:oid,:lng); @@ -40,7 +40,7 @@ exit z; end query; #multiple calls should produce more parallel plans. -optimizer.mutation("user","query"); +optimizer.multicore("user","query"); user.query(); user.query(); user.query(); diff --git a/monetdb5/scheduler/Tests/mutation00.stable.out b/monetdb5/scheduler/Tests/mutation00.stable.out --- a/monetdb5/scheduler/Tests/mutation00.stable.out +++ b/monetdb5/scheduler/Tests/mutation00.stable.out @@ -18,7 +18,7 @@ stdout of test 'mutation00` in directory # MonetDB/GIS module loaded # MonetDB/JAQL module loaded # MonetDB/SQL module loaded -function user.initialize():bat[:oid,:lng]; +function user.initialize{unsafe}():bat[:oid,:lng]; b := bat.new(:oid,:lng); INT_MAX := 2147483647; dbgmsk_restore := mdb.getDebug(); @@ -40,9 +40,10 @@ function user.query():void; t0 := alarm.usec(); b := user.initialize(); barrier z := language.dataflow(); - sum1 := aggr.sum(b); - sum2 := aggr.sum(b); - sum3 := aggr.sum(b); + s1 := algebra.subselect(b,1:lng,99:lng,true,false,false); + s2 := algebra.subselect(b,1:lng,999:lng,true,false,false); + s3 := algebra.subselect(b,1:lng,9999:lng,true,false,false); + language.pass(b); exit z; t1 := alarm.usec(); t2 := calc.-(t1,t0); @@ -53,10 +54,158 @@ function user.main():void; # The mutation scheduler picks a plan from a specific pool # possibly after performing introspection and plan mutation #multiple calls should produce more parallel plans. - scheduler.mutation("user","query"); - scheduler.mutation("user","query"); - scheduler.mutation("user","query"); + user.query(); + user.query(); + user.query(); + user.query(); + user.query(); end main; +#1164605 +#mutation candidate 4 cost 6666 +#mutation candidate 5 cost 5806 +#mutation candidate 6 cost 6703 +#mutation calls 1 cost 1000 +#mutation target instruction 6 cost 6703 + +&1 0 17 1 17 +% .explain # table_name +% mal # name +% clob # type +% 210 # length _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list