{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,28]],"date-time":"2026-06-28T04:59:37Z","timestamp":1782622777170,"version":"3.54.5"},"publisher-location":"New York, NY, USA","reference-count":45,"publisher":"ACM","license":[{"start":{"date-parts":[[2015,8,29]],"date-time":"2015-08-29T00:00:00Z","timestamp":1440806400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100000266","name":"Engineering and Physical Sciences Research Council","doi-asserted-by":"publisher","award":["EP\/K034413\/1"],"award-info":[{"award-number":["EP\/K034413\/1"]}],"id":[{"id":"10.13039\/501100000266","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2015,8,29]]},"DOI":"10.1145\/2784731.2784754","type":"proceedings-article","created":{"date-parts":[[2015,8,26]],"date-time":"2015-08-26T12:48:13Z","timestamp":1440593293000},"page":"205-217","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":86,"title":["Generating performance portable code using rewrite rules: from high-level functional expressions to high-performance OpenCL code"],"prefix":"10.1145","author":[{"given":"Michel","family":"Steuwer","sequence":"first","affiliation":[{"name":"University of Edinburgh, UK \/ University of M\u00fcnster, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Christian","family":"Fensch","sequence":"additional","affiliation":[{"name":"Heriot-Watt University, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Sam","family":"Lindley","sequence":"additional","affiliation":[{"name":"University of Edinburgh, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Christophe","family":"Dubach","sequence":"additional","affiliation":[{"name":"University of Edinburgh, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2015,8,29]]},"reference":[{"key":"e_1_3_2_1_1_1","unstructured":"AMD Accelerated Parallel Processing OpenCL Programming Guide. AMD 2013.  AMD Accelerated Parallel Processing OpenCL Programming Guide. AMD 2013."},{"key":"e_1_3_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542481"},{"key":"e_1_3_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364527.2364563"},{"key":"e_1_3_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.5555\/42675.42676"},{"key":"e_1_3_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2011.15"},{"key":"e_1_3_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1941553.1941562"},{"key":"e_1_3_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1941553.1941561"},{"key":"e_1_3_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926354.1926358"},{"key":"e_1_3_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/IISWC.2009.5306797"},{"key":"e_1_3_2_1_11_1","volume-title":"Structured Management of Parallel Computation","author":"Cole M. I.","year":"1989"},{"key":"e_1_3_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2627373.2627375"},{"key":"e_1_3_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1291151.1291199"},{"key":"e_1_3_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2212736.2212744"},{"key":"e_1_3_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1735688.1735702"},{"key":"e_1_3_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.5555\/646422.691650"},{"key":"e_1_3_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1553374.1553468"},{"key":"e_1_3_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1327452.1327492"},{"key":"e_1_3_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254066"},{"key":"e_1_3_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10766-013-0268-3"},{"key":"e_1_3_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1559845.1559982"},{"key":"e_1_3_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2010.62"},{"key":"e_1_3_2_1_23_1","volume-title":"Nvidia","author":"Harris M.","year":"2007"},{"key":"e_1_3_2_1_24_1","volume-title":"Declarative parallel programming for GPUs","author":"Holk E.","year":"2011"},{"key":"e_1_3_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950365.1950409"},{"key":"e_1_3_2_1_26_1","volume-title":"Haskell Workshop\u201901","author":"Jones S. P.","year":"2001"},{"key":"e_1_3_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.5555\/2190025.2190061"},{"key":"e_1_3_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2014.23"},{"key":"e_1_3_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1504176.1504194"},{"key":"e_1_3_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2500365.2500595"},{"key":"e_1_3_2_1_31_1","unstructured":"Nvidia OpenCL Best Practices Guide. Nvidia 2011.  Nvidia OpenCL Best Practices Guide. Nvidia 2011."},{"key":"e_1_3_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPP.2012.44"},{"key":"e_1_3_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2451116.2451162"},{"key":"e_1_3_2_1_34_1","volume-title":"SPIRAL: Code generation for DSP transforms","author":"P\u00fcschel M.","year":"2005"},{"key":"e_1_3_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462176"},{"key":"e_1_3_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-32820-6_86"},{"key":"e_1_3_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2555243.2555268"},{"key":"e_1_3_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.62092"},{"key":"e_1_3_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/2544137.2544155"},{"key":"e_1_3_2_1_40_1","volume-title":"University of Muenster","author":"Steuwer M.","year":"2015"},{"key":"e_1_3_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPS.2011.269"},{"key":"e_1_3_2_1_42_1","volume-title":"Obsidian: A domain specific embedded language for parallel programming of graphics processors","author":"Svensson J.","year":"2008"},{"key":"e_1_3_2_1_43_1","volume-title":"StreamIt: A language for streaming applications","author":"Thies W.","year":"2002"},{"key":"e_1_3_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/2400682.2400713"},{"key":"e_1_3_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/292540.292560"},{"key":"e_1_3_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2013.6494994"}],"event":{"name":"ICFP'15: 20th ACM SIGPLAN International Conference on Functional Programming","location":"Vancouver BC Canada","acronym":"ICFP'15","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"]},"container-title":["Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2784731.2784754","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2784731.2784754","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T02:16:48Z","timestamp":1750213008000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2784731.2784754"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015,8,29]]},"references-count":45,"alternative-id":["10.1145\/2784731.2784754","10.1145\/2784731"],"URL":"https:\/\/doi.org\/10.1145\/2784731.2784754","relation":{"is-identical-to":[{"id-type":"doi","id":"10.1145\/2858949.2784754","asserted-by":"object"}]},"subject":[],"published":{"date-parts":[[2015,8,29]]},"assertion":[{"value":"2015-08-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}