You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tajo.apache.org by "Hyunsik Choi (JIRA)" <ji...@apache.org> on 2014/09/16 13:13:33 UTC

[jira] [Commented] (TAJO-1041) Change tuple-at-a-time execution model to block iteration.

    [ https://issues.apache.org/jira/browse/TAJO-1041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14135292#comment-14135292 ] 

Hyunsik Choi commented on TAJO-1041:
------------------------------------

I'm designing push model iteration model instead of traditional pull-based model. Its advantages is to reduce memory copy and reuse allocated row block.

The description is as follows:

h3. RowBlock allocations
* Each physical executor will have its in/out row blocks, which are allocated once and are reused during a task.
* Each physical executor which bypasses tuples will have an output row block. 
* Each physical executor like join, projection, and scan, which builds new tuple will have input row block and output row block.
  * We call this kind of physical executor *projectable executor*.
  * An output row block of one physical executor is the input row block of its parent physical executor.
* Each physical executor which plays a role of filter will not have any row block.
  * We call this kind of physical executor *selectable executor*. Having and Selection are this type.
* RowBlock interface will have selection IDs, which indicate rows matched to filter conditions of descendant nodes.

h3. Iteration model
h4. Projectable executors
* A projectable executor will call its child node (or nodes) with its input row block.
* Then, a projectable executor will fill its output row block with processed rows.

h4. Selectable executors
  * A selectable executor will use only its output row block, which actually is an input row block of its parent row block.
  * It will add indices of qualified rows of its filter condition to the row block.

> Change tuple-at-a-time execution model to block iteration.
> ----------------------------------------------------------
>
>                 Key: TAJO-1041
>                 URL: https://issues.apache.org/jira/browse/TAJO-1041
>             Project: Tajo
>          Issue Type: Improvement
>            Reporter: Hyunsik Choi
>              Labels: block_iteration
>
> Currently, our physical executor is based on a tuple-at-a-time model. It is a traditional model and is well known that it is not inefficient in terms of CPU costs.
> Also, I think that we can design integrated interface for row block with considering row block and vectorized row block. I'll add some possibility to extend row block iteration model to be vectorized.
> This is an umbrella issue, which is to change current execution model to block iteration model.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)