{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,16]],"date-time":"2025-12-16T12:23:51Z","timestamp":1765887831061,"version":"build-2065373602"},"reference-count":33,"publisher":"Association for Computing Machinery (ACM)","issue":"14","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2016,10]]},"abstract":"<jats:p>\n            In-memory databases require careful tuning and many engineering tricks to achieve good performance. Such database performance engineering is hard: a plethora of data and hardware-dependent optimization techniques form a design space that is difficult to navigate for a skilled engineer --- even more so for a query compiler. To facilitate performance-oriented design exploration and query plan compilation, we present\n            <jats:italic>Voodoo<\/jats:italic>\n            , a declarative intermediate algebra that abstracts the detailed architectural properties of the hardware, such as multi- or many-core architectures, caches and SIMD registers, without losing the ability to generate highly tuned code. Because it consists of a collection of declarative, vector-oriented operations, Voodoo is easier to reason about and tune than low-level C and related hardware-focused extensions (Intrinsics, OpenCL, CUDA, etc.). This enables our Voodoo compiler to produce (OpenCL) code that rivals and even outperforms the fastest state-of-the-art in memory databases for both GPUs and CPUs. In addition, Voodoo makes it possible to express techniques as diverse as cache-conscious processing, predication and vectorization (again on both GPUs and CPUs) with just a few lines of code. Central to our approach is a novel idea we termed\n            <jats:italic>control vectors<\/jats:italic>\n            , which allows a code generating frontend to expose parallelism to the Voodoo compiler in a abstract manner, enabling portable performance across hardware platforms.\n          <\/jats:p>\n          <jats:p>We used Voodoo to build an alternative backend for MonetDB, a popular open-source in-memory database. Our backend allows MonetDB to perform at the same level as highly tuned in-memory databases, including HyPeR and Ocelot. We also demonstrate Voodoo's usefulness when investigating hardware conscious tuning techniques, assessing their performance on different queries, devices and data.<\/jats:p>","DOI":"10.14778\/3007328.3007336","type":"journal-article","created":{"date-parts":[[2016,11,1]],"date-time":"2016-11-01T13:47:47Z","timestamp":1478008067000},"page":"1707-1718","source":"Crossref","is-referenced-by-count":74,"title":["Voodoo - a vector algebra for portable database performance on modern hardware"],"prefix":"10.14778","volume":"9","author":[{"given":"Holger","family":"Pirk","sequence":"first","affiliation":[{"name":"MIT CSAIL"}]},{"given":"Oscar","family":"Moll","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}]},{"given":"Matei","family":"Zaharia","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}]},{"given":"Sam","family":"Madden","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}]}],"member":"320","published-online":{"date-parts":[[2016,10]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2007.367892"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1088\/1742-6596\/180\/1\/012037"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2008.4536485"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1006\/jpdc.1996.0107"},{"key":"e_1_2_1_6_1","volume-title":"Tpc-h analyzed: Hidden messages and lessons learned from an influential benchmark","author":"Boncz P.","year":"2013","unstructured":"P. Boncz , T. Neumann , and O. Erling . Tpc-h analyzed: Hidden messages and lessons learned from an influential benchmark . In TPC-TC. Springer , 2013 . P. Boncz, T. Neumann, and O. Erling. Tpc-h analyzed: Hidden messages and lessons learned from an influential benchmark. In TPC-TC. Springer, 2013."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1409360.1409380"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.14778\/1453856.1453978"},{"key":"e_1_2_1_9_1","volume-title":"CIDR","author":"Crotty A.","year":"2015","unstructured":"A. Crotty , A. Galakatos , K. Dursun , T. Kraska , U. Cetintemel , and S. Zdoni . Tupleware:\" big\" data, big analytics, small clusters . In CIDR , 2015 . A. Crotty, A. Galakatos, K. Dursun, T. Kraska, U. Cetintemel, and S. Zdoni. Tupleware:\" big\" data, big analytics, small clusters. In CIDR, 2015."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/99.660313"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISPASS.2011.5762730"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1620585.1620588"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.14778\/2536360.2536370"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.14778\/2732951.2732959"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2010.5447892"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2882903.2915212"},{"key":"e_1_2_1_17_1","volume-title":"SPIE Defense, Security, and Sensing","author":"Malcolm J.","year":"2012","unstructured":"J. Malcolm , P. Yalamanchili , C. McClanahan , V. Venugopalakrishnan , K. Patel , and J. Melonakos . Arrayfire: a gpu acceleration platform . In SPIE Defense, Security, and Sensing , 2012 . J. Malcolm, P. Yalamanchili, C. McClanahan, V. Venugopalakrishnan, K. Patel, and J. Melonakos. Arrayfire: a gpu acceleration platform. In SPIE Defense, Security, and Sensing, 2012."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.14778\/2002938.2002940"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.5555\/2190025.2190069"},{"key":"e_1_2_1_20_1","volume-title":"Gpu gems 3","author":"Nguyen H.","year":"2007","unstructured":"H. Nguyen . Gpu gems 3 . Addison-Wesley Professional , 2007 . H. Nguyen. Gpu gems 3. Addison-Wesley Professional, 2007."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2013.6544810"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2014.6816677"},{"key":"e_1_2_1_23_1","volume-title":"MIT CSAIL","author":"Pirk H.","year":"2016","unstructured":"H. Pirk , O. Moll , M. Zaharia , and S. Madden . Voodoo - portable database performance on modern hardware. Technical report , MIT CSAIL , 2016 . H. Pirk, O. Moll, M. Zaharia, and S. Madden. Voodoo - portable database performance on modern hardware. Technical report, MIT CSAIL, 2016."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2619228.2619232"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2747645"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.14778\/2536222.2536233"},{"key":"e_1_2_1_27_1","volume-title":"Intel threading building blocks: outfitting C++ for multi-core processor parallelism. \" O'Reilly Media","author":"Reinders J.","year":"2007","unstructured":"J. Reinders . Intel threading building blocks: outfitting C++ for multi-core processor parallelism. \" O'Reilly Media , Inc .\", 2007 . J. Reinders. Intel threading building blocks: outfitting C++ for multi-core processor parallelism. \" O'Reilly Media, Inc.\", 2007."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/974750.974755"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2517349.2522715"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2584665"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.5555\/2656922"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPSW.2012.300"},{"key":"e_1_2_1_33_1","first-page":"17","article-title":"Monetdb\/x100-a dbms in the cpu cache","volume":"1001","author":"Zukowski M.","year":"2005","unstructured":"M. Zukowski , P. Boncz , N. Nes , and S. H\u00e9man . Monetdb\/x100-a dbms in the cpu cache . IEEE Data Engineering Bulletin , 1001 : 17 , 2005 . M. Zukowski, P. Boncz, N. Nes, and S. H\u00e9man. Monetdb\/x100-a dbms in the cpu cache. IEEE Data Engineering Bulletin, 1001:17, 2005.","journal-title":"IEEE Data Engineering Bulletin"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1457150.1457160"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3007328.3007336","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T11:08:55Z","timestamp":1672225735000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3007328.3007336"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016,10]]},"references-count":33,"journal-issue":{"issue":"14","published-print":{"date-parts":[[2016,10]]}},"alternative-id":["10.14778\/3007328.3007336"],"URL":"https:\/\/doi.org\/10.14778\/3007328.3007336","relation":{},"ISSN":["2150-8097"],"issn-type":[{"type":"print","value":"2150-8097"}],"subject":[],"published":{"date-parts":[[2016,10]]}}}