Changeset: d55814a0163e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d55814a0163e
Removed Files:
gdk/gdk_mapreduce.c
gdk/gdk_mapreduce.h
Modified Files:
clients/Tests/exports.stable.out
gdk/Makefile.ag
sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out
sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128.single
sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.single
Branch: partitioned-hash
Log Message:
Merged with default.
diffs (truncated from 484 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -267,7 +267,6 @@ gdk_return HEAPextend(Heap *h, size_t si
size_t HEAPmemsize(Heap *h);
size_t HEAPvmsize(Heap *h);
lng IMPSimprintsize(BAT *b);
-void MRschedule(int taskcnt, void **arg, void( *cmd)(void *p));
int MT_check_nr_cores(void);
int MT_create_thread(MT_Id *t, void( *function)(void *), void *arg, enum
MT_thr_detach d);
void MT_exiting_thread(void);
diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -25,7 +25,7 @@ lib_gdk = {
gdk_private.h gdk_delta.h gdk_logger.h gdk_posix.h \
gdk_system.h gdk_system_private.h gdk_tm.h gdk_storage.h \
gdk_calc.c gdk_calc.h gdk_calc_compare.h gdk_calc_private.h \
- gdk_aggr.c gdk_group.c gdk_mapreduce.c gdk_mapreduce.h \
+ gdk_aggr.c gdk_group.c \
gdk_hash.c gdk_hash.h \
gdk_imprints.c gdk_imprints.h \
gdk_join.c \
diff --git a/gdk/gdk_mapreduce.c b/gdk/gdk_mapreduce.c
deleted file mode 100644
--- a/gdk/gdk_mapreduce.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * Copyright 2008-2015 MonetDB B.V.
- */
-
-/*
- * (co) Martin L. Kersten
- * This module provide a lightweight map-reduce scheduler for multicore
systems.
- * A limited number of workers are initialized upfront, which take the tasks
- * from a central queue. The header of these task descriptors should comply
- * with the MRtask structure.
- *
- */
-#include "monetdb_config.h"
-#include "gdk.h"
-#include "gdk_mapreduce.h"
-
-typedef struct {
- MT_Sema *sema; /* micro scheduler handle */
- void (*cmd) (void *); /* the function to be executed */
- void *arg; /* the arguments of the function */
-} MRtask;
-
-/* each entry in the queue contains a list of tasks */
-typedef struct MRQUEUE {
- MRtask *tasks;
- int index; /* next available task */
- int size; /* number of tasks */
-} MRqueue;
-
-static MRqueue *mrqueue;
-static int mrqsize = -1; /* size of queue */
-static int mrqlast = -1;
-/* it's a shared resource, so we need locks */
-static MT_Lock mrqlock MT_LOCK_INITIALIZER("mrqlock");
-static MT_Sema mrqsema; /* threads wait on empty queues */
-
-
-static void MRworker(void *);
-
-/* There is just a single queue for the workers */
-static void
-MRqueueCreate(int sz)
-{
- int i;
- MT_Id tid;
-
-#ifdef NEED_MT_LOCK_INIT
- MT_lock_init(&mrqlock, "mrqlock");
-#endif
- MT_lock_set(&mrqlock, "MRqueueCreate");
- MT_sema_init(&mrqsema, 0, "mrqsema");
- if (mrqueue) {
- MT_lock_unset(&mrqlock, "MRqueueCreate");
- GDKerror("One map-reduce queue allowed");
- return;
- }
- sz *= 2;
- mrqueue = (MRqueue *) GDKzalloc(sizeof(MRqueue) * sz);
- if (mrqueue == 0) {
- MT_lock_unset(&mrqlock, "MRqueueCreate");
- GDKerror("Could not create the map-reduce queue");
- return;
- }
- mrqsize = sz;
- mrqlast = 0;
- /* create a worker thread for each core as specified as system
parameter */
- for (i = 0; i < GDKnr_threads; i++)
- MT_create_thread(&tid, MRworker, (void *) 0, MT_THR_DETACHED);
- MT_lock_unset(&mrqlock, "MRqueueCreate");
-}
-
-static void
-MRenqueue(int taskcnt, MRtask *tasks)
-{
- assert(taskcnt > 0);
- MT_lock_set(&mrqlock, "MRenqueue");
- if (mrqlast == mrqsize) {
- mrqsize <<= 1;
- mrqueue = (MRqueue *) GDKrealloc(mrqueue, sizeof(MRqueue) *
mrqsize);
- if (mrqueue == 0) {
- MT_lock_unset(&mrqlock, "MRenqueue");
- GDKerror("Could not enlarge the map-reduce queue");
- return;
- }
- }
- mrqueue[mrqlast].index = 0;
- mrqueue[mrqlast].tasks = tasks;
- mrqueue[mrqlast].size = taskcnt;
- mrqlast++;
- MT_lock_unset(&mrqlock, "MRenqueue");
- /* a task list is added for consumption */
- while (taskcnt-- > 0)
- MT_sema_up(&mrqsema, "MRenqueue");
-}
-
-static MRtask *
-MRdequeue(void)
-{
- MRtask *r = NULL;
- int idx;
-
- MT_sema_down(&mrqsema, "MRdequeue");
- assert(mrqlast);
- MT_lock_set(&mrqlock, "MRdequeue");
- if (mrqlast > 0) {
- idx = mrqueue[mrqlast - 1].index;
- r = &mrqueue[mrqlast - 1].tasks[idx++];
- if (mrqueue[mrqlast - 1].size == idx)
- mrqlast--;
- else
- mrqueue[mrqlast - 1].index = idx;
- }
- MT_lock_unset(&mrqlock, "MRdequeue");
- assert(r);
- return r;
-}
-
-static void
-MRworker(void *arg)
-{
- MRtask *task;
- (void) arg;
- do {
- task = MRdequeue();
- (task->cmd) (task->arg);
- MT_sema_up(task->sema, "MRworker");
- } while (1);
-}
-
-/* schedule the tasks and return when all are done */
-void
-MRschedule(int taskcnt, void **arg, void (*cmd) (void *p))
-{
- int i;
- MT_Sema sema;
- MRtask *task = GDKmalloc(taskcnt * sizeof(MRtask));
-
- if (mrqueue == 0)
- MRqueueCreate(1024);
-
- MT_sema_init(&sema, 0, "sema");
- for (i = 0; i < taskcnt; i++) {
- task[i].sema = &sema;
- task[i].cmd = cmd;
- task[i].arg = arg ? arg[i] : NULL;
- }
- MRenqueue(taskcnt, task);
- /* waiting for all report result */
- for (i = 0; i < taskcnt; i++)
- MT_sema_down(&sema, "MRschedule");
- MT_sema_destroy(&sema);
- GDKfree(task);
-}
diff --git a/gdk/gdk_mapreduce.h b/gdk/gdk_mapreduce.h
deleted file mode 100644
--- a/gdk/gdk_mapreduce.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * Copyright 2008-2015 MonetDB B.V.
- */
-
-#ifndef _GDK_MAPREDUCE_H_
-#define _GDK_MAPREDUCE_H_
-
-gdk_export void MRschedule(int taskcnt, void **arg, void (*cmd) (void *p));
-
-#endif /* _GDK_MAPREDUCE_H_ */
diff --git a/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
b/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
--- a/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
+++ b/sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
@@ -46,42 +46,42 @@ project (
% clob # type
% 142 # length
function user.s4_1(A0:lng,A1:bte):void;
- X_60:void := querylog.define("explain select a as d, sum(b), (2 * (sum(b)
/ (select 2))) as f from dbg group by d;","sequential_pipe",38);
+ X_59:void := querylog.define("explain select a as d, sum(b), (2 * (sum(b)
/ (select 2))) as f from dbg group by d;","sequential_pipe",38);
X_26 := bat.new(nil:oid,nil:str);
X_34 := bat.append(X_26,"sys.dbg");
- X_44 := bat.append(X_34,"sys.L1");
- X_53 := bat.append(X_44,".L3");
+ X_43 := bat.append(X_34,"sys.L1");
+ X_52 := bat.append(X_43,".L3");
X_29 := bat.new(nil:oid,nil:str);
X_36 := bat.append(X_29,"d");
- X_46 := bat.append(X_36,"L1");
- X_55 := bat.append(X_46,"f");
+ X_45 := bat.append(X_36,"L1");
+ X_54 := bat.append(X_45,"f");
X_30 := bat.new(nil:oid,nil:str);
X_38 := bat.append(X_30,"int");
- X_48 := bat.append(X_38,"bigint");
- X_57 := bat.append(X_48,"bigint");
+ X_47 := bat.append(X_38,"bigint");
+ X_56 := bat.append(X_47,"bigint");
X_31 := bat.new(nil:oid,nil:int);
X_40 := bat.append(X_31,32);
- X_50 := bat.append(X_40,64);
- X_58 := bat.append(X_50,64);
+ X_49 := bat.append(X_40,64);
+ X_57 := bat.append(X_49,64);
X_33 := bat.new(nil:oid,nil:int);
X_42 := bat.append(X_33,0);
- X_52 := bat.append(X_42,0);
- X_59 := bat.append(X_52,0);
+ X_51 := bat.append(X_42,0);
+ X_58 := bat.append(X_51,0);
X_3 := sql.mvc();
- X_4:bat[:oid,:oid] := sql.tid(X_3,"sys","dbg");
+ C_4:bat[:oid,:oid] := sql.tid(X_3,"sys","dbg");
X_7:bat[:oid,:int] := sql.bind(X_3,"sys","dbg","a",0);
- X_10 := algebra.leftfetchjoin(X_4,X_7);
+ X_10 := algebra.leftfetchjoin(C_4,X_7);
(X_11,r1_11,r2_11) := group.subgroupdone(X_10);
X_14 := algebra.leftfetchjoin(r1_11,X_10);
X_15:bat[:oid,:int] := sql.bind(X_3,"sys","dbg","b",0);
- X_17 := algebra.leftfetchjoin(X_4,X_15);
+ X_17 := algebra.leftfetchjoin(C_4,X_15);
X_18:bat[:oid,:lng] := aggr.subsum(X_17,X_11,r1_11,true,true);
X_20 := algebra.project(X_10,A1);
X_21 := algebra.leftfetchjoin(r1_11,X_20);
X_22 := batcalc.lng(X_21);
X_23:bat[:oid,:lng] := batcalc./(X_18,X_22);
X_24:bat[:oid,:lng] := batcalc.*(A0,X_23);
- sql.resultSet(X_53,X_55,X_57,X_58,X_59,X_14,X_18,X_24);
+ sql.resultSet(X_52,X_54,X_56,X_57,X_58,X_14,X_18,X_24);
end user.s4_1;
#set optimizer = 'default_pipe';
#SELECT a as d, SUM(b), (2 * (SUM(b) / (SELECT 2))) as f FROM dbg GROUP BY d;
@@ -114,42 +114,42 @@ project (
% clob # type
% 147 # length
function user.s10_1(A0:lng,A1:bte):void;
- X_60:void := querylog.define("explain select a as d, sum(b) as e, (2 *
(sum(b) / (select 2))) as f from dbg group by d;","sequential_pipe",38);
+ X_59:void := querylog.define("explain select a as d, sum(b) as e, (2 *
(sum(b) / (select 2))) as f from dbg group by d;","sequential_pipe",38);
X_26 := bat.new(nil:oid,nil:str);
X_34 := bat.append(X_26,"sys.dbg");
- X_44 := bat.append(X_34,"sys.L1");
- X_53 := bat.append(X_44,".L3");
+ X_43 := bat.append(X_34,"sys.L1");
+ X_52 := bat.append(X_43,".L3");
X_29 := bat.new(nil:oid,nil:str);
X_36 := bat.append(X_29,"d");
- X_46 := bat.append(X_36,"e");
- X_55 := bat.append(X_46,"f");
+ X_45 := bat.append(X_36,"e");
+ X_54 := bat.append(X_45,"f");
X_30 := bat.new(nil:oid,nil:str);
X_38 := bat.append(X_30,"int");
- X_48 := bat.append(X_38,"bigint");
- X_57 := bat.append(X_48,"bigint");
+ X_47 := bat.append(X_38,"bigint");
+ X_56 := bat.append(X_47,"bigint");
X_31 := bat.new(nil:oid,nil:int);
X_40 := bat.append(X_31,32);
- X_50 := bat.append(X_40,64);
- X_58 := bat.append(X_50,64);
+ X_49 := bat.append(X_40,64);
+ X_57 := bat.append(X_49,64);
X_33 := bat.new(nil:oid,nil:int);
X_42 := bat.append(X_33,0);
- X_52 := bat.append(X_42,0);
- X_59 := bat.append(X_52,0);
+ X_51 := bat.append(X_42,0);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list