Aug 19, 2011, 11:43:28 AM (8 years ago)

multi-thread section

1 edited


  • docs/HPCA2011/09-pipeline.tex

    r1320 r1325  
    55Moreover, using mulitiple cores, we can further improve the performance of Parabix while keeping the energy consumption at the same level.
    7 The typical approach to parallelizing software (data parallelism)
    8 requires nearly independent data, which is a difficult task
    9 for dividing XML data. A simple division determined by the
    10 segment size can easily make most of the segments illegal
    11 according to the parsing rules while the data as a whole is legal.
    12 Therefore, instead of dividing the data into segments and
    13 assigning different data segments to different cores,
    14 we divide the process into several stages and let each core work with one single stage.
     7A typical approach to parallelizing software, data parallelism, requires nearly independent data,
     8However, the nature of XML files makes them hard to partition nicely for data parallelism.
     9Several approaches have been used to address this problem.
     10A preparsing phase has been proposed to help partition the XML document \cite{dataparallel}.
     11The goal of this preparsing is to determine the tree structure of the XML document
     12so that it can be used to guide the full parsing in the next phase.
     13Another data parallel algorithm is called ParDOM \cite{Shah:2009}.
     14It first builds partial DOM node tree structures for each data segments and then link them
     15using preorder numbers that has been assigned to each start element to determine the ordering among siblings
     16and a stack to manage the parent-child relationship between elements.
     18Theses data parallelism approaches introduce a lot of overheads to solve the data dependencies between segments.
     19Therefore, instead of partitioning the data and assigning different data segments to different cores,
     20we propose a pipeline parallelism strategy that partitions the process into several stages and let each core work with one single stage.
    1622The interface between stages is implemented using a circular array,
Note: See TracChangeset for help on using the changeset viewer.