Re: [Monetdb-developers] [Monetdb-pf-checkins] pathfinder/compiler/algebra algopt.c, , 1.30, 1.31 planner.c, , 1.56, 1.57 properties.c, , 1.34, 1.35
Hi Jan, This one is likely to speed up my use of MXQ a lot! Does "references" also mean that a lot less elements will be constructed? One of the scalability bottlenecks that I frequently encounter in my experiments is not that it is slow, but that I create more than 2^32 elements (which doesn't fit in a bat with 32-bit oids). Avoiding subtree copies would probably improve the scalability of my experiments enormously. I must definitely push the move to the algebra backend :-) Maurice. Jan Rittinger wrote:
Update of /cvsroot/monetdb/pathfinder/compiler/algebra In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13092/algebra
Modified Files: algopt.c planner.c properties.c Log Message: -- Added node based properties that check (top-down) if ...
... the node may be used (indirectly) for serialization
... the node id may be used
... the node order may be used
... the node values may be accessed
... a downward axis is applied lateron (child, descendant, descendant-or-self)
... a side-way axis is applied lateron (following, following-sibling, preceding, preceding-sibling)
... an upward axis is applied lateron (parent, ancestor, ancestor-or-self)
... a self axis is applied lateron (self, ancestor-or-self, descendant-or-self)
... the node may be used as input to node construction
-- Exploited the node base property that checks for the downward axis property:
For every content constructor whose input is not queried we can use the physical shallow content constructor that makes use of references instead of creating a subtree copy.
(This sped up the execution time of XMark Q10 (scale factor 1) by 60% and the execution time of XMark Q15 by 150%.)
U algopt.c Index: algopt.c =================================================================== RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/algopt.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- algopt.c 25 Feb 2008 15:37:04 -0000 1.30 +++ algopt.c 1 Apr 2008 16:37:11 -0000 1.31 @@ -339,6 +339,7 @@ false /* composite key */, true /* key */, false /* ocols */, + true /* req_node */, false /* reqval */, true /* level */, true /* refctr */, @@ -356,6 +357,7 @@ true /* composite key */, true /* key */, true /* ocols */, + true /* req_node */, true /* reqval */, true /* level */, true /* refctr */,
U planner.c Index: planner.c =================================================================== RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/planner.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- planner.c 26 Mar 2008 11:20:47 -0000 1.56 +++ planner.c 1 Apr 2008 16:37:13 -0000 1.57 @@ -1784,7 +1784,7 @@ *(plan_t **) PFarray_at (R(n)->plans, i), sortby (iter, pos)));
- if (false /* magic flag to enable shallow content constructors */) + if (!PFprop_node_content_queried (n->prop, att_item)) /* for each plan, generate a constructor */ for (unsigned int i = 0; i < PFarray_last (ordered_in); i++) add_plan (ret,
U properties.c Index: properties.c =================================================================== RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/properties.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- properties.c 14 Jan 2008 14:05:24 -0000 1.34 +++ properties.c 1 Apr 2008 16:37:14 -0000 1.35 @@ -122,9 +122,9 @@ void PFprop_infer (bool card, bool const_, bool set, bool dom, bool icol, bool ckey, - bool key, bool ocols, bool reqval, - bool level, bool refctr, bool guides, - bool ori_names, bool unq_names, + bool key, bool ocols, bool req_node, + bool reqval, bool level, bool refctr, + bool guides, bool ori_names, bool unq_names, PFla_op_t *root, PFguide_tree_t *guide) { PFprop_create_prop (root); @@ -145,6 +145,8 @@ PFprop_infer_guide (root, guide); if (const_) PFprop_infer_const (root); + if (req_node) + PFprop_infer_req_node (root); if (reqval) PFprop_infer_reqval (root); if (dom)
------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Monetdb-pf-checkins mailing list Monetdb-pf-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
-- ---------------------------------------------------------------------- Dr.Ir. M. van Keulen - Assistant Professor, Data Management Technology Univ. of Twente, Dept of EEMCS, POBox 217, 7500 AE Enschede, Netherlands Email: m.vankeulen@utwente.nl, Phone: +31 534893688, Fax: +31 534892927 Room: ZI 3039, WWW: http://www.cs.utwente.nl/~keulen
On 04/02/2008 09:56 AM, Keulen, M. van (Maurice) wrote with possible deletions:
Hi Jan,
This one is likely to speed up my use of MXQ a lot! Does "references" also mean that a lot less elements will be constructed? One of the scalability bottlenecks that I frequently encounter in my experiments is not that it is slow, but that I create more than 2^32 elements (which doesn't fit in a bat with 32-bit oids). Avoiding subtree copies would probably improve the scalability of my experiments enormously. I must definitely push the move to the algebra backend :-)
Hi Maurice, you are completely correct :) As long as you do *not* query the constructed nodes but use them only for serialization the subtree copying will produce at most twice as many nodes (reference+original) as you construct. Note that this checkin does not improve the performance if you query the constructed nodes using a downward axis (e.g., if you use the constructed nodes as an intermediate 'tuple' representation). Jan -- Jan Rittinger Database Systems Technische Universität München (Germany) http://www-db.in.tum.de/~rittinge/
participants (2)
-
Jan Rittinger
-
Keulen, M. van (Maurice)