Show simple item record

dc.contributor.authorBarnes, Connelly
dc.contributor.authorAdams, Andrew
dc.contributor.authorParis, Sylvain
dc.contributor.authorRagan-Kelley, Jonathan Millar
dc.contributor.authorDurand, Fredo
dc.contributor.authorAmarasinghe, Saman P.
dc.date.accessioned2014-03-28T13:55:24Z
dc.date.available2014-03-28T13:55:24Z
dc.date.issued2013-06
dc.identifier.issn03621340
dc.identifier.urihttp://hdl.handle.net/1721.1/85943
dc.description.abstractImage processing pipelines combine the challenges of stencil computations and stream programs. They are composed of large graphs of different stencil stages, as well as complex reductions, and stages with global or data-dependent access patterns. Because of their complex structure, the performance difference between a naive implementation of a pipeline and an optimized one is often an order of magnitude. Efficient implementations require optimization of both parallelism and locality, but due to the nature of stencils, there is a fundamental tension between parallelism, locality, and introducing redundant recomputation of shared values. We present a systematic model of the tradeoff space fundamental to stencil pipelines, a schedule representation which describes concrete points in this space for each stage in an image processing pipeline, and an optimizing compiler for the Halide image processing language that synthesizes high performance implementations from a Halide algorithm and a schedule. Combining this compiler with stochastic search over the space of schedules enables terse, composable programs to achieve state-of-the-art performance on a wide range of real image processing pipelines, and across different hardware architectures, including multicores with SIMD, and heterogeneous CPU+GPU execution. From simple Halide programs written in a few hours, we demonstrate performance up to 5x faster than hand-tuned C, intrinsics, and CUDA implementations optimized by experts over weeks or months, for image processing applications beyond the reach of past automatic compilers.en_US
dc.description.sponsorshipUnited States. Dept. of Energy (Award DE-SC0005288)en_US
dc.description.sponsorshipNational Science Foundation (U.S.) (Grant 0964004)en_US
dc.description.sponsorshipIntel Corporationen_US
dc.description.sponsorshipCognex Corporationen_US
dc.description.sponsorshipAdobe Systemsen_US
dc.language.isoen_US
dc.publisherAssociation for Computing Machinery (ACM)en_US
dc.relation.isversionofhttp://dx.doi.org/10.1145/2499370.2462176en_US
dc.rightsCreative Commons Attribution-Noncommercial-Share Alikeen_US
dc.rights.urihttp://creativecommons.org/licenses/by-nc-sa/4.0/en_US
dc.sourceMIT web domainen_US
dc.titleHalide: a language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelinesen_US
dc.typeArticleen_US
dc.identifier.citationJonathan Ragan-Kelley, Connelly Barnes, Andrew Adams, Sylvain Paris, Fredo Durand, and Saman Amarasinghe. 2013. Halide: a language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelines. SIGPLAN Not. 48, no. 6 (June 23, 2013): 519.en_US
dc.contributor.departmentMassachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratoryen_US
dc.contributor.departmentMassachusetts Institute of Technology. Department of Electrical Engineering and Computer Scienceen_US
dc.contributor.mitauthorRagan-Kelley, Jonathan Millaren_US
dc.contributor.mitauthorAdams, Andrewen_US
dc.contributor.mitauthorDurand, Fredoen_US
dc.contributor.mitauthorAmarasinghe, Saman P.en_US
dc.relation.journalACM SIGPLAN Noticesen_US
dc.eprint.versionAuthor's final manuscripten_US
dc.type.urihttp://purl.org/eprint/type/ConferencePaperen_US
eprint.statushttp://purl.org/eprint/status/NonPeerRevieweden_US
dspace.orderedauthorsRagan-Kelley, Jonathan; Barnes, Connelly; Adams, Andrew; Paris, Sylvain; Durand, Fredo; Amarasinghe, Samanen_US
dc.identifier.orcidhttps://orcid.org/0000-0001-9919-069X
dc.identifier.orcidhttps://orcid.org/0000-0002-7231-7643
mit.licenseOPEN_ACCESS_POLICYen_US
mit.metadata.statusComplete


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record