Changeset 3060 for docs


Ignore:
Timestamp:
Apr 19, 2013, 5:31:54 PM (6 years ago)
Author:
cameron
Message:

Citations

Location:
docs/Balisage13/Bal2013came0601
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • docs/Balisage13/Bal2013came0601/Bal2013came0601.html

    r3059 r3060  
     1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    12<html lang="en">
    23<head>
    34<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    45<title></title>
    5 <link rel="stylesheet" href="balisage-plain.css" type="text/css">
     6<link rel="stylesheet" href="balisage-proceedings.css" type="text/css">
    67<meta name="keywords" content="">
    78</head>
     
    181182</head>
    182183<body>
    183 <div class="inline-citation" id="cite-XMLChip09" style="display:none;width: 240px">
    184 <a class="quiet" href="javascript:hidecite('cite-XMLChip09')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Leventhal, Michael and
    185          Eric Lemoine 2009. The XML chip at 6 years. Proceedings of International Symposium on
    186          Processing XML Efficiently 2009, Montréal.</p>
    187 </div>
    188 <div class="inline-citation" id="cite-Datapower09" style="display:none;width: 240px">
    189 <a class="quiet" href="javascript:hidecite('cite-Datapower09')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Salz, Richard,
    190          Heather Achilles, and David Maze. 2009. Hardware and software trade-offs in the IBM
    191          DataPower XML XG4 processor card. Proceedings of International Symposium on Processing XML
    192          Efficiently 2009, Montréal.</p>
    193 </div>
    194 <div class="inline-citation" id="cite-PPoPP08" style="display:none;width: 240px">
    195 <a class="quiet" href="javascript:hidecite('cite-PPoPP08')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Cameron, Robert D. 2007. A Case Study
    196          in SIMD Text Processing with Parallel Bit Streams UTF-8 to UTF-16 Transcoding. Proceedings
    197          of 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming 2008, Salt
    198          Lake City, Utah. On the Web at <a href="http://research.ihost.com/ppopp08/" class="link" target="_new">http://research.ihost.com/ppopp08/</a>.</p>
    199 </div>
    200 <div class="inline-citation" id="cite-CASCON08" style="display:none;width: 240px">
    201 <a class="quiet" href="javascript:hidecite('cite-CASCON08')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Cameron, Robert D.,
    202          Kenneth S Herdy, and Dan Lin. 2008. High Performance XML Parsing Using Parallel Bit Stream
    203          Technology. Proceedings of CASCON 2008. 13th ACM SIGPLAN Symposium on Principles and
    204          Practice of Parallel Programming 2008, Toronto.</p>
    205 </div>
    206 <div class="inline-citation" id="cite-SVGOpen08" style="display:none;width: 240px">
    207 <a class="quiet" href="javascript:hidecite('cite-SVGOpen08')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Herdy, Kenneth
    208          S., Robert D. Cameron and David S. Burggraf. 2008. High Performance GML to SVG
    209          Transformation for the Visual Presentation of Geographic Data in Web-Based Mapping Systems.
    210          Proceedings of SVG Open 6th International Conference on Scalable Vector Graphics,
    211          Nuremburg. On the Web at
    212             <a href="http://www.svgopen.org/2008/papers/74-HighPerformance_GML_to_SVG_Transformation_for_the_Visual_Presentation_of_Geographic_Data_in_WebBased_Mapping_Systems/" class="link" target="_new">http://www.svgopen.org/2008/papers/74-HighPerformance_GML_to_SVG_Transformation_for_the_Visual_Presentation_of_Geographic_Data_in_WebBased_Mapping_Systems/</a>.</p>
    213 </div>
    214 <div class="inline-citation" id="cite-Ross06" style="display:none;width: 240px">
    215 <a class="quiet" href="javascript:hidecite('cite-Ross06')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Ross, Kenneth A. 2006. Efficient hash
    216          probes on modern processors. Proceedings of ICDE, 2006. ICDE 2006, Atlanta. On the Web at
    217             <a href="www.cs.columbia.edu/~kar/pubsk/icde2007.pdf" class="link" target="_new">www.cs.columbia.edu/~kar/pubsk/icde2007.pdf</a>.</p>
    218 </div>
    219 <div class="inline-citation" id="cite-ASPLOS09" style="display:none;width: 240px">
    220 <a class="quiet" href="javascript:hidecite('cite-ASPLOS09')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Cameron, Robert D. and Dan
    221          Lin. 2009. Architectural Support for SWAR Text Processing with Parallel Bit Streams: The
    222          Inductive Doubling Principle. Proceedings of ASPLOS 2009, Washington, DC.</p>
    223 </div>
    224 <div class="inline-citation" id="cite-Wu08" style="display:none;width: 240px">
    225 <a class="quiet" href="javascript:hidecite('cite-Wu08')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Wu, Yu, Qi Zhang, Zhiqiang Yu and
    226          Jianhui Li. 2008. A Hybrid Parallel Processing for XML Parsing and Schema Validation.
    227          Proceedings of Balisage 2008, Montréal. On the Web at
    228             <a href="http://www.balisage.net/Proceedings/vol1/html/Wu01/BalisageVol1-Wu01.html" class="link" target="_new">http://www.balisage.net/Proceedings/vol1/html/Wu01/BalisageVol1-Wu01.html</a>.</p>
    229 </div>
    230 <div class="inline-citation" id="cite-u8u16" style="display:none;width: 240px">
    231 <a class="quiet" href="javascript:hidecite('cite-u8u16')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">u8u16 - A High-Speed UTF-8 to UTF-16
    232          Transcoder Using Parallel Bit Streams Technical Report 2007-18. 2007. School of Computing
    233          Science Simon Fraser University, June 21 2007.</p>
    234 </div>
    235 <div class="inline-citation" id="cite-XML10" style="display:none;width: 240px">
    236 <a class="quiet" href="javascript:hidecite('cite-XML10')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Extensible Markup Language (XML) 1.0 (Fifth
    237          Edition) W3C Recommendation 26 November 2008. On the Web at
    238             <a href="http://www.w3.org/TR/REC-xml/" class="link" target="_new">http://www.w3.org/TR/REC-xml/</a>.</p>
    239 </div>
    240 <div class="inline-citation" id="cite-Unicode" style="display:none;width: 240px">
    241 <a class="quiet" href="javascript:hidecite('cite-Unicode')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">The Unicode Consortium. 2009. On the Web at
    242             <a href="http://unicode.org/" class="link" target="_new">http://unicode.org/</a>.</p>
    243 </div>
    244 <div class="inline-citation" id="cite-Pex06" style="display:none;width: 240px">
    245 <a class="quiet" href="javascript:hidecite('cite-Pex06')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex"> Hilewitz, Y. and Ruby B. Lee.
    246          2006. Fast Bit Compression and Expansion with Parallel Extract and Parallel Deposit
    247          Instructions. Proceedings of the IEEE 17th International Conference on Application-Specific
    248          Systems, Architectures and Processors (ASAP), pp. 65-72, September 11-13, 2006.</p>
    249 </div>
    250 <div class="inline-citation" id="cite-InfoSet" style="display:none;width: 240px">
    251 <a class="quiet" href="javascript:hidecite('cite-InfoSet')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">XML Information Set (Second Edition) W3C
    252          Recommendation 4 February 2004. On the Web at
    253          <a href="http://www.w3.org/TR/xml-infoset/" class="link" target="_new">http://www.w3.org/TR/xml-infoset/</a>.</p>
    254 </div>
    255 <div class="inline-citation" id="cite-Saxon" style="display:none;width: 240px">
    256 <a class="quiet" href="javascript:hidecite('cite-Saxon')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">SAXON The XSLT and XQuery Processor. On the Web
    257          at <a href="http://saxon.sourceforge.net/" class="link" target="_new">http://saxon.sourceforge.net/</a>.</p>
    258 </div>
    259 <div class="inline-citation" id="cite-Kay08" style="display:none;width: 240px">
    260 <a class="quiet" href="javascript:hidecite('cite-Kay08')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex"> Kay, Michael Y. 2008. Ten Reasons Why Saxon
    261          XQuery is Fast, IEEE Data Engineering Bulletin, December 2008.</p>
    262 </div>
    263 <div class="inline-citation" id="cite-AElfred" style="display:none;width: 240px">
    264 <a class="quiet" href="javascript:hidecite('cite-AElfred')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex"> The Ælfred XML Parser. On the Web at
    265             <a href="http://saxon.sourceforge.net/aelfred.html" class="link" target="_new">http://saxon.sourceforge.net/aelfred.html</a>.</p>
    266 </div>
    267 <div class="inline-citation" id="cite-JNI" style="display:none;width: 240px">
    268 <a class="quiet" href="javascript:hidecite('cite-JNI')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Hitchens, Ron. Java NIO. O'Reilly, 2002.</p>
    269 </div>
    270 <div class="inline-citation" id="cite-Expat" style="display:none;width: 240px">
    271 <a class="quiet" href="javascript:hidecite('cite-Expat')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">The Expat XML Parser.
    272             <a href="http://expat.sourceforge.net/" class="link" target="_new">http://expat.sourceforge.net/</a>.</p>
     184<div class="inline-citation" id="cite-CameronHerdyLin2008" style="display:none;width: 240px">
     185<a class="quiet" href="javascript:hidecite('cite-CameronHerdyLin2008')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Cameron, Robert D., Herdy, Kenneth S. and Lin, Dan. High performance XML parsing using parallel bit stream technology. CASCON'08: Proc. 2008 conference of the center for advanced studies on collaborative research. 2008 New York, NY, USA</p>
     186</div>
     187<div class="inline-citation" id="cite-papi" style="display:none;width: 240px">
     188<a class="quiet" href="javascript:hidecite('cite-papi')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Innovative Computing Laboratory, University of Texas. Performance Application Programming Interface.<a href="http://icl.cs.utk.edu/papi/" class="link" target="_new">http://icl.cs.utk.edu/papi/</a></p>
     189</div>
     190<div class="inline-citation" id="cite-perf" style="display:none;width: 240px">
     191<a class="quiet" href="javascript:hidecite('cite-perf')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Eranian, Stephane, Gouriou, Eric, Moseley, Tipp and Bruijn, Willem de. Linux kernel profiling with perf.<a href="https://perf.wiki.kernel.org/index.php/Tutorial" class="link" target="_new">https://perf.wiki.kernel.org/index.php/Tutorial</a></p>
     192</div>
     193<div class="inline-citation" id="cite-Cameron2008" style="display:none;width: 240px">
     194<a class="quiet" href="javascript:hidecite('cite-Cameron2008')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Cameron, Robert D.. A case study in SIMD text processing with parallel bit streams: UTF-8 to UTF-16 transcoding. Proc. 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 2008 New York, NY, USA</p>
     195</div>
     196<div class="inline-citation" id="cite-ParaDOM2009" style="display:none;width: 240px">
     197<a class="quiet" href="javascript:hidecite('cite-ParaDOM2009')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Shah, Bhavik, Rao, Praveen, Moon, Bongki and Rajagopalan, Mohan. A Data Parallel Algorithm for XML DOM Parsing. Database and XML Technologies. 2009</p>
     198</div>
     199<div class="inline-citation" id="cite-XMLSSE42" style="display:none;width: 240px">
     200<a class="quiet" href="javascript:hidecite('cite-XMLSSE42')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Lei, Zhai. XML Parsing Accelerator with Intel Streaming SIMD Extensions 4 (Intel SSE4). 2008<a href="Intel%20Software%20Network" class="link" target="_new">Intel Software Network</a></p>
     201</div>
     202<div class="inline-citation" id="cite-Cameron2009" style="display:none;width: 240px">
     203<a class="quiet" href="javascript:hidecite('cite-Cameron2009')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Cameron, Rob, Herdy, Ken and Amiri, Ehsan Amiri. Parallel Bit Stream Technology as a Foundation for XML Parsing Performance. Int'l Symposium on Processing XML Efficiently: Overcoming Limits on Space, Time, or Bandwidth. 2009</p>
     204</div>
     205<div class="inline-citation" id="cite-HilewitzLee2006" style="display:none;width: 240px">
     206<a class="quiet" href="javascript:hidecite('cite-HilewitzLee2006')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Hilewitz, Yedidya and Lee, Ruby B.. Fast Bit Compression and Expansion with Parallel Extract and Parallel Deposit Instructions. ASAP '06: Proc. IEEE 17th Int'l Conference on Application-specific Systems, Architectures and Processors. 2006 Washington, DC, USA</p>
     207</div>
     208<div class="inline-citation" id="cite-Asanovic-EECS-2006-183" style="display:none;width: 240px">
     209<a class="quiet" href="javascript:hidecite('cite-Asanovic-EECS-2006-183')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Asanovic, Krste and others. The Landscape of Parallel Computing Research: A View from Berkeley. 2006</p>
     210</div>
     211<div class="inline-citation" id="cite-GRID2006" style="display:none;width: 240px">
     212<a class="quiet" href="javascript:hidecite('cite-GRID2006')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Lu, Wei, Chiu, Kenneth and Pan, Yinfei. A Parallel Approach to XML Parsing. Proceedings of the 7th IEEE/ACM International Conference on Grid Computing. 2006 Washington, DC, USA</p>
     213</div>
     214<div class="inline-citation" id="cite-cameron-EuroPar2011" style="display:none;width: 240px">
     215<a class="quiet" href="javascript:hidecite('cite-cameron-EuroPar2011')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Cameron, Robert D., Amiri, Ehsan, Herdy, Kenneth S., Lin, Dan, Shermer, Thomas C. and Popowich, Fred P.. Parallel Scanning with Bitstream Addition: An XML Case Study. Euro-Par 2011, LNCS 6853, Part II. 2011 Berlin, Heidelberg</p>
     216</div>
     217<div class="inline-citation" id="cite-HPCA2012" style="display:none;width: 240px">
     218<a class="quiet" href="javascript:hidecite('cite-HPCA2012')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Lin, Dan, Medforth, Nigel, Herdy, Kenneth S., Shriraman, Arrvindh and Cameron, Rob. Parabix: Boosting the efficiency of text processing on commodity processors. International Symposium on High-Performance Computer Architecture. 2012 Los Alamitos, CA, USA</p>
     219</div>
     220<div class="inline-citation" id="cite-HPCC2011" style="display:none;width: 240px">
     221<a class="quiet" href="javascript:hidecite('cite-HPCC2011')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">You, Cheng-Han and Wang, Sheng-De. A Data Parallel Approach to XML Parsing and Query. 10th IEEE International Conference on High Performance Computing and Communications. 2011 Los Alamitos, CA, USA</p>
     222</div>
     223<div class="inline-citation" id="cite-E-SCIENCE2007" style="display:none;width: 240px">
     224<a class="quiet" href="javascript:hidecite('cite-E-SCIENCE2007')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Pan, Yinfei, Zhang, Ying, Chiu, Kenneth and Lu, Wei. Parallel XML Parsing Using Meta-DFAs. International Conference on e-Science and Grid Computing. 2007 Los Alamitos, CA, USA</p>
     225</div>
     226<div class="inline-citation" id="cite-ICWS2008" style="display:none;width: 240px">
     227<a class="quiet" href="javascript:hidecite('cite-ICWS2008')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Pan, Yinfei, Zhang, Ying and Chiu, Kenneth. Hybrid Parallelism for XML SAX Parsing. IEEE International Conference on Web Services. 2008 Los Alamitos, CA, USA</p>
     228</div>
     229<div class="inline-citation" id="cite-IPDPS2008" style="display:none;width: 240px">
     230<a class="quiet" href="javascript:hidecite('cite-IPDPS2008')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Pan, Yinfei, Zhang, Ying and Chiu, Kenneth. Simultaneous transducers for data-parallel XML parsing. International Parallel and Distributed Processing Symposium. 2008 Los Alamitos, CA, USA</p>
     231</div>
     232<div class="inline-citation" id="cite-HackersDelight" style="display:none;width: 240px">
     233<a class="quiet" href="javascript:hidecite('cite-HackersDelight')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Warren, Henry S.. Hacker's Delight. 2002</p>
     234</div>
     235<div class="inline-citation" id="cite-lu2007advances" style="display:none;width: 240px">
     236<a class="quiet" href="javascript:hidecite('cite-lu2007advances')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Lu, C.T., Dos Santos, R.F., Sripada, L.N. and Kou, Y.. Advances in GML for geospatial applications. 2007</p>
     237</div>
     238<div class="inline-citation" id="cite-lake2004geography" style="display:none;width: 240px">
     239<a class="quiet" href="javascript:hidecite('cite-lake2004geography')" style="font-size:90%"><img src="eks.png" alt="[x]" style="float:right;clear:both;margin:1px"></a><p style="margin:0ex">Lake, R., Burggraf, D.S., Trninic, M. and Rae, L.. Geography mark-up language (GML) [foundation for the geo-web]. 2004</p>
    273240</div>
    274241<div id="mast"><div class="content">
    275 <h2 class="article-title" id="idp66448"></h2>
     242<h2 class="article-title" id="idp70464"></h2>
    276243<div class="author">
    277244<h3 class="author">Nigel Medforth</h3>
     
    323290</div>
    324291<div class="mast-box">
    325 <p class="title"><a href="javascript:toggle('idp67568')" class="quiet"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp67568"></a> <span onclick="javascript:toggle('idp67568');return true">Abstract</span></p>
    326 <div class="folder" id="folder-idp67568" style="display:none"><p id="idp67872">Prior research on the acceleration of XML processing using SIMD and multi-core
     292<p class="title"><a href="javascript:toggle('idp71584')" class="quiet"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp71584"></a> <span onclick="javascript:toggle('idp71584');return true">Abstract</span></p>
     293<div class="folder" id="folder-idp71584" style="display:none"><p id="idp71888">Prior research on the acceleration of XML processing using SIMD and multi-core
    327294            parallelism has lead to a number of interesting research prototypes. This work
    328295            investigates the extent to which the techniques underlying these prototypes could result
     
    335302            beyond were realized. </p></div>
    336303</div>
    337 <hr>
    338 </div>
    339304<div class="toc">
    340305<p><b>Table of Contents</b></p>
    341306<dl>
    342 <dt><span class="section"><a href="#idp275776" class="toc">Introduction</a></span></dt>
     307<dt><span class="section"><a href="#idp280112" class="toc">Introduction</a></span></dt>
    343308<dt><span class="section"><a href="#background" class="toc">Background</a></span></dt>
    344309<dd><dl>
    345310<dt><span class="section"><a href="#background-xerces" class="toc">Xerces C++ Structure</a></span></dt>
    346 <dt><span class="section"><a href="#idp343136" class="toc">The Parabix Framework</a></span></dt>
    347 <dt><span class="section"><a href="#idp435712" class="toc">Sequential vs. Parallel Paradigm</a></span></dt>
     311<dt><span class="section"><a href="#idp354992" class="toc">The Parabix Framework</a></span></dt>
     312<dt><span class="section"><a href="#idp449616" class="toc">Sequential vs. Parallel Paradigm</a></span></dt>
    348313</dl></dd>
    349314<dt><span class="section"><a href="#architecture" class="toc">Architecture</a></span></dt>
    350315<dd><dl>
    351 <dt><span class="section"><a href="#idp441104" class="toc">Overview</a></span></dt>
     316<dt><span class="section"><a href="#idp457296" class="toc">Overview</a></span></dt>
    352317<dt><span class="section"><a href="#character-set-adapter" class="toc">Character Set Adapters</a></span></dt>
    353318<dt><span class="section"><a href="#par-filter" class="toc">Combined Parallel Filtering</a></span></dt>
     
    359324<dt><span class="section"><a href="#performance" class="toc">Performance</a></span></dt>
    360325<dd><dl>
    361 <dt><span class="section"><a href="#idp600160" class="toc">Xerces C++ SAXCount</a></span></dt>
    362 <dt><span class="section"><a href="#idp626688" class="toc">GML2SVG</a></span></dt>
     326<dt><span class="section"><a href="#idp629568" class="toc">Xerces C++ SAXCount</a></span></dt>
     327<dt><span class="section"><a href="#idp655888" class="toc">GML2SVG</a></span></dt>
    363328</dl></dd>
    364329<dt><span class="section"><a href="#conclusion" class="toc">Conclusion and Future Work</a></span></dt>
     
    366331</div>
    367332<div class="mast-box">
    368 <p class="title"><a href="javascript:toggle('idp69296')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp69296"></a> <span onclick="javascript:toggle('idp69296');return true">Nigel Medforth</span></p>
    369 <div class="folder" id="folder-idp69296" style="display:none">
     333<p class="title"><a href="javascript:toggle('idp73312')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp73312"></a> <span onclick="javascript:toggle('idp73312');return true">Nigel Medforth</span></p>
     334<div class="folder" id="folder-idp73312" style="display:none">
    370335<h5 class="author-email"><code class="email">&lt;<a class="email" href="mailto:nmedfort@sfu.ca">nmedfort@sfu.ca</a>&gt;</code></h5>
    371336<div class="affiliation">
     
    378343</div>
    379344<div class="personblurb">
    380 <p id="idp51616">Nigel Medforth is a M.Sc. student at Simon Fraser University and the lead
     345<p id="idp55040">Nigel Medforth is a M.Sc. student at Simon Fraser University and the lead
    381346               developer of icXML. He earned a Bachelor of Technology in Information Technology at
    382347               Kwantlen Polytechnic University in 2009 and was awarded the Dean’s Medal for
    383348               Outstanding Achievement.</p>
    384 <p id="idp52624">Nigel is currently researching ways to leverage both the Parabix framework and
     349<p id="idp56048">Nigel is currently researching ways to leverage both the Parabix framework and
    385350               stream-processing models to further accelerate XML parsing within icXML.</p>
    386351</div>
     
    388353</div>
    389354<div class="mast-box">
    390 <p class="title"><a href="javascript:toggle('idp56288')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp56288"></a> <span onclick="javascript:toggle('idp56288');return true">Dan Lin</span></p>
    391 <div class="folder" id="folder-idp56288" style="display:none">
     355<p class="title"><a href="javascript:toggle('idp59712')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp59712"></a> <span onclick="javascript:toggle('idp59712');return true">Dan Lin</span></p>
     356<div class="folder" id="folder-idp59712" style="display:none">
    392357<h5 class="author-email"><code class="email">&lt;<a class="email" href="mailto:lindanl@sfu.ca">lindanl@sfu.ca</a>&gt;</code></h5>
    393358<div class="affiliation">
     
    395360<p class="orgname">Simon Fraser University </p>
    396361</div>
    397 <div class="personblurb"><p id="idp58000">Dan Lin is a Ph.D student at Simon Fraser University. She earned a Master of Science
     362<div class="personblurb"><p id="idp61424">Dan Lin is a Ph.D student at Simon Fraser University. She earned a Master of Science
    398363             in Computing Science at Simon Fraser University in 2010. Her research focus on on high
    399364             performance algorithms that exploit parallelization strategies on various multicore platforms.
     
    402367</div>
    403368<div class="mast-box">
    404 <p class="title"><a href="javascript:toggle('idp60560')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp60560"></a> <span onclick="javascript:toggle('idp60560');return true">Kenneth Herdy</span></p>
    405 <div class="folder" id="folder-idp60560" style="display:none">
     369<p class="title"><a href="javascript:toggle('idp63984')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp63984"></a> <span onclick="javascript:toggle('idp63984');return true">Kenneth Herdy</span></p>
     370<div class="folder" id="folder-idp63984" style="display:none">
    406371<h5 class="author-email"><code class="email">&lt;<a class="email" href="mailto:ksherdy@sfu.ca">ksherdy@sfu.ca</a>&gt;</code></h5>
    407372<div class="affiliation">
     
    410375</div>
    411376<div class="personblurb">
    412 <p id="idp62288"> Ken Herdy completed an Advanced Diploma of Technology in Geographical Information
     377<p id="idp65712"> Ken Herdy completed an Advanced Diploma of Technology in Geographical Information
    413378               Systems at the British Columbia Institute of Technology in 2003 and earned a Bachelor
    414379               of Science in Computing Science with a Certificate in Spatial Information Systems at
    415380               Simon Fraser University in 2005. </p>
    416 <p id="idp262528"> Ken is currently pursuing PhD studies in Computing Science at Simon Fraser
     381<p id="idp266976"> Ken is currently pursuing PhD studies in Computing Science at Simon Fraser
    417382               University with industrial scholarship support from the Natural Sciences and
    418383               Engineering Research Council of Canada, the Mathematics of Information Technology and
     
    424389</div>
    425390<div class="mast-box">
    426 <p class="title"><a href="javascript:toggle('idp265264')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp265264"></a> <span onclick="javascript:toggle('idp265264');return true">Rob Cameron</span></p>
    427 <div class="folder" id="folder-idp265264" style="display:none">
     391<p class="title"><a href="javascript:toggle('idp269712')" class="linkbox"><img class="toc-icon" src="plus.png" alt="expand" id="icon-idp269712"></a> <span onclick="javascript:toggle('idp269712');return true">Rob Cameron</span></p>
     392<div class="folder" id="folder-idp269712" style="display:none">
    428393<h5 class="author-email"><code class="email">&lt;<a class="email" href="mailto:cameron@cs.sfu.ca">cameron@cs.sfu.ca</a>&gt;</code></h5>
    429394<div class="affiliation">
     
    435400<p class="orgname">International Characters, Inc.</p>
    436401</div>
    437 <div class="personblurb"><p id="idp266928">Dr. Rob Cameron is Professor of Computing Science and Associate Dean of Applied
     402<div class="personblurb"><p id="idp271376">Dr. Rob Cameron is Professor of Computing Science and Associate Dean of Applied
    438403               Sciences at Simon Fraser University. His research interests include programming
    439404               language and software system technology, with a specific focus on high performance
     
    451416<div id="main">
    452417<div class="article">
    453 <h2 class="article-title" id="idp66448"></h2>
    454 <div class="section" id="idp275776">
     418<h2 class="article-title" id="idp70464"></h2>
     419<div class="section" id="idp280112">
    455420<h2 class="title" style="clear: both">Introduction</h2>
    456 <p id="idp276416">   
     421<p id="idp280752">   
    457422        Parallelization and acceleration of XML parsing is a widely
    458423        studied problem that has seen the development of a number
     
    464429        For example, one possibility for data
    465430        parallelization is to add a pre-parsing step to compute
    466         a skeleton tree structure of an  XML document \cite{GRID2006}.
     431        a skeleton tree structure of an  XML document <a class="xref" id="idp281568" href="javascript:showcite('cite-GRID2006','idp281568')">Lu and Chiu 2006</a>.
    467432        The parallelization of the pre-parsing stage itself can be tackled with
    468         state machines \cite{E-SCIENCE2007, IPDPS2008}.
    469         Methods without pre-parsing have used speculation \cite{HPCC2011} or post-processing that
    470         combines the partial results \cite{ParaDOM2009}.
     433          state machines <a class="xref" id="idp294480" href="javascript:showcite('cite-E-SCIENCE2007','idp294480')">Pan and Zhang 2007</a>, <a class="xref" id="idp295232" href="javascript:showcite('cite-IPDPS2008','idp295232')">Pan and Zhang 2008</a>.
     434        Methods without pre-parsing have used speculation <a class="xref" id="idp296048" href="javascript:showcite('cite-HPCC2011','idp296048')">You and Wang 2011</a> or post-processing that
     435        combines the partial results <a class="xref" id="idp296880" href="javascript:showcite('cite-ParaDOM2009','idp296880')">Shah and Rao 2009</a>.
    471436        A hybrid technique that combines data and pipeline parallelism was proposed to
    472         hide the latency of a "job" that has to be done sequentially \cite{ICWS2008}.
     437        hide the latency of a "job" that has to be done sequentially <a class="xref" id="idp297744" href="javascript:showcite('cite-ICWS2008','idp297744')">Pan and Zhang 2008</a>.
    473438      </p>
    474 <p id="idp277808">
     439<p id="idp298624">
    475440        Fewer efforts have investigated SIMD parallelism, although this approach
    476441        has the potential advantage of improving single core performance as well
    477         as offering savings in energy consumption \cite{HPCA2012}.
     442        as offering savings in energy consumption <a class="xref" id="idp299088" href="javascript:showcite('cite-HPCA2012','idp299088')">Lin and Medforth 2012</a>.
    478443        Intel introduced specialized SIMD string processing instructions in the SSE 4.2 instruction set extension
    479         and showed how they can be used to improve the performance of XML parsing \cite{XMLSSE42}.
     444        and showed how they can be used to improve the performance of XML parsing <a class="xref" id="idp300032" href="javascript:showcite('cite-XMLSSE42','idp300032')">Lei 2008</a>.
    480445        The Parabix framework uses generic SIMD extensions and bit parallel methods to
    481         process hundreds of XML input characters simultaneously \cite{Cameron2009, cameron-EuroPar2011}.
     446        process hundreds of XML input characters simultaneously <a class="xref" id="idp300944" href="javascript:showcite('cite-Cameron2009','idp300944')">Cameron and Herdy 2009</a> <a class="xref" id="idp301696" href="javascript:showcite('cite-cameron-EuroPar2011','idp301696')">Cameron and Amiri 2011</a>.
    482447        Parabix prototypes have also combined SIMD methods with thread-level parallelism to
    483         achieve further acceleration on multicore systems \cite{HPCA2012}.
     448        achieve further acceleration on multicore systems <a class="xref" id="idp302608" href="javascript:showcite('cite-HPCA2012','idp302608')">Lin and Medforth 2012</a>.
    484449      </p>
    485 <p id="idp279712">
     450<p id="idp303376">
    486451        In this paper, we move beyond research prototypes to consider
    487452        the detailed integration of both SIMD and multicore parallelism into the
     
    502467        multiple cores.
    503468      </p>
    504 <p id="idp281152">
     469<p id="idp304816">
    505470        The remainder of this paper is organized as follows.   
    506471          <a class="xref" href="#background" title="Background">section “Background”</a> discusses the structure of the Xerces and Parabix XML parsers and the fundamental
     
    522487<div class="section" id="background-xerces">
    523488<h3 class="title" style="clear: both">Xerces C++ Structure</h3>
    524 <p id="idp300432"> The Xerces C++ parser is a widely-used standards-conformant
     489<p id="idp312144"> The Xerces C++ parser is a widely-used standards-conformant
    525490            XML parser produced as open-source software
    526491             by the Apache Software Foundation.
     
    533498            parsing using either pull parsing or SAX/SAX2 push-style parsing as well as a DOM
    534499            tree-based parsing interface. </p>
    535 <p id="idp301696">
     500<p id="idp313408">
    536501            Xerces,
    537502            like all traditional parsers, processes XML documents sequentially a byte-at-a-time from
     
    552517<div class="table-wrapper" id="xerces-profile">
    553518<p class="title">Table I</p>
    554 <div class="caption"><p id="idm824832">Execution Time of Top 10 Xerces Functions</p></div>
     519<div class="caption"><p id="idm821408">Execution Time of Top 10 Xerces Functions</p></div>
    555520<table class="table" xml:id="xerces-profile">
    556521<colgroup span="1">
     
    607572</div>
    608573</div>
    609 <div class="section" id="idp343136">
     574<div class="section" id="idp354992">
    610575<h3 class="title" style="clear: both">The Parabix Framework</h3>
    611 <p id="idp343808"> The Parabix (parallel bit stream) framework is a transformative approach to XML
     576<p id="idp355664"> The Parabix (parallel bit stream) framework is a transformative approach to XML
    612577            parsing (and other forms of text processing.) The key idea is to exploit the
    613578            availability of wide SIMD registers (e.g., 128-bit) in commodity processors to represent
     
    615580            facilitate this, the input data is first transposed into a set of basis bit streams.
    616581              For example, <a class="xref" href="#xml-bytes">Table II</a> shows  the ASCII bytes for the string "<code class="code">b7&lt;A</code>" with
    617                 the corresponding  8 basis bit streams, b<sub>0</sub> through  b<sub>7</sub> shown in  <a class="xref" href="#xml-bits">Table III</a>.
    618 --&gt;
    619            
    620             Boolean-logic operations\footnote{∧, \√ and ¬ denote the
    621             boolean AND, OR and NOT operators.} are used to classify the input bits into a set of
     582                the corresponding  8 basis bit streams, b<sub>0</sub> through  b<sub>7</sub> shown in  <a class="xref" href="#xml-bits">Table III</a>.
     583            The bits used to construct b<sub>7</sub> have been highlighted in this example.
     584              Boolean-logic operations (∧, \√ and ¬ denote the
     585              boolean AND, OR and NOT operators) are used to classify the input bits into a set of
    622586               <span class="ital">character-class bit streams</span>, which identify key
    623587            characters (or groups of characters) with a <code class="code">1</code>. For example, one of the
     
    639603<div class="table-wrapper" id="xml-bytes">
    640604<p class="title">Table II</p>
    641 <div class="caption"><p id="idp358432">XML Source Data</p></div>
     605<div class="caption"><p id="idp370304">XML Source Data</p></div>
    642606<table class="table" xml:id="xml-bytes">
    643607<colgroup span="1">
     
    668632<div class="table-wrapper" id="xml-bits">
    669633<p class="title">Table III</p>
    670 <div class="caption"><p id="idp374704">8-bit ASCII Basis Bit Streams</p></div>
     634<div class="caption"><p id="idp386512">8-bit ASCII Basis Bit Streams</p></div>
    671635<table class="table" xml:id="xml-bits">
    672636<colgroup span="1">
     
    735699</table>
    736700</div>
    737 <p id="idp414416"> Consider, for example, the XML source data stream shown in the first line of <a class="xref" href="#derived">Table IV</a>.
     701<p id="idp426096"> Consider, for example, the XML source data stream shown in the first line of <a class="xref" href="#derived">Table IV</a>.
    738702The remaining lines of this figure show
    739703            several parallel bit streams that are computed in Parabix-style parsing, with each bit
     
    745709            character immediately following the opener (i.e., "<code class="code">/</code>") or
    746710            not. The remaining three lines show streams that can be computed in subsequent parsing
    747             (using the technique of bitstream addition \cite{cameron-EuroPar2011}), namely streams
     711            (using the technique of bitstream addition <a class="xref" id="idp429040" href="javascript:showcite('cite-cameron-EuroPar2011','idp429040')">Cameron and Amiri 2011</a>), namely streams
    748712            marking the element names, attribute names and attribute values of tags. </p>
    749713<div class="table-wrapper" id="derived">
    750714<p class="title">Table IV</p>
    751 <div class="caption"><p id="idp418560">XML Source Data and Derived Parallel Bit Streams</p></div>
     715<div class="caption"><p id="idp430592">XML Source Data and Derived Parallel Bit Streams</p></div>
    752716<table class="table" xml:id="derived">
    753717<colgroup span="1">
     
    799763</table>
    800764</div>
    801 <p id="idp431488"> Two intuitions may help explain how the Parabix approach can lead to improved XML
     765<p id="idp443616"> Two intuitions may help explain how the Parabix approach can lead to improved XML
    802766            parsing performance. The first is that the use of the full register width offers a
    803767            considerable information advantage over sequential byte-at-a-time parsing. That is,
     
    808772            individual decision-bits, an approach that computes many of them in parallel (e.g., 128
    809773            bytes at a time using 128-bit registers) should provide substantial benefit. </p>
    810 <p id="idp432736"> Previous studies have shown that the Parabix approach improves many aspects of XML
    811             processing, including transcoding \cite{Cameron2008}, character classification and
     774<p id="idp444864"> Previous studies have shown that the Parabix approach improves many aspects of XML
     775            processing, including transcoding <a class="xref" id="idp445264" href="javascript:showcite('cite-Cameron2008','idp445264')">Cameron 2008</a>, character classification and
    812776            validation, tag parsing and well-formedness checking. The first Parabix parser used
    813777            processor bit scan instructions to considerably accelerate sequential scanning loops for
    814             individual characters \cite{CameronHerdyLin2008}. Recent work has incorporated a method
    815             of parallel scanning using bitstream addition \cite{cameron-EuroPar2011}, as well as
     778            individual characters <a class="xref" id="idp446176" href="javascript:showcite('cite-CameronHerdyLin2008','idp446176')">Cameron and Herdy 2008</a>. Recent work has incorporated a method
     779            of parallel scanning using bitstream addition <a class="xref" id="idp447040" href="javascript:showcite('cite-cameron-EuroPar2011','idp447040')">Cameron and Amiri 2011</a>, as well as
    816780            combining SIMD methods with 4-stage pipeline parallelism to further improve throughput
    817             \cite{HPCA2012}. Although these research prototypes handled the full syntax of
     781            <a class="xref" id="idp447824" href="javascript:showcite('cite-HPCA2012','idp447824')">Lin and Medforth 2012</a>. Although these research prototypes handled the full syntax of
    818782            schema-less XML documents, they lacked the functionality required by full XML parsers. </p>
    819 <p id="idp434864"> Commercial XML processors support transcoding of multiple character sets and can
     783<p id="idp448768"> Commercial XML processors support transcoding of multiple character sets and can
    820784            parse and validate against multiple document vocabularies. Additionally, they provide
    821785            API facilities beyond those found in research prototypes, including the widely used SAX,
    822786            SAX2 and DOM interfaces. </p>
    823787</div>
    824 <div class="section" id="idp435712">
     788<div class="section" id="idp449616">
    825789<h3 class="title" style="clear: both">Sequential vs. Parallel Paradigm</h3>
    826 <p id="idp436400"> Xerces—like all traditional XML parsers—processes XML documents
     790<p id="idp450304"> Xerces—like all traditional XML parsers—processes XML documents
    827791            sequentially. Each character is examined to distinguish between the XML-specific markup,
    828792            such as a left angle bracket <code class="code">&lt;</code>, and the content held within the
    829793            document. As the parser progresses through the document, it alternates between markup
    830794            scanning, validation and content processing modes. </p>
    831 <p id="idp437968"> In other words, Xerces belongs to an equivalent class applications termed FSM
    832             applications\footnote{ Herein FSM applications are considered software systems whose
    833             behaviour is defined by the inputs, current state and the events associated with
    834             transitions of states.}. Each state transition indicates the processing context of
     795<p id="idp451840"> In other words, Xerces belongs to an equivalence class of applications termed FSM
     796           applications<sup class="fn-label"><a href="#FSM" class="footnoteref">[1]</a></sup>.<sup class="fn-label"><a href="#FSM" class="footnoteref" id="FSM-ref">[1]</a></sup> Each state transition indicates the processing context of
    835797            subsequent characters. Unfortunately, textual data tends to be unpredictable and any
    836798            character could induce a state transition. </p>
    837 <p id="idp438880"> Parabix-style XML parsers utilize a concept of layered processing. A block of source
     799<p id="idp454368"> Parabix-style XML parsers utilize a concept of layered processing. A block of source
    838800            text is transformed into a set of lexical bitstreams, which undergo a series of
    839801            operations that can be grouped into logical layers, e.g., transposition, character
    840802            classification, and lexical analysis. Each layer is pipeline parallel and require
    841             neither speculation nor pre-parsing stages\cite{HPCA2012}. To meet the API requirements
     803            neither speculation nor pre-parsing stages<a class="xref" id="idp455056" href="javascript:showcite('cite-HPCA2012','idp455056')">Lin and Medforth 2012</a>. To meet the API requirements
    842804            of the document-ordered Xerces output, the results of the Parabix processing layers must
    843805            be interleaved to produce the equivalent behaviour. </p>
     
    846808<div class="section" id="architecture">
    847809<h2 class="title" style="clear: both">Architecture</h2>
    848 <div class="section" id="idp441104">
     810<div class="section" id="idp457296">
    849811<h3 class="title" style="clear: both">Overview</h3>
    850 <p id="idp442160"> icXML is more than an optimized version of Xerces. Many components were grouped,
     812<p id="idp458352"> icXML is more than an optimized version of Xerces. Many components were grouped,
    851813            restructured and rearchitected with pipeline parallelism in mind. In this section, we
    852814            highlight the core differences between the two systems. As shown in Figure
     
    874836<p class="title">Figure 1: Xerces Architecture</p>
    875837<div class="figure-contents">
    876 <div class="mediaobject" id="idp450128"><img alt="png image (xerces.png)" src="xerces.png" width="150cm"></div>
     838<div class="mediaobject" id="idp466320"><img alt="png image (xerces.png)" src="xerces.png" width="150cm"></div>
    877839<div class="caption"></div>
    878840</div>
    879841</div>
    880 <p id="idp452496"> In icXML functions are grouped into logical components. As shown in
     842<p id="idp468640"> In icXML functions are grouped into logical components. As shown in
    881843             <a class="xref" href="#xerces-arch" title="Xerces Architecture">Figure 1</a>, two major categories exist: (1) the Parabix Subsystem and (2) the
    882             Markup Processor. All tasks in (1) use the Parabix Framework \cite{HPCA2012}, which
     844               Markup Processor. All tasks in (1) use the Parabix Framework <a class="xref" id="idp469728" href="javascript:showcite('cite-HPCA2012','idp469728')">Lin and Medforth 2012</a>, which
    883845            represents data as a set of parallel bitstreams. The <span class="ital">Character Set
    884846              Adapter</span>, discussed in <a class="xref" href="#character-set-adapter" title="Character Set Adapters">section “Character Set Adapters”</a>, mirrors
     
    897859              described in <a class="xref" href="#errorhandling" title="Error Handling">section “Error Handling”</a>. From here, two data-independent
    898860            branches exist: the Symbol Resolver and Content Preparation Unit. </p>
    899 <p id="idp459328"> A typical XML file contains few unique element and attribute names—but
     861<p id="idp476192"> A typical XML file contains few unique element and attribute names—but
    900862            each of them will occur frequently. icXML stores these as distinct data structures,
    901863            called symbols, each with their own global identifier (GID). Using the symbol marker
     
    903865               Resolver</span> scans through the raw data to produce a sequence of GIDs, called
    904866            the <span class="ital">symbol stream</span>. </p>
    905 <p id="idp461984"> The final components of the Parabix Subsystem are the <span class="ital">Content
     867<p id="idp478848"> The final components of the Parabix Subsystem are the <span class="ital">Content
    906868               Preparation Unit</span> and <span class="ital">Content Stream
    907869            Generator</span>. The former takes the (transposed) basis bitstreams and selectively
    908870            filters them, according to the information provided by the Parallel Markup Parser, and
    909871            the latter transforms the filtered streams into the tagged UTF-16 <span class="ital">content stream</span>, discussed in <a class="xref" href="#contentstream" title="Content Stream">section “Content Stream”</a>. </p>
    910 <p id="idp465584"> Combined, the symbol and content stream form icXML's compressed IR of the XML
     872<p id="idp482448"> Combined, the symbol and content stream form icXML's compressed IR of the XML
    911873            document. The <span class="ital">Markup Processor</span>~parses the IR to
    912874            validate and produce the sequential output for the end user. The <span class="ital">Final WF checker</span> performs inter-element well-formedness validation that
     
    920882<p class="title">Figure 2: icXML Architecture</p>
    921883<div class="figure-contents">
    922 <div class="mediaobject" id="idp472048"><img alt="png image (icxml.png)" src="icxml.png" width="500cm"></div>
     884<div class="mediaobject" id="idp488912"><img alt="png image (icxml.png)" src="icxml.png" width="500cm"></div>
    923885<div class="caption"></div>
    924886</div>
     
    927889<div class="section" id="character-set-adapter">
    928890<h3 class="title" style="clear: both">Character Set Adapters</h3>
    929 <p id="idp475536"> In Xerces, all input is transcoded into UTF-16 to simplify the parsing costs of
     891<p id="idp492400"> In Xerces, all input is transcoded into UTF-16 to simplify the parsing costs of
    930892            Xerces itself and provide the end-consumer with a single encoding format. In the
    931893            important case of UTF-8 to UTF-16 transcoding, the transcoding costs can be significant,
     
    934896            other cases, transcoding may involve table look-up operations for each byte of input. In
    935897            any case, transcoding imposes at least a cost of buffer copying. </p>
    936 <p id="idp476592"> In icXML, however, the concept of Character Set Adapters (CSAs) is used to minimize
     898<p id="idp493456"> In icXML, however, the concept of Character Set Adapters (CSAs) is used to minimize
    937899            transcoding costs. Given a specified input encoding, a CSA is responsible for checking
    938900            that input code units represent valid characters, mapping the characters of the encoding
     
    940902            item streams), as well as supporting ultimate transcoding requirements. All of this work
    941903            is performed using the parallel bitstream representation of the source input. </p>
    942 <p id="idp477568"> An important observation is that many character sets are an extension to the legacy
     904<p id="idp494432"> An important observation is that many character sets are an extension to the legacy
    943905            7-bit ASCII character set. This includes the various ISO Latin character sets, UTF-8,
    944906            UTF-16 and many others. Furthermore, all significant characters for parsing XML are
    945907            confined to the ASCII repertoire. Thus, a single common set of lexical item calculations
    946908            serves to compute lexical item streams for all such ASCII-based character sets. </p>
    947 <p id="idp478448"> A second observation is that—regardless of which character set is
     909<p id="idp33888"> A second observation is that—regardless of which character set is
    948910            used—quite often all of the characters in a particular block of input will be
    949911            within the ASCII range. This is a very simple test to perform using the bitstream
     
    952914            be skipped. Transcoding to UTF-16 becomes trivial as the high eight bitstreams of the
    953915            UTF-16 form are each set to zero in this case. </p>
    954 <p id="idp480160"> A third observation is that repeated transcoding of the names of XML elements,
     916<p id="idp35808"> A third observation is that repeated transcoding of the names of XML elements,
    955917            attributes and so on can be avoided by using a look-up mechanism. That is, the first
    956918            occurrence of each symbol is stored in a look-up table mapping the input encoding to a
     
    959921            symbol look up is required to apply various XML validation rules, there is achieves the
    960922            effect of transcoding each occurrence without additional cost. </p>
    961 <p id="idp481216"> The cost of individual character transcoding is avoided whenever a block of input is
     923<p id="idp36864"> The cost of individual character transcoding is avoided whenever a block of input is
    962924            confined to the ASCII subset and for all but the first occurrence of any XML element or
    963925            attribute name. Furthermore, when transcoding is required, the parallel bitstream
    964926            representation supports efficient transcoding operations. In the important case of UTF-8
    965927            to UTF-16 transcoding, the corresponding UTF-16 bitstreams can be calculated in bit
    966             parallel fashion based on UTF-8 streams \cite{Cameron2008}, and all but the final bytes
     928              parallel fashion based on UTF-8 streams <a class="xref" id="idp37664" href="javascript:showcite('cite-Cameron2008','idp37664')">Cameron 2008</a>, and all but the final bytes
    967929            of multi-byte sequences can be marked for deletion as discussed in the following
    968930            subsection. In other cases, transcoding within a block only need be applied for
     
    972934<div class="section" id="par-filter">
    973935<h3 class="title" style="clear: both">Combined Parallel Filtering</h3>
    974 <p id="idp483728"> As just mentioned, UTF-8 to UTF-16 transcoding involves marking all but the last
     936<p id="idp40016"> As just mentioned, UTF-8 to UTF-16 transcoding involves marking all but the last
    975937            bytes of multi-byte UTF-8 sequences as positions for deletion. For example, the two
    976938            Chinese characters <code class="code">䜠奜</code> are represented as two
     
    985947            input bytes is the bit sequence <code class="code">110110</code>. Using this approach, transcoding
    986948            may then be completed by applying parallel deletion and inverse transposition of the
    987             UTF-16 bitstreams\cite{Cameron2008}. </p>
    988 <p id="idp487856"> Rather than immediately paying the costs of deletion and transposition just for
     949            UTF-16 bitstreams<a class="xref" id="idp513616" href="javascript:showcite('cite-Cameron2008','idp513616')">Cameron 2008</a>. </p>
     950<p id="idp514416"> Rather than immediately paying the costs of deletion and transposition just for
    989951            transcoding, however, icXML defers these steps so that the deletion masks for several
    990952            stages of processing may be combined. In particular, this includes core XML requirements
     
    1001963<div class="figure-contents">
    1002964<div class="caption">Line Break Normalization Logic</div>
    1003 <pre class="programlisting" id="idp491888">
     965<pre class="programlisting" id="idp518368">
    1004966# XML 1.0 line-break normalization rules.
    1005967if lex.CR:
     
    1017979</div>
    1018980         </p>
    1019 <p id="idp493360"> In essence, the deletion masks for transcoding and for line break normalization each
     981<p id="idp519712"> In essence, the deletion masks for transcoding and for line break normalization each
    1020982            represent a bitwise filter; these filters can be combined using bitwise-or so that the
    1021983            parallel deletion algorithm need only be applied once. </p>
    1022 <p id="idp494016"> A further application of combined filtering is the processing of XML character and
     984<p id="idp520368"> A further application of combined filtering is the processing of XML character and
    1023985            entity references. Consider, for example, the references <code class="code">&amp;</code> or
    1024986               <code class="code">&lt;</code>. which must be replaced in XML processing with the single
     
    1033995            UTF-16 code unit. In the case, that this is not true, it is addressed in
    1034996            post-processing. </p>
    1035 <p id="idp498768"> The final step of combined filtering occurs during the process of reducing markup
     997<p id="idp525184"> The final step of combined filtering occurs during the process of reducing markup
    1036998            data to tag bytes preceding each significant XML transition as described in
    1037999              <a class="xref" href="#contentstream" title="Content Stream">section “Content Stream”</a>. Overall, icXML avoids separate buffer copying
    10381000            operations for each of the these filtering steps, paying the cost of parallel deletion
    10391001            and inverse transposition only once. Currently, icXML employs the parallel-prefix
    1040             compress algorithm of Steele~\cite{HackersDelight} Performance is independent of the
     1002            compress algorithm of Steele~<a class="xref" id="idp526608" href="javascript:showcite('cite-HackersDelight','idp526608')">Warren 2002</a> Performance is independent of the
    10411003            number of positions deleted. Future versions of icXML are expected to take advantage of
    1042             the parallel extract operation~\cite{HilewitzLee2006} that Intel is now providing in its
     1004            the parallel extract operation~<a class="xref" id="idp527552" href="javascript:showcite('cite-HilewitzLee2006','idp527552')">Hilewitz and Lee 2006</a> that Intel is now providing in its
    10431005            Haswell architecture. </p>
    10441006</div>
    10451007<div class="section" id="contentstream">
    10461008<h3 class="title" style="clear: both">Content Stream</h3>
    1047 <p id="idp501744"> A relatively-unique concept for icXML is the use of a filtered content stream.
     1009<p id="idp529664"> A relatively-unique concept for icXML is the use of a filtered content stream.
    10481010            Rather that parsing an XML document in its original format, the input is transformed
    10491011            into one that is easier for the parser to iterate through and produce the sequential
     
    10531015           
    10541016            through the parallel filtering algorithm, described in <a class="xref" href="#par-filter" title="Combined Parallel Filtering">section “Combined Parallel Filtering”</a>. </p>
    1055 <p id="idp504928"> Combined with the symbol stream, the parser traverses the content stream to
     1017<p id="idp532848"> Combined with the symbol stream, the parser traverses the content stream to
    10561018            effectively reconstructs the input document in its output form. The initial <span class="ital">0</span> indicates an empty content string. The following
    10571019               <code class="code">&gt;</code> indicates that a start tag without any attributes is the first
     
    10651027            null character in the content stream in parallel, which in turn means the parser can
    10661028            directly jump to the end of every string without scanning for it. </p>
    1067 <p id="idp509008"> Following <code class="code">'fee'</code> is a <code class="code">=</code>, which marks the
     1029<p id="idp536896"> Following <code class="code">'fee'</code> is a <code class="code">=</code>, which marks the
    10681030            existence of an attribute. Because all of the intra-element was performed in the Parabix
    10691031            Subsystem, this must be a legal attribute. Since attributes can only occur within start
     
    10811043<div class="section" id="namespace-handling">
    10821044<h3 class="title" style="clear: both">Namespace Handling</h3>
    1083 <p id="idp514576"> In XML, namespaces prevents naming conflicts when multiple vocabularies are used
     1045<p id="idp542464"> In XML, namespaces prevents naming conflicts when multiple vocabularies are used
    10841046            together. It is especially important when a vocabulary application-dependant meaning,
    10851047            such as when XML or SVG documents are embedded within XHTML files. Namespaces are bound
     
    11001062<div class="table-wrapper" id="namespace-ex">
    11011063<p class="title">Table V</p>
    1102 <div class="caption"><p id="idp523360">XML Namespace Example</p></div>
     1064<div class="caption"><p id="idp551200">XML Namespace Example</p></div>
    11031065<table class="table" xml:id="namespace-ex">
    11041066<colgroup span="1">
     
    11341096</table>
    11351097</div>
    1136 <p id="idp532304"> In both Xerces and icXML, every URI has a one-to-one mapping to a URI ID. These
     1098<p id="idp560096"> In both Xerces and icXML, every URI has a one-to-one mapping to a URI ID. These
    11371099            persist for the lifetime of the application through the use of a global URI pool. Xerces
    11381100            maintains a stack of namespace scopes that is pushed (popped) every time a start tag
     
    11421104            those that declare a set of namespaces upfront and never change them, and (2) those that
    11431105            repeatedly modify the namespaces in predictable patterns. </p>
    1144 <p id="idp533440"> For that reason, icXML contains an independent namespace stack and utilizes bit
     1106<p id="idp561232"> For that reason, icXML contains an independent namespace stack and utilizes bit
    11451107            vectors to cheaply perform
    11461108             When a prefix is
     
    11581120<div class="table-wrapper" id="namespace-binding">
    11591121<p class="title">Table VI</p>
    1160 <div class="caption"><p id="idp540032">Namespace Binding Table Example</p></div>
     1122<div class="caption"><p id="idp567856">Namespace Binding Table Example</p></div>
    11611123<table class="table" xml:id="namespace-binding">
    11621124<colgroup span="1">
     
    11991161</table>
    12001162</div>
    1201 <p id="idp556448">
     1163<p id="idp584128">
    12021164           
    12031165           
     
    12051167           
    12061168         </p>
    1207 <p id="idp558352"> To ensure that scoping rules are adhered to, whenever a start tag is encountered,
     1169<p id="idp586032"> To ensure that scoping rules are adhered to, whenever a start tag is encountered,
    12081170            any modification to the currently visible namespaces is calculated and stored within a
    12091171            stack of bit vectors denoting the locally modified namespace bindings. When an end tag
     
    12161178<div class="section" id="errorhandling">
    12171179<h3 class="title" style="clear: both">Error Handling</h3>
    1218 <p id="idp560784">
     1180<p id="idp588464">
    12191181           
    12201182            Xerces outputs error messages in two ways: through the programmer API and as thrown
     
    12251187            <a class="xref" href="#icxml-arch" title="icXML Architecture">Figure 2</a>, icXML is divided into two sections: the Parabix Subsystem and
    12261188            Markup Processor, each with its own system for detecting and producing error messages. </p>
    1227 <p id="idp563280"> Within the Parabix Subsystem, all computations are performed in parallel, a block at
     1189<p id="idp590960"> Within the Parabix Subsystem, all computations are performed in parallel, a block at
    12281190            a time. Errors are derived as artifacts of bitstream calculations, with a 1-bit marking
    12291191            the byte-position of an error within a block, and the type of error is determined by the
     
    12581220            detected, the sum of those skipped positions is subtracted from the distance to
    12591221            determine the actual column number. </p>
    1260 <p id="idp568800"> The Markup Processor is a state-driven machine. As such, error detection within it
     1222<p id="idp596480"> The Markup Processor is a state-driven machine. As such, error detection within it
    12611223            is very similar to Xerces. However, reporting the correct line/column is a much more
    12621224            difficult problem. The Markup Processor parses the content stream, which is a series of
     
    12741236<div class="section" id="multithread">
    12751237<h2 class="title" style="clear: both">Multithreading with Pipeline Parallelism</h2>
    1276 <p id="idp572336"> As discussed in section <a class="xref" href="#background-xerces" title="Xerces C++ Structure">section “Xerces C++ Structure”</a>, Xerces can be considered a FSM
     1238<p id="idp600016"> As discussed in section <a class="xref" href="#background-xerces" title="Xerces C++ Structure">section “Xerces C++ Structure”</a>, Xerces can be considered a FSM
    12771239         application. These are "embarrassingly
    1278          sequential."\cite{Asanovic:EECS-2006-183} and notoriously difficult to
     1240         sequential."<a class="xref" id="idp601168" href="javascript:showcite('cite-Asanovic-EECS-2006-183','idp601168')">Asanovic and others 2006</a> and notoriously difficult to
    12791241         parallelize. However, icXML is designed to organize processing into logical layers. In
    12801242         particular, layers within the Parabix Subsystem are designed to operate over significant
     
    12821244         well into the general model of pipeline parallelism, in which each thread is in charge of a
    12831245         single module or group of modules. </p>
    1284 <p id="idp574752"> The most straightforward division of work in icXML is to separate the Parabix Subsystem
     1246<p id="idp602528"> The most straightforward division of work in icXML is to separate the Parabix Subsystem
    12851247         and the Markup Processor into distinct logical layers into two separate stages. The
    12861248         resultant application, <span class="ital">icXML-p</span>, is a course-grained
     
    13031265            <code class="code">T<sub>2</sub></code> to finish reading the shared data before it can
    13041266         reuse the memory space. </p>
    1305 <p id="idp585824">
     1267<p id="idp613648">
    13061268        <div class="figure" id="threads_timeline1">
    13071269<p class="title">Figure 4: Thread Balance in Two-Stage Pipelines: Stage 1 Dominant</p>
    1308 <div class="figure-contents"><div class="mediaobject" id="idp587152"><img alt="png image (threads_timeline1.png)" src="threads_timeline1.png" width="500cm"></div></div>
     1270<div class="figure-contents"><div class="mediaobject" id="idp615024"><img alt="png image (threads_timeline1.png)" src="threads_timeline1.png" width="500cm"></div></div>
    13091271</div>
    13101272        <div class="figure" id="threads_timeline2">
    13111273<p class="title">Figure 5: Thread Balance in Two-Stage Pipelines: Stage 2 Dominant</p>
    1312 <div class="figure-contents"><div class="mediaobject" id="idp590160"><img alt="png image (threads_timeline2.png)" src="threads_timeline2.png" width="500cm"></div></div>
     1274<div class="figure-contents"><div class="mediaobject" id="idp618080"><img alt="png image (threads_timeline2.png)" src="threads_timeline2.png" width="500cm"></div></div>
    13131275</div>
    13141276      </p>
    1315 <p id="idp592192"> Overall, our design is intended to benefit a range of applications. Conceptually, we
     1277<p id="idp620112"> Overall, our design is intended to benefit a range of applications. Conceptually, we
    13161278         consider two design points. The first, the parsing performed by the Parabix Subsystem
    13171279         dominates at 67% of the overall cost, with the cost of application processing (including
     
    13191281         scenario, the cost of application processing dominates at 60%, while the cost of XML
    13201282         parsing represents an overhead of 40%. </p>
    1321 <p id="idp593104"> Our design is predicated on a goal of using the Parabix framework to achieve a 50% to
     1283<p id="idp621024"> Our design is predicated on a goal of using the Parabix framework to achieve a 50% to
    13221284         100% improvement in the parsing engine itself. In a best case scenario, a 100% improvement
    13231285         of the Parabix Subsystem for the design point in which XML parsing dominates at 67% of the
     
    13271289         about 33% of the original work. In this case, Amdahl's law predicts that we could expect up
    13281290         to a 3x speedup at best. </p>
    1329 <p id="idp594224"> At the other extreme of our design range, we consider an application in which core
     1291<p id="idp622144"> At the other extreme of our design range, we consider an application in which core
    13301292         parsing cost is 40%. Assuming the 2x speedup of the Parabix Subsystem over the
    13311293         corresponding Xerces core, single-threaded icXML delivers a 25% speedup. However, the most
     
    13331295         the entire latency of parsing within the serial time required by the application. In this
    13341296         case, we achieve an overall speedup in processing time by 1.67x. </p>
    1335 <p id="idp595168"> Although the structure of the Parabix Subsystem allows division of the work into
     1297<p id="idp623088"> Although the structure of the Parabix Subsystem allows division of the work into
    13361298         several pipeline stages and has been demonstrated to be effective for four pipeline stages
    1337          in a research prototype \cite{HPCA2012}, our analysis here suggests that the further
     1299         in a research prototype <a class="xref" id="idp623568" href="javascript:showcite('cite-HPCA2012','idp623568')">Lin and Medforth 2012</a>, our analysis here suggests that the further
    13381300         pipelining of work within the Parabix Subsystem is not worthwhile if the cost of
    13391301         application logic is little as 33% of the end-to-end cost using Xerces. To achieve benefits
     
    13431305<div class="section" id="performance">
    13441306<h2 class="title" style="clear: both">Performance</h2>
    1345 <p id="idp598112"> We evaluate Xerces-C++ 3.1.1, icXML, icXML-p against two benchmarking applications: the
     1307<p id="idp625952"> We evaluate Xerces-C++ 3.1.1, icXML, icXML-p against two benchmarking applications: the
    13461308         Xerces C++ SAXCount sample application, and a real world GML to SVG transformation
    13471309         application. We investigated XML parser performance using an Intel Core i7 quad-core (Sandy
     
    13491311         L1 cache, 256 kB (per core) L2 cache, 8 MB L3 cache) running the 64-bit version of Ubuntu
    13501312         12.04 (Linux). </p>
    1351 <p id="idp599024"> We analyzed the execution profiles of each XML parser using the performance counters
     1313<p id="idp626864"> We analyzed the execution profiles of each XML parser using the performance counters
    13521314         found in the processor. We chose several key hardware events that provide insight into the
    13531315         profile of each application and indicate if the processor is doing useful work. The set of
    13541316         events included in our study are: processor cycles, branch instructions, branch
    13551317         mispredictions, and cache misses. The Performance Application Programming Interface (PAPI)
    1356          Version 5.5.0 \cite{papi} toolkit was installed on the test system to facilitate the
     1318         Version 5.5.0 <a class="xref" id="idp627632" href="javascript:showcite('cite-papi','idp627632')">Innovative Computing Laboratory</a> toolkit was installed on the test system to facilitate the
    13571319         collection of hardware performance monitoring statistics. In addition, we used the Linux
    1358          perf \cite{perf} utility to collect per core hardware events. </p>
    1359 <div class="section" id="idp600160">
     1320         perf <a class="xref" id="idp628672" href="javascript:showcite('cite-perf','idp628672')">Eranian and Gouriou</a> utility to collect per core hardware events. </p>
     1321<div class="section" id="idp629568">
    13601322<h3 class="title" style="clear: both">Xerces C++ SAXCount</h3>
    1361 <p id="idp600832"> Xerces comes with sample applications that demonstrate salient features of the
     1323<p id="idp630208"> Xerces comes with sample applications that demonstrate salient features of the
    13621324            parser. SAXCount is the simplest such application: it counts the elements, attributes
    13631325            and characters of a given XML file using the (event based) SAX API and prints out the
    13641326            totals. </p>
    1365 <p id="idp601536"> <a class="xref" href="#XMLdocs">Table VII</a> shows the document characteristics of the XML input files
     1327<p id="idp630912"> <a class="xref" href="#XMLdocs">Table VII</a> shows the document characteristics of the XML input files
    13661328            selected for the Xerces C++ SAXCount benchmark. The jaw.xml represents document-oriented
    13671329            XML inputs and contains the three-byte and four-byte UTF-8 sequence required for the
     
    13701332  <div class="table-wrapper" id="XMLdocs">
    13711333<p class="title">Table VII</p>
    1372 <div class="caption"><p id="idp603872">XML Document Characteristics</p></div>
     1334<div class="caption"><p id="idp633248">XML Document Characteristics</p></div>
    13731335<table class="table" xml:id="XMLdocs">
    13741336<colgroup span="1">
     
    14191381</div>           
    14201382</p>
    1421 <p id="idp619472"> A key predictor of the overall parsing performance of an XML file is markup
    1422             density\footnote{ Markup Density: the ratio of markup bytes used to define the structure
    1423             of the document vs. its file size.}. This metric has substantial influence on the
     1383<p id="idp648752"> A key predictor of the overall parsing performance of an XML file is markup
     1384           density<sup class="fn-label"><a href="#idp649120" class="footnoteref" id="idp649120-ref">[2]</a></sup>. This metric has substantial influence on the
    14241385            performance of traditional recursive descent XML parsers because it directly corresponds
    14251386            to the number of state transitions that occur when parsing a document. We use a mixture
    14261387            of document-oriented and data-oriented XML files to analyze performance over a spectrum
    14271388            of markup densities. </p>
    1428 <p id="idp621088"> <a class="xref" href="#perf_SAX" title="SAXCount Performance Comparison">Figure 6</a> compares the performance of Xerces, icXML and pipelined icXML
     1389<p id="idp650288"> <a class="xref" href="#perf_SAX" title="SAXCount Performance Comparison">Figure 6</a> compares the performance of Xerces, icXML and pipelined icXML
    14291390            in terms of CPU cycles per byte for the SAXCount application. The speedup for icXML over
    14301391            Xerces is 1.3x to 1.8x. With two threads on the multicore machine, icXML-p can achieve
     
    14331394            icXML-p performs better as markup-density increases because the work performed by each
    14341395            stage is well balanced in this application. </p>
    1435 <p id="idp622832">
     1396<p id="idp652032">
    14361397        <div class="figure" id="perf_SAX">
    14371398<p class="title">Figure 6: SAXCount Performance Comparison</p>
    14381399<div class="figure-contents">
    1439 <div class="mediaobject" id="idp624144"><img alt="png image (perf_SAX.png)" src="perf_SAX.png" width="500cm"></div>
     1400<div class="mediaobject" id="idp653344"><img alt="png image (perf_SAX.png)" src="perf_SAX.png" width="500cm"></div>
    14401401<div class="caption"></div>
    14411402</div>
     
    14431404         </p>
    14441405</div>
    1445 <div class="section" id="idp626688">
     1406<div class="section" id="idp655888">
    14461407<h3 class="title" style="clear: both">GML2SVG</h3>
    1447 <p id="idp627360">       As a more substantial application of XML processing, the GML-to-SVG (GML2SVG) application
     1408<p id="idp656560">       As a more substantial application of XML processing, the GML-to-SVG (GML2SVG) application
    14481409was chosen.   This application transforms geospatially encoded data represented using
    1449 an XML representation in the form of Geography Markup Language (GML) \cite{lake2004geography}
     1410an XML representation in the form of Geography Markup Language (GML) <a class="xref" id="idp657088" href="javascript:showcite('cite-lake2004geography','idp657088')">Lake and Burggraf 2004</a>
    14501411into a different XML format  suitable for displayable maps:
    1451 Scalable Vector Graphics (SVG) format\cite{lu2007advances}. In the GML2SVG benchmark, GML feature elements
     1412Scalable Vector Graphics (SVG) format<a class="xref" id="idp657936" href="javascript:showcite('cite-lu2007advances','idp657936')">Lu and Dos Santos 2007</a>. In the GML2SVG benchmark, GML feature elements
    14521413and GML geometry elements tags are matched. GML coordinate data are then extracted
    14531414and transformed to the corresponding SVG path data encodings.
     
    14571418a known XML format for the purpose of analysis and restructuring to meet
    14581419the requirements of an alternative format.</p>
    1459 <p id="idp628688">Our GML to SVG data translations are executed on GML source data
     1420<p id="idp659424">Our GML to SVG data translations are executed on GML source data
    14601421modelling the city of Vancouver, British Columbia, Canada.
    14611422The GML source document set
     
    14671428<p class="title">Figure 7: Performance Comparison for GML2SVG</p>
    14681429<div class="figure-contents">
    1469 <div class="mediaobject" id="idp630672"><img alt="png image (Throughput.png)" src="Throughput.png" width="500cm"></div>
     1430<div class="mediaobject" id="idp661424"><img alt="png image (Throughput.png)" src="Throughput.png" width="500cm"></div>
    14701431<div class="caption"></div>
    14711432</div>
    14721433</div>
    1473 <p id="idp632960"><a class="xref" href="#perf_GML2SVG" title="Performance Comparison for GML2SVG">Figure 7</a> compares the performance of the GML2SVG application linked against
     1434<p id="idp663760"><a class="xref" href="#perf_GML2SVG" title="Performance Comparison for GML2SVG">Figure 7</a> compares the performance of the GML2SVG application linked against
    14741435the Xerces, icXML and icXML-p.   
    14751436On the GML workload with this application, single-thread icXML
     
    14781439Using icXML-p, a further throughput increase to 111 MB/sec was recorded,
    14791440approximately a 2X speedup.</p>
    1480 <p id="idp634368">An important aspect of icXML is the replacement of much branch-laden
     1441<p id="idp665168">An important aspect of icXML is the replacement of much branch-laden
    14811442sequential code inside Xerces with straight-line SIMD code using far
    14821443fewer branches.  <a class="xref" href="#branchmiss_GML2SVG" title="Comparative Branch Misprediction Rate">Figure 8</a> shows the corresponding
     
    14891450<p class="title">Figure 8: Comparative Branch Misprediction Rate</p>
    14901451<div class="figure-contents">
    1491 <div class="mediaobject" id="idp637104"><img alt="png image (BM.png)" src="BM.png" width="500cm"></div>
     1452<div class="mediaobject" id="idp667952"><img alt="png image (BM.png)" src="BM.png" width="500cm"></div>
    14921453<div class="caption"></div>
    14931454</div>
    14941455</div>
    1495 <p id="idp639392">The behaviour of the three versions with respect to L1 cache misses per kB is shown
     1456<p id="idp670240">The behaviour of the three versions with respect to L1 cache misses per kB is shown
    14961457in <a class="xref" href="#cachemiss_GML2SVG" title="Comparative Cache Miss Rate">Figure 9</a>.   Improvements are shown in both instruction-
    14971458and data-cache performance with the improvements in instruction-cache
     
    15051466<p class="title">Figure 9: Comparative Cache Miss Rate</p>
    15061467<div class="figure-contents">
    1507 <div class="mediaobject" id="idp642192"><img alt="png image (CM.png)" src="CM.png" width="500cm"></div>
     1468<div class="mediaobject" id="idp673040"><img alt="png image (CM.png)" src="CM.png" width="500cm"></div>
    15081469<div class="caption"></div>
    15091470</div>
    15101471</div>
    1511 <p id="idp644480">One caveat with this study is that the GML2SVG application did not exhibit
     1472<p id="idp675328">One caveat with this study is that the GML2SVG application did not exhibit
    15121473a relative balance of processing between application code and Xerces library
    15131474code reaching the 33% figure.  This suggests that for this application and
     
    15191480<div class="section" id="conclusion">
    15201481<h2 class="title" style="clear: both">Conclusion and Future Work</h2>
    1521 <p id="idp646640"> This paper is the first case study documenting the significant performance benefits
     1482<p id="idp677488"> This paper is the first case study documenting the significant performance benefits
    15221483         that may be realized through the integration of parallel bitstream technology into existing
    15231484         widely-used software libraries. In the case of the Xerces-C++ XML parser, the combined
     
    15291490         technologies, this is an important case study demonstrating the general feasibility of
    15301491         these techniques. </p>
    1531 <p id="idp647920"> The further development of icXML to move beyond 2-stage pipeline parallelism is
     1492<p id="idp678768"> The further development of icXML to move beyond 2-stage pipeline parallelism is
    15321493         ongoing, with realistic prospects for four reasonably balanced stages within the library.
    15331494         For applications such as GML2SVG which are dominated by time spent on XML parsing, such a
    15341495         multistage pipelined parsing library should offer substantial benefits. </p>
    1535 <p id="idp648688"> The example of XML parsing may be considered prototypical of finite-state machines
     1496<p id="idp679536"> The example of XML parsing may be considered prototypical of finite-state machines
    15361497         applications which have sometimes been considered "embarassingly
    15371498         sequential" and so difficult to parallelize that "nothing
     
    15391500         point in making the case that parallelization can indeed be helpful across a broad array of
    15401501         application types. </p>
    1541 <p id="idp650064"> To overcome the software engineering challenges in applying parallel bitstream
     1502<p id="idp680912"> To overcome the software engineering challenges in applying parallel bitstream
    15421503         technology to existing software systems, it is clear that better library and tool support
    15431504         is needed. The techniques used in the implementation of icXML and documented in this paper
     
    15461507      </p>
    15471508</div>
    1548 <div class="bibliography" id="idp652000">
     1509<div class="bibliography" id="idp682528">
    15491510<h2 class="title" style="clear:both">Bibliography</h2>
    1550 <p class="bibliomixed" id="XMLChip09">[Leventhal and Lemoine 2009] Leventhal, Michael and
    1551          Eric Lemoine 2009. The XML chip at 6 years. Proceedings of International Symposium on
    1552          Processing XML Efficiently 2009, Montréal.</p>
    1553 <p class="bibliomixed" id="Datapower09">[Salz, Achilles and Maze 2009] Salz, Richard,
    1554          Heather Achilles, and David Maze. 2009. Hardware and software trade-offs in the IBM
    1555          DataPower XML XG4 processor card. Proceedings of International Symposium on Processing XML
    1556          Efficiently 2009, Montréal.</p>
    1557 <p class="bibliomixed" id="PPoPP08">[Cameron 2007] Cameron, Robert D. 2007. A Case Study
    1558          in SIMD Text Processing with Parallel Bit Streams UTF-8 to UTF-16 Transcoding. Proceedings
    1559          of 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming 2008, Salt
    1560          Lake City, Utah. On the Web at <a href="http://research.ihost.com/ppopp08/" class="link" target="_new">http://research.ihost.com/ppopp08/</a>.</p>
    1561 <p class="bibliomixed" id="CASCON08">[Cameron, Herdy and Lin 2008] Cameron, Robert D.,
    1562          Kenneth S Herdy, and Dan Lin. 2008. High Performance XML Parsing Using Parallel Bit Stream
    1563          Technology. Proceedings of CASCON 2008. 13th ACM SIGPLAN Symposium on Principles and
    1564          Practice of Parallel Programming 2008, Toronto.</p>
    1565 <p class="bibliomixed" id="SVGOpen08">[Herdy, Burggraf and Cameron 2008] Herdy, Kenneth
    1566          S., Robert D. Cameron and David S. Burggraf. 2008. High Performance GML to SVG
    1567          Transformation for the Visual Presentation of Geographic Data in Web-Based Mapping Systems.
    1568          Proceedings of SVG Open 6th International Conference on Scalable Vector Graphics,
    1569          Nuremburg. On the Web at
    1570             <a href="http://www.svgopen.org/2008/papers/74-HighPerformance_GML_to_SVG_Transformation_for_the_Visual_Presentation_of_Geographic_Data_in_WebBased_Mapping_Systems/" class="link" target="_new">http://www.svgopen.org/2008/papers/74-HighPerformance_GML_to_SVG_Transformation_for_the_Visual_Presentation_of_Geographic_Data_in_WebBased_Mapping_Systems/</a>.</p>
    1571 <p class="bibliomixed" id="Ross06">[Ross 2006] Ross, Kenneth A. 2006. Efficient hash
    1572          probes on modern processors. Proceedings of ICDE, 2006. ICDE 2006, Atlanta. On the Web at
    1573             <a href="www.cs.columbia.edu/~kar/pubsk/icde2007.pdf" class="link" target="_new">www.cs.columbia.edu/~kar/pubsk/icde2007.pdf</a>.</p>
    1574 <p class="bibliomixed" id="ASPLOS09">[Cameron and Lin 2009] Cameron, Robert D. and Dan
    1575          Lin. 2009. Architectural Support for SWAR Text Processing with Parallel Bit Streams: The
    1576          Inductive Doubling Principle. Proceedings of ASPLOS 2009, Washington, DC.</p>
    1577 <p class="bibliomixed" id="Wu08">[Wu et al. 2008] Wu, Yu, Qi Zhang, Zhiqiang Yu and
    1578          Jianhui Li. 2008. A Hybrid Parallel Processing for XML Parsing and Schema Validation.
    1579          Proceedings of Balisage 2008, Montréal. On the Web at
    1580             <a href="http://www.balisage.net/Proceedings/vol1/html/Wu01/BalisageVol1-Wu01.html" class="link" target="_new">http://www.balisage.net/Proceedings/vol1/html/Wu01/BalisageVol1-Wu01.html</a>.</p>
    1581 <p class="bibliomixed" id="u8u16">[Cameron 2008] u8u16 - A High-Speed UTF-8 to UTF-16
    1582          Transcoder Using Parallel Bit Streams Technical Report 2007-18. 2007. School of Computing
    1583          Science Simon Fraser University, June 21 2007.</p>
    1584 <p class="bibliomixed" id="XML10">[XML 1.0] Extensible Markup Language (XML) 1.0 (Fifth
    1585          Edition) W3C Recommendation 26 November 2008. On the Web at
    1586             <a href="http://www.w3.org/TR/REC-xml/" class="link" target="_new">http://www.w3.org/TR/REC-xml/</a>.</p>
    1587 <p class="bibliomixed" id="Unicode">[Unicode] The Unicode Consortium. 2009. On the Web at
    1588             <a href="http://unicode.org/" class="link" target="_new">http://unicode.org/</a>.</p>
    1589 <p class="bibliomixed" id="Pex06">[Hilewitz and Lee 2006]  Hilewitz, Y. and Ruby B. Lee.
    1590          2006. Fast Bit Compression and Expansion with Parallel Extract and Parallel Deposit
    1591          Instructions. Proceedings of the IEEE 17th International Conference on Application-Specific
    1592          Systems, Architectures and Processors (ASAP), pp. 65-72, September 11-13, 2006.</p>
    1593 <p class="bibliomixed" id="InfoSet">[XML Infoset] XML Information Set (Second Edition) W3C
    1594          Recommendation 4 February 2004. On the Web at
    1595          <a href="http://www.w3.org/TR/xml-infoset/" class="link" target="_new">http://www.w3.org/TR/xml-infoset/</a>.</p>
    1596 <p class="bibliomixed" id="Saxon">[Saxon] SAXON The XSLT and XQuery Processor. On the Web
    1597          at <a href="http://saxon.sourceforge.net/" class="link" target="_new">http://saxon.sourceforge.net/</a>.</p>
    1598 <p class="bibliomixed" id="Kay08">[Kay 2008]  Kay, Michael Y. 2008. Ten Reasons Why Saxon
    1599          XQuery is Fast, IEEE Data Engineering Bulletin, December 2008.</p>
    1600 <p class="bibliomixed" id="AElfred">[Ælfred]  The Ælfred XML Parser. On the Web at
    1601             <a href="http://saxon.sourceforge.net/aelfred.html" class="link" target="_new">http://saxon.sourceforge.net/aelfred.html</a>.</p>
    1602 <p class="bibliomixed" id="JNI">[Hitchens 2002] Hitchens, Ron. Java NIO. O'Reilly, 2002.</p>
    1603 <p class="bibliomixed" id="Expat">[Expat] The Expat XML Parser.
    1604             <a href="http://expat.sourceforge.net/" class="link" target="_new">http://expat.sourceforge.net/</a>.</p>
    1605 </div>
    1606 </div>
     1511<p class="bibliomixed" id="CameronHerdyLin2008"><a href="#idp446176">[Cameron and Herdy 2008] </a>Cameron, Robert D., Herdy, Kenneth S. and Lin, Dan. High performance XML parsing using parallel bit stream technology. CASCON'08: Proc. 2008 conference of the center for advanced studies on collaborative research. 2008 New York, NY, USA</p>
     1512<p class="bibliomixed" id="papi"><a href="#idp627632">[Innovative Computing Laboratory] </a>Innovative Computing Laboratory, University of Texas. Performance Application Programming Interface.<a href="http://icl.cs.utk.edu/papi/" class="link" target="_new">http://icl.cs.utk.edu/papi/</a></p>
     1513<p class="bibliomixed" id="perf"><a href="#idp628672">[Eranian and Gouriou] </a>Eranian, Stephane, Gouriou, Eric, Moseley, Tipp and Bruijn, Willem de. Linux kernel profiling with perf.<a href="https://perf.wiki.kernel.org/index.php/Tutorial" class="link" target="_new">https://perf.wiki.kernel.org/index.php/Tutorial</a></p>
     1514<p class="bibliomixed" id="Cameron2008"><a href="#idp445264">[Cameron 2008] </a>Cameron, Robert D.. A case study in SIMD text processing with parallel bit streams: UTF-8 to UTF-16 transcoding. Proc. 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 2008 New York, NY, USA</p>
     1515<p class="bibliomixed" id="ParaDOM2009"><a href="#idp296880">[Shah and Rao 2009] </a>Shah, Bhavik, Rao, Praveen, Moon, Bongki and Rajagopalan, Mohan. A Data Parallel Algorithm for XML DOM Parsing. Database and XML Technologies. 2009</p>
     1516<p class="bibliomixed" id="XMLSSE42"><a href="#idp300032">[Lei 2008] </a>Lei, Zhai. XML Parsing Accelerator with Intel Streaming SIMD Extensions 4 (Intel SSE4). 2008<a href="Intel%20Software%20Network" class="link" target="_new">Intel Software Network</a></p>
     1517<p class="bibliomixed" id="Cameron2009"><a href="#idp300944">[Cameron and Herdy 2009] </a>Cameron, Rob, Herdy, Ken and Amiri, Ehsan Amiri. Parallel Bit Stream Technology as a Foundation for XML Parsing Performance. Int'l Symposium on Processing XML Efficiently: Overcoming Limits on Space, Time, or Bandwidth. 2009</p>
     1518<p class="bibliomixed" id="HilewitzLee2006"><a href="#idp527552">[Hilewitz and Lee 2006] </a>Hilewitz, Yedidya and Lee, Ruby B.. Fast Bit Compression and Expansion with Parallel Extract and Parallel Deposit Instructions. ASAP '06: Proc. IEEE 17th Int'l Conference on Application-specific Systems, Architectures and Processors. 2006 Washington, DC, USA</p>
     1519<p class="bibliomixed" id="Asanovic-EECS-2006-183"><a href="#idp601168">[Asanovic and others 2006] </a>Asanovic, Krste and others. The Landscape of Parallel Computing Research: A View from Berkeley. 2006</p>
     1520<p class="bibliomixed" id="GRID2006"><a href="#idp281568">[Lu and Chiu 2006] </a>Lu, Wei, Chiu, Kenneth and Pan, Yinfei. A Parallel Approach to XML Parsing. Proceedings of the 7th IEEE/ACM International Conference on Grid Computing. 2006 Washington, DC, USA</p>
     1521<p class="bibliomixed" id="cameron-EuroPar2011"><a href="#idp301696">[Cameron and Amiri 2011] </a>Cameron, Robert D., Amiri, Ehsan, Herdy, Kenneth S., Lin, Dan, Shermer, Thomas C. and Popowich, Fred P.. Parallel Scanning with Bitstream Addition: An XML Case Study. Euro-Par 2011, LNCS 6853, Part II. 2011 Berlin, Heidelberg</p>
     1522<p class="bibliomixed" id="HPCA2012"><a href="#idp299088">[Lin and Medforth 2012] </a>Lin, Dan, Medforth, Nigel, Herdy, Kenneth S., Shriraman, Arrvindh and Cameron, Rob. Parabix: Boosting the efficiency of text processing on commodity processors. International Symposium on High-Performance Computer Architecture. 2012 Los Alamitos, CA, USA</p>
     1523<p class="bibliomixed" id="HPCC2011"><a href="#idp296048">[You and Wang 2011] </a>You, Cheng-Han and Wang, Sheng-De. A Data Parallel Approach to XML Parsing and Query. 10th IEEE International Conference on High Performance Computing and Communications. 2011 Los Alamitos, CA, USA</p>
     1524<p class="bibliomixed" id="E-SCIENCE2007"><a href="#idp294480">[Pan and Zhang 2007] </a>Pan, Yinfei, Zhang, Ying, Chiu, Kenneth and Lu, Wei. Parallel XML Parsing Using Meta-DFAs. International Conference on e-Science and Grid Computing. 2007 Los Alamitos, CA, USA</p>
     1525<p class="bibliomixed" id="ICWS2008"><a href="#idp297744">[Pan and Zhang 2008] </a>Pan, Yinfei, Zhang, Ying and Chiu, Kenneth. Hybrid Parallelism for XML SAX Parsing. IEEE International Conference on Web Services. 2008 Los Alamitos, CA, USA</p>
     1526<p class="bibliomixed" id="IPDPS2008"><a href="#idp295232">[Pan and Zhang 2008] </a>Pan, Yinfei, Zhang, Ying and Chiu, Kenneth. Simultaneous transducers for data-parallel XML parsing. International Parallel and Distributed Processing Symposium. 2008 Los Alamitos, CA, USA</p>
     1527<p class="bibliomixed" id="HackersDelight"><a href="#idp526608">[Warren 2002] </a>Warren, Henry S.. Hacker's Delight. 2002</p>
     1528<p class="bibliomixed" id="lu2007advances"><a href="#idp657936">[Lu and Dos Santos 2007] </a>Lu, C.T., Dos Santos, R.F., Sripada, L.N. and Kou, Y.. Advances in GML for geospatial applications. 2007</p>
     1529<p class="bibliomixed" id="lake2004geography"><a href="#idp657088">[Lake and Burggraf 2004] </a>Lake, R., Burggraf, D.S., Trninic, M. and Rae, L.. Geography mark-up language (GML) [foundation for the geo-web]. 2004</p>
     1530</div>
     1531<div class="footnotes">
     1532<br><hr width="100" align="left">
     1533<div id="FSM" class="footnote"><p><sup class="fn-label"><a href="#FSM-ref" class="footnoteref">[1]</a></sup> Herein FSM applications are considered software systems whose
     1534            behaviour is defined by the inputs, current state and the events associated with
     1535              transitions of states.</p></div>
     1536<div id="idp649120" class="footnote"><p><sup class="fn-label"><a href="#idp649120-ref" class="footnoteref">[2]</a></sup> Markup Density: the ratio of markup bytes used to define the structure
     1537             of the document vs. its file size.</p></div>
     1538</div>
     1539</div>
     1540<div id="balisage-footer"><h3 style="font-family: serif; margin:0.25em; font-style: italic">Balisage Series on Markup Technologies</h3></div>
     1541</div>
     1542</body>
     1543</html>
    16071544<div id="balisage-footer"><h3 style="font-family: serif; margin:0.25em">
    16081545<i>Balisage:</i> <small>The Markup Conference</small>
  • docs/Balisage13/Bal2013came0601/Bal2013came0601.xml

    r3059 r3060  
    267267            facilitate this, the input data is first transposed into a set of basis bit streams.
    268268              For example, <xref linkend="xml-bytes"/> shows  the ASCII bytes for the string "<code>b7&lt;A</code>" with
    269                 the corresponding  8 basis bit streams, b<subscript>0</subscript> through  b<subscript>7</subscript> shown in  <xref linkend="xml-bits"/>.
    270 -->
    271             <!-- The bits used to construct $\tt <subscript>7</subscript>$ have been highlighted in this example. -->
    272               Boolean-logic operations<footnote>&#8743;, \&#8744; and &#172; denote the
    273               boolean AND, OR and NOT operators.</footnote> are used to classify the input bits into a set of
     269                the corresponding  8 basis bit streams, b<subscript>0</subscript> through  b<subscript>7</subscript> shown in  <xref linkend="xml-bits"/>.
     270            The bits used to construct b<subscript>7</subscript> have been highlighted in this example.
     271              Boolean-logic operations (&#8743;, \&#8744; and &#172; denote the
     272              boolean AND, OR and NOT operators) are used to classify the input bits into a set of
    274273               <emphasis role="ital">character-class bit streams</emphasis>, which identify key
    275274            characters (or groups of characters) with a <code>1</code>. For example, one of the
     
    399398            document. As the parser progresses through the document, it alternates between markup
    400399            scanning, validation and content processing modes. </para>
    401          <para> In other words, Xerces belongs to an equivalent class applications termed FSM
    402            applications<footnote>Herein FSM applications are considered software systems whose
     400         <para> In other words, Xerces belongs to an equivalence class of applications termed FSM
     401           applications<xref linkend="FSM"/>.<footnote xml:id="FSM"><para>Herein FSM applications are considered software systems whose
    403402            behaviour is defined by the inputs, current state and the events associated with
    404               transitions of states.</footnote>. Each state transition indicates the processing context of
     403              transitions of states.</para></footnote> Each state transition indicates the processing context of
    405404            subsequent characters. Unfortunately, textual data tends to be unpredictable and any
    406405            character could induce a state transition. </para>
     
    455454         <para> In icXML functions are grouped into logical components. As shown in
    456455             <xref linkend="xerces-arch"/>, two major categories exist: (1) the Parabix Subsystem and (2) the
    457                Markup Processor. All tasks in (1) use the Parabix Framework <citation linkend="HPCA2012">, which
     456               Markup Processor. All tasks in (1) use the Parabix Framework <citation linkend="HPCA2012"/>, which
    458457            represents data as a set of parallel bitstreams. The <emphasis role="ital">Character Set
    459458              Adapter</emphasis>, discussed in <xref linkend="character-set-adapter"/>, mirrors
     
    942941</para>     
    943942         <para> A key predictor of the overall parsing performance of an XML file is markup
    944            density<footnote>Markup Density: the ratio of markup bytes used to define the structure
    945              of the document vs. its file size.</footnote>. This metric has substantial influence on the
     943           density<footnote><para>Markup Density: the ratio of markup bytes used to define the structure
     944             of the document vs. its file size.</para></footnote>. This metric has substantial influence on the
    946945            performance of traditional recursive descent XML parsers because it directly corresponds
    947946            to the number of state transitions that occur when parsing a document. We use a mixture
     
    11551154      <bibliomixed xml:id="Expat" xreflabel="Expat">The Expat XML Parser.
    11561155            <link>http://expat.sourceforge.net/</link>.</bibliomixed>
     1156      <bibliomixed xml:id="GRID2006">   </bibliomixed>
     1157
     1158      <bibliomixed xml:id="IPDPS2008">  </bibliomixed>
     1159
     1160      <bibliomixed xml:id="HPCC2011">   </bibliomixed>
     1161
     1162      <bibliomixed xml:id="ParaDOM2009">        </bibliomixed>
     1163
     1164      <bibliomixed xml:id="ICWS2008">   </bibliomixed>
     1165
     1166      <bibliomixed xml:id="HPCA2012">
     1167        </bibliomixed>
     1168      <bibliomixed xml:id="E-SCIENCE2007">
     1169        </bibliomixed>
     1170      <bibliomixed xml:id="XMLSSE42">
     1171        </bibliomixed>
     1172      <bibliomixed xml:id="Cameron2009">
     1173        </bibliomixed>
     1174      <bibliomixed xml:id="cameron-EuroPar2011">
     1175        </bibliomixed>
     1176      <bibliomixed xml:id="Cameron2008">
     1177        </bibliomixed>
     1178      <bibliomixed xml:id="CameronHerdyLin2008">
     1179        </bibliomixed>
     1180      <bibliomixed xml:id="HackersDelight">
     1181        </bibliomixed>
     1182      <bibliomixed xml:id="HilewitzLee2006">
     1183        </bibliomixed>
     1184      <bibliomixed xml:id="Asanovic-EECS-2006-183">
     1185        </bibliomixed>
     1186      <bibliomixed xml:id="papi">
     1187        </bibliomixed>
     1188      <bibliomixed xml:id="perf">
     1189        </bibliomixed>
     1190      <bibliomixed xml:id="lake2004geography">
     1191        </bibliomixed>
     1192      <bibliomixed xml:id="lu2007advances">
     1193        </bibliomixed>
    11571194   </bibliography>
    11581195-->
     
    11671204  <bibliomixed xml:id="Cameron2009" xreflabel="Cameron and Herdy 2009">Cameron, Rob, Herdy, Ken and Amiri, Ehsan Amiri. Parallel Bit Stream Technology as a Foundation for XML Parsing Performance. Int'l Symposium on Processing XML Efficiently: Overcoming Limits on Space, Time, or Bandwidth. 2009</bibliomixed>
    11681205  <bibliomixed xml:id="HilewitzLee2006" xreflabel="Hilewitz and Lee 2006">Hilewitz, Yedidya and Lee, Ruby B.. Fast Bit Compression and Expansion with Parallel Extract and Parallel Deposit Instructions. ASAP '06: Proc. IEEE 17th Int'l Conference on Application-specific Systems, Architectures and Processors. 2006 Washington, DC, USA</bibliomixed>
    1169   <bibliomixed xml:id="Asanovic:EECS-2006-183" xreflabel="Asanovic and others 2006">Asanovic, Krste and others. The Landscape of Parallel Computing Research: A View from Berkeley. 2006</bibliomixed>
     1206  <bibliomixed xml:id="Asanovic-EECS-2006-183" xreflabel="Asanovic and others 2006">Asanovic, Krste and others. The Landscape of Parallel Computing Research: A View from Berkeley. 2006</bibliomixed>
    11701207  <bibliomixed xml:id="GRID2006" xreflabel="Lu and Chiu 2006">Lu, Wei, Chiu, Kenneth and Pan, Yinfei. A Parallel Approach to XML Parsing. Proceedings of the 7th IEEE/ACM International Conference on Grid Computing. 2006 Washington, DC, USA</bibliomixed>
    11711208  <bibliomixed xml:id="cameron-EuroPar2011" xreflabel="Cameron and Amiri 2011">Cameron, Robert D., Amiri, Ehsan, Herdy, Kenneth S., Lin, Dan, Shermer, Thomas C. and Popowich, Fred P.. Parallel Scanning with Bitstream Addition: An XML Case Study. Euro-Par 2011, LNCS 6853, Part II. 2011 Berlin, Heidelberg</bibliomixed>
Note: See TracChangeset for help on using the changeset viewer.