{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,1]],"date-time":"2026-05-01T22:43:13Z","timestamp":1777675393343,"version":"3.51.4"},"reference-count":51,"publisher":"SAGE Publications","issue":"5","license":[{"start":{"date-parts":[[2016,10,19]],"date-time":"2016-10-19T00:00:00Z","timestamp":1476835200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license"}],"content-domain":{"domain":["journals.sagepub.com"],"crossmark-restriction":true},"short-container-title":["The International Journal of High Performance Computing Applications"],"published-print":{"date-parts":[[2017,9]]},"abstract":"<jats:p>Stream processing is a compute paradigm that has been around for decades, yet until recently has failed to garner the same attention as other mainstream languages and libraries (e.g. C++, OpenMP, MPI). Stream processing has great promise: the ability to safely exploit extreme levels of parallelism to process huge volumes of streaming data. There have been many implementations, both libraries and full languages. The full languages implicitly assume that the streaming paradigm cannot be fully exploited in legacy languages, while library approaches are often preferred for being integrable with the vast expanse of extant legacy code. Libraries, however are often criticized for yielding to the shape of their respective languages. RaftLib aims to fully exploit the stream processing paradigm, enabling a full spectrum of streaming graph optimizations, while providing a platform for the exploration of integrability with legacy C\/C++ code. RaftLib is built as a C++ template library, enabling programmers to utilize the robust C++ standard library, and other legacy code, along with RaftLib\u2019s parallelization framework. RaftLib supports several online optimization techniques: dynamic queue optimization, automatic parallelization, and real-time low overhead performance monitoring.<\/jats:p>","DOI":"10.1177\/1094342016672542","type":"journal-article","created":{"date-parts":[[2016,10,19]],"date-time":"2016-10-19T21:35:42Z","timestamp":1476912942000},"page":"391-404","update-policy":"https:\/\/doi.org\/10.1177\/sage-journals-update-policy","source":"Crossref","is-referenced-by-count":11,"title":["RaftLib: A C++ template library for high performance stream parallel processing"],"prefix":"10.1177","volume":"31","author":[{"given":"Jonathan C","family":"Beard","sequence":"first","affiliation":[{"name":"ARM Research, Austin, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Peng","family":"Li","sequence":"additional","affiliation":[{"name":"Amazon Inc., Seattle, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Roger D","family":"Chamberlain","sequence":"additional","affiliation":[{"name":"Department of Computer Science and Engineering, Washington University in St Louis, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"179","published-online":{"date-parts":[[2016,10,19]]},"reference":[{"key":"bibr1-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1982.1653938"},{"key":"bibr2-1094342016672542","volume-title":"Requirements for data-parallel programming environments","author":"Adve V","year":"1994"},{"key":"bibr3-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/360825.360855"},{"key":"bibr4-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/ISP.2003.1275838"},{"key":"bibr5-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/1562764.1562783"},{"key":"bibr6-1094342016672542","unstructured":"Beard JC (2015) Online modeling and tuning of parallel stream processing systems. PhD Thesis, Department of Computer Science and Engineering, Washington University in St. Louis, USA."},{"key":"bibr7-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/MASCOTS.2013.49"},{"key":"bibr8-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-10885-8_6"},{"key":"bibr9-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/HPCC-CSS-ICESS.2015.64"},{"key":"bibr10-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-48096-0_7"},{"key":"bibr11-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/2712386.2712400"},{"key":"bibr12-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660236"},{"key":"bibr13-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/PDP.2010.67"},{"key":"bibr14-1094342016672542","first-page":"15","volume-title":"USENIX annual technical conference, general track","author":"Cantrill B","year":"2004"},{"key":"bibr15-1094342016672542","volume-title":"Parallel Programming in OpenMP","author":"Chandra R","year":"2001"},{"key":"bibr16-1094342016672542","unstructured":"CPP (2012) Working draft, standard for programming language C++. Available at: http:\/\/goo.gl\/JIOjsU. (accessed October 2014)."},{"key":"bibr17-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/5.558708"},{"key":"bibr18-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-06859-7_145"},{"key":"bibr19-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1980.1653418"},{"key":"bibr20-1094342016672542","first-page":"86","volume-title":"Fifth workshop on empirical studies of programmers","author":"Eisenstadt M","year":"1993"},{"key":"bibr21-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/2000064.2000108"},{"key":"bibr22-1094342016672542","volume-title":"Computers and Intractability","volume":"29","author":"Garey MR","year":"2002"},{"issue":"6","key":"bibr23-1094342016672542","doi-asserted-by":"crossref","first-page":"702","DOI":"10.1002\/cpe.1556","volume":"22","author":"Geimer M","year":"2010","journal-title":"Concurrency and Computation: Practice and Experience"},{"key":"bibr24-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/SC.2005.53"},{"key":"bibr25-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380100608"},{"key":"bibr26-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/178243.178258"},{"key":"bibr27-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1002\/j.1538-7305.1970.tb01770.x"},{"key":"bibr28-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/ASAP.2011.6043238"},{"key":"bibr29-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/EUC.2011.26"},{"key":"bibr30-1094342016672542","doi-asserted-by":"crossref","unstructured":"Lee EA, Messerschmitt DG (1987) Synchronous data flow. Proceedings of IEEE Special Issue on Hardware and Software for Digital Signal Processing 75(9): 1235\u20131245. Available at: http:\/\/ieeexplore.ieee.org\/stamp\/stamp.jsp?tp=&arnumber=1458131","DOI":"10.1109\/PROC.1987.13876"},{"key":"bibr31-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1007\/s11227-010-0405-3"},{"key":"bibr32-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/HiPC.2013.6799119"},{"key":"bibr33-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/1064978.1065034"},{"key":"bibr34-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509515"},{"key":"bibr35-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/2.471178"},{"key":"bibr36-1094342016672542","first-page":"7","volume-title":"Proceedings of the department of defense HPCMP users group conference","author":"Mucci PJ","year":"1999"},{"key":"bibr37-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/1273442.1250746"},{"key":"bibr38-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/DFM.2013.16"},{"key":"bibr39-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1145\/2082156.2082172"},{"key":"bibr40-1094342016672542","unstructured":"Perry F (2014) Sneak peek: Google Cloud Dataflow, a Cloud-native data processing service. Available at: http:\/\/goo.gl\/WnP27r (accessed November 2015)."},{"key":"bibr41-1094342016672542","unstructured":"raftlib.io (2016) RaftLib. Available at: http:\/\/www.raftlib.io (accessed October 2016)."},{"key":"bibr42-1094342016672542","volume-title":"Intel Threading Building Blocks: Outfitting C++ For Multi-core Processor Parallelism","author":"Reinders J","year":"2007"},{"key":"bibr43-1094342016672542","unstructured":"Samza (2015) Samza. Available at: http:\/\/samza.incubator.apache.org (accessed November 2015)."},{"key":"bibr44-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/12.8730"},{"key":"bibr45-1094342016672542","unstructured":"Stackd Exchange Data Dump (2014) Stack Exchange Data Dump. Available at: http:\/\/goo.gl\/PBgYvwz (accessed November 2014)."},{"key":"bibr46-1094342016672542","unstructured":"Storm (2015) Storm: Distributed and fault-tolerant realtime computation. Available at: https:\/\/storm.apache.org (accessed November 2015)."},{"issue":"1","key":"bibr47-1094342016672542","first-page":"42","volume":"36","author":"Tange O","year":"2011","journal-title":"The USENIX Magazine"},{"key":"bibr48-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45937-5_14"},{"key":"bibr49-1094342016672542","unstructured":"TIOBE (2016) TIOBE Programming Community index. Available at: http:\/\/goo.gl\/S8LD27 (accessed November 2015)."},{"key":"bibr50-1094342016672542","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2008.4536359"},{"key":"bibr51-1094342016672542","first-page":"244","volume-title":"Proceedings of symposium on application accelerators in high-performance computing","author":"Wingbermuehle JG","year":"2012"}],"container-title":["The International Journal of High Performance Computing Applications"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342016672542","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/full-xml\/10.1177\/1094342016672542","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1094342016672542","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,29]],"date-time":"2026-04-29T08:15:27Z","timestamp":1777450527000},"score":1,"resource":{"primary":{"URL":"https:\/\/journals.sagepub.com\/doi\/10.1177\/1094342016672542"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016,10,19]]},"references-count":51,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2017,9]]}},"alternative-id":["10.1177\/1094342016672542"],"URL":"https:\/\/doi.org\/10.1177\/1094342016672542","relation":{},"ISSN":["1094-3420","1741-2846"],"issn-type":[{"value":"1094-3420","type":"print"},{"value":"1741-2846","type":"electronic"}],"subject":[],"published":{"date-parts":[[2016,10,19]]}}}