Changeset: aa718a27d27a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aa718a27d27a
Added Files:
monetdb5/scheduler/Tests/matpack00.mal
monetdb5/scheduler/Tests/matpack01.mal
monetdb5/scheduler/Tests/matpack02.mal
Branch: mutation
Log Message:
Add micro tests for matpack propagation
diffs (167 lines):
diff --git a/monetdb5/scheduler/Tests/matpack00.mal
b/monetdb5/scheduler/Tests/matpack00.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/scheduler/Tests/matpack00.mal
@@ -0,0 +1,49 @@
+# example framework to obtain insight in behavior of
+# a single MAL primitive
+
+function initialize{unsafe}(limit:lng):bat[:oid,:lng];
+ b:= bat.new(:oid,:lng);
+
+ r:= mmath.srand(0);
+ barrier i:= 0:lng;
+ k:= mmath.rand();
+ l:= calc.lng(k);
+ bat.append(b,l);
+ redo i:= iterator.next(1:lng,limit);
+ exit i;
+ return b;
+end initialize;
+
+function query(b:bat[:oid,:lng],c:bat[:oid,:lng],d:bat[:oid,:lng]):lng;
+ t0:= alarm.usec();
+ m:= mat.pack(b,c,d);
+ s:= algebra.subselect(m,1:lng,99:lng,true,false,false);
+ t1:= alarm.usec();
+ return query := t1-t0;
+end query;
+
+optimizer.multicore("user","query");
+function testrun(limit:lng);
+ t0:= alarm.usec();
+ b:= initialize(limit);
+ bat.setReadMode(b);
+ t1:= alarm.usec();
+ t1:= t1-t0;
+ max:= aggr.max(b);
+ min:= aggr.min(b);
+ step := max-min;
+ step := step/10;
+ io.printf(" max %d min %d step %d\n",max,min,step);
+
+ barrier i:=0;
+ t2:= user.query(b,b,b);
+ mdb.list("user","query");
+ io.printf("#run %d %d %d\n",limit,i,t2);
+ redo i:= iterator.next(1,8);
+ exit i;
+
+end testrun;
+
+# runs based on sizes
+testrun(100000:lng); #400K
+#testrun(1000000:lng); #4MB
diff --git a/monetdb5/scheduler/Tests/matpack01.mal
b/monetdb5/scheduler/Tests/matpack01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/scheduler/Tests/matpack01.mal
@@ -0,0 +1,49 @@
+# example framework to obtain insight in behavior of
+# a single MAL primitive
+
+function initialize{unsafe}(limit:lng):bat[:oid,:lng];
+ b:= bat.new(:oid,:lng);
+
+ r:= mmath.srand(0);
+ barrier i:= 0:lng;
+ k:= mmath.rand();
+ l:= calc.lng(k);
+ bat.append(b,l);
+ redo i:= iterator.next(1:lng,limit);
+ exit i;
+ return b;
+end initialize;
+
+function query(b:bat[:oid,:lng],c:bat[:oid,:lng],d:bat[:oid,:lng]):lng;
+ t0:= alarm.usec();
+ m:= mat.pack(b,c,d);
+ (s,t):= algebra.join(b,m);
+ t1:= alarm.usec();
+ return query := t1-t0;
+end query;
+
+optimizer.multicore("user","query");
+function testrun(limit:lng);
+ t0:= alarm.usec();
+ b:= initialize(limit);
+ bat.setReadMode(b);
+ t1:= alarm.usec();
+ t1:= t1-t0;
+ max:= aggr.max(b);
+ min:= aggr.min(b);
+ step := max-min;
+ step := step/10;
+ io.printf(" max %d min %d step %d\n",max,min,step);
+
+ barrier i:=0;
+ t2:= user.query(b,b,b);
+ mdb.list("user","query");
+ io.printf("#run %d %d %d\n",limit,i,t2);
+ redo i:= iterator.next(1,8);
+ exit i;
+
+end testrun;
+
+# runs based on sizes
+testrun(100000:lng); #400K
+#testrun(1000000:lng); #4MB
diff --git a/monetdb5/scheduler/Tests/matpack02.mal
b/monetdb5/scheduler/Tests/matpack02.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/scheduler/Tests/matpack02.mal
@@ -0,0 +1,54 @@
+# example framework to obtain insight in behavior of
+# a single MAL primitive
+
+function initialize{unsafe}(limit:lng):bat[:oid,:lng];
+ b:= bat.new(:oid,:lng);
+
+ r:= mmath.srand(0);
+ barrier i:= 0:lng;
+ k:= mmath.rand();
+ l:= calc.lng(k);
+ bat.append(b,l);
+ redo i:= iterator.next(1:lng,limit);
+ exit i;
+ return b;
+end initialize;
+
+function query(b:bat[:oid,:lng],c:bat[:oid,:lng],d:bat[:oid,:lng]):lng;
+ t0:= alarm.usec();
+ m:= mat.pack(b,c,d);
+ b1:= bat.partition(b,2,0);
+ b2:= bat.partition(b,2,1);
+ (s1,v1):= algebra.join(b1,m);
+ (s2,v2):= algebra.join(b2,m);
+ s:= mat.pack(s1,s2);
+ t:= mat.pack(v1,v2);
+ t1:= alarm.usec();
+ return query := t1-t0;
+end query;
+
+optimizer.multicore("user","query");
+function testrun(limit:lng);
+ t0:= alarm.usec();
+ b:= initialize(limit);
+ bat.setReadMode(b);
+ t1:= alarm.usec();
+ t1:= t1-t0;
+ max:= aggr.max(b);
+ min:= aggr.min(b);
+ step := max-min;
+ step := step/10;
+ io.printf(" max %d min %d step %d\n",max,min,step);
+
+ barrier i:=0;
+ t2:= user.query(b,b,b);
+ mdb.list("user","query");
+ io.printf("#run %d %d %d\n",limit,i,t2);
+ redo i:= iterator.next(1,8);
+ exit i;
+
+end testrun;
+
+# runs based on sizes
+testrun(100000:lng); #400K
+#testrun(1000000:lng); #4MB
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list