{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,10]],"date-time":"2026-06-10T09:15:21Z","timestamp":1781082921142,"version":"3.54.1"},"reference-count":28,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2012,7,1]],"date-time":"2012-07-01T00:00:00Z","timestamp":1341100800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["9.64E+19"],"award-info":[{"award-number":["9.64E+19"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000015","name":"U.S. Department of Energy","doi-asserted-by":"publisher","award":["DE-SC0005288"],"award-info":[{"award-number":["DE-SC0005288"]}],"id":[{"id":"10.13039\/100000015","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Graph."],"published-print":{"date-parts":[[2012,8,5]]},"abstract":"<jats:p>\n                    Using existing programming tools, writing high-performance image processing code requires sacrificing readability, portability, and modularity. We argue that this is a consequence of conflating what computations define the\n                    <jats:italic>algorithm<\/jats:italic>\n                    , with decisions about\n                    <jats:italic>storage<\/jats:italic>\n                    and the\n                    <jats:italic>order<\/jats:italic>\n                    of computation. We refer to these latter two concerns as the\n                    <jats:italic>schedule<\/jats:italic>\n                    , including choices of tiling, fusion, recomputation vs. storage, vectorization, and parallelism.\n                  <\/jats:p>\n                  <jats:p>We propose a representation for feed-forward imaging pipelines that separates the algorithm from its schedule, enabling high-performance without sacrificing code clarity. This decoupling simplifies the algorithm specification: images and intermediate buffers become functions over an infinite integer domain, with no explicit storage or boundary conditions. Imaging pipelines are compositions of functions. Programmers separately specify scheduling strategies for the various functions composing the algorithm, which allows them to efficiently explore different optimizations without changing the algorithmic code.<\/jats:p>\n                  <jats:p>We demonstrate the power of this representation by expressing a range of recent image processing applications in an embedded domain specific language called Halide, and compiling them for ARM, x86, and GPUs. Our compiler targets SIMD units, multiple cores, and complex memory hierarchies. We demonstrate that it can handle algorithms such as a camera raw pipeline, the bilateral grid, fast local Laplacian filtering, and image segmentation. The algorithms expressed in our language are both shorter and faster than state-of-the-art implementations.<\/jats:p>","DOI":"10.1145\/2185520.2185528","type":"journal-article","created":{"date-parts":[[2012,8,6]],"date-time":"2012-08-06T14:11:37Z","timestamp":1344262297000},"page":"1-12","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":196,"title":["Decoupling algorithms from schedules for easy optimization of image processing pipelines"],"prefix":"10.1145","volume":"31","author":[{"given":"Jonathan","family":"Ragan-Kelley","sequence":"first","affiliation":[{"name":"MIT CSAIL"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Andrew","family":"Adams","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Sylvain","family":"Paris","sequence":"additional","affiliation":[{"name":"Adobe"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Marc","family":"Levoy","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Saman","family":"Amarasinghe","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Fr\u00e9do","family":"Durand","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2012,7]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1778765.1778766"},{"key":"e_1_2_2_2_1","volume-title":"Tech. Rep. MIT-CSAIL-TR-2011-049","author":"Aubry M.","year":"2011","unstructured":"Aubry , M. , Paris , S. , Hasinoff , S. W. , Kautz , J. , and Durand , F . 2011 . Fast and robust pyramid-based image processing. Tech. Rep. MIT-CSAIL-TR-2011-049 , Massachusetts Institute of Technology . Aubry, M., Paris, S., Hasinoff, S. W., Kautz, J., and Durand, F. 2011. Fast and robust pyramid-based image processing. Tech. Rep. MIT-CSAIL-TR-2011-049, Massachusetts Institute of Technology."},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2007.13"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1276377.1276506"},{"key":"e_1_2_2_5_1","unstructured":"CoreImage. Apple CoreImage programming guide. http:\/\/developer.apple.com\/library\/mac\/#documentation\/GraphicsImaging\/Conceptual\/CoreImaging.  CoreImage. Apple CoreImage programming guide. http:\/\/developer.apple.com\/library\/mac\/#documentation\/GraphicsImaging\/Conceptual\/CoreImaging."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796802004574"},{"key":"e_1_2_2_7_1","volume-title":"Proceedings of Bridges.","author":"Elliott C.","year":"2001","unstructured":"Elliott , C. 2001 . Functional image synthesis . In Proceedings of Bridges. Elliott, C. 2001. Functional image synthesis. In Proceedings of Bridges."},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1188455.1188543"},{"key":"e_1_2_2_9_1","doi-asserted-by":"crossref","unstructured":"Feautrier P. 1991. Dataflow analysis of array and scalar references. International Journal of Parallel Programming 20.  Feautrier P. 1991. Dataflow analysis of array and scalar references. International Journal of Parallel Programming 20 .","DOI":"10.1007\/BF01407931"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/605397.605428"},{"key":"e_1_2_2_11_1","volume-title":"Tech. Rep. MSR-TR-2010-175, Microsoft Research.","author":"Guenter B.","year":"2010","unstructured":"Guenter , B. , and Nehab , D . 2010 . The neon image processing language. Tech. Rep. MSR-TR-2010-175, Microsoft Research. Guenter, B., and Nehab, D. 2010. The neon image processing language. Tech. Rep. MSR-TR-2010-175, Microsoft Research."},{"key":"e_1_2_2_12_1","unstructured":"IPP. Intel Integrated Performance Primitives. http:\/\/software.intel.com\/en-us\/articles\/intel-ipp\/.  IPP. Intel Integrated Performance Primitives. http:\/\/software.intel.com\/en-us\/articles\/intel-ipp\/."},{"key":"e_1_2_2_13_1","unstructured":"Kapasi U. J. Mattson P. Dally W. J. Owens J. D. and Towles B. 2002. Stream scheduling. Concurrent VLSI Architecture Tech Report 122 Stanford University March.  Kapasi U. J. Mattson P. Dally W. J. Owens J. D. and Towles B. 2002. Stream scheduling. Concurrent VLSI Architecture Tech Report 122 Stanford University March."},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF00133570"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/192161.192190"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1109\/TIP.2010.2069690"},{"key":"e_1_2_2_17_1","unstructured":"LLVM. The LLVM compiler infrastructure. http:\/\/llvm.org.  LLVM. The LLVM compiler infrastructure. http:\/\/llvm.org."},{"key":"e_1_2_2_18_1","first-page":"57","article-title":"Shader metaprogramming","volume":"2002","author":"McCool M. D.","year":"2002","unstructured":"McCool , M. D. , Qin , Z. , and Popa , T. S. 2002 . Shader metaprogramming . In Graphics Hardware 2002 , 57 -- 68 . McCool, M. D., Qin, Z., and Popa, T. S. 2002. Shader metaprogramming. In Graphics Hardware 2002, 57--68.","journal-title":"Graphics Hardware"},{"key":"e_1_2_2_19_1","volume-title":"Proceedings of the 2011 9th Annual IEEE\/ACM International Symposium on Code Generation and Optimization, IEEE Computer Society, CGO '11, 224--235","author":"Newburn C. J.","unstructured":"Newburn , C. J. , So , B. , Liu , Z. , McCool , M. , Ghuloum , A. , Toit , S. D. , Wang , Z. G. , Du , Z. H. , Chen , Y. , Wu , G. , Guo , P. , Liu , Z. , and Zhang , D . 2011. Intel's array building blocks: A retargetable, dynamic compiler and embedded language . In Proceedings of the 2011 9th Annual IEEE\/ACM International Symposium on Code Generation and Optimization, IEEE Computer Society, CGO '11, 224--235 . Newburn, C. J., So, B., Liu, Z., McCool, M., Ghuloum, A., Toit, S. D., Wang, Z. G., Du, Z. H., Chen, Y., Wu, G., Guo, P., Liu, Z., and Zhang, D. 2011. Intel's array building blocks: A retargetable, dynamic compiler and embedded language. In Proceedings of the 2011 9th Annual IEEE\/ACM International Symposium on Code Generation and Optimization, IEEE Computer Society, CGO '11, 224--235."},{"key":"e_1_2_2_20_1","unstructured":"OpenCL 2011. The OpenCL specification version 1.2. http:\/\/www.khronos.org\/registry\/cl\/specs\/opencl-1.2.pdf.  OpenCL 2011. The OpenCL specification version 1.2. http:\/\/www.khronos.org\/registry\/cl\/specs\/opencl-1.2.pdf."},{"key":"e_1_2_2_21_1","unstructured":"OpenMP. OpenMP. http:\/\/openmp.org\/.  OpenMP. OpenMP. http:\/\/openmp.org\/."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11263-007-0110-8"},{"key":"e_1_2_2_23_1","doi-asserted-by":"crossref","unstructured":"Paris S. Kornprobst P. Tumblin J. and Durand F. 2009. Bilateral filtering: Theory and applications. Foundations and Trends in Computer Graphics and Vision.   Paris S. Kornprobst P. Tumblin J. and Durand F. 2009. Bilateral filtering: Theory and applications. Foundations and Trends in Computer Graphics and Vision.","DOI":"10.1561\/9781601982513"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2010324.1964963"},{"key":"e_1_2_2_25_1","volume-title":"Proceedings of Innovative Parallel Computing (InPar).","author":"Pharr M.","unstructured":"Pharr , M. , and Mark , W. R . 2012. ispc: A SPMD compiler for high-performance CPU programming . In Proceedings of Innovative Parallel Computing (InPar). Pharr, M., and Mark, W. R. 2012. ispc: A SPMD compiler for high-performance CPU programming. In Proceedings of Innovative Parallel Computing (InPar)."},{"key":"e_1_2_2_26_1","unstructured":"PixelBender. Adobe PixelBender reference. http:\/\/www.adobe.com\/content\/dam\/Adobe\/en\/devnet\/pixelbender\/pdfs\/pixelbender_reference.pdf.  PixelBender. Adobe PixelBender reference. http:\/\/www.adobe.com\/content\/dam\/Adobe\/en\/devnet\/pixelbender\/pdfs\/pixelbender_reference.pdf."},{"key":"e_1_2_2_27_1","volume-title":"Proceedings of the IEEE, special issue on \"Program Generation, Optimization, and Adaptation\" 93","author":"P\u00fcschel M.","unstructured":"P\u00fcschel , M. , Moura , J. M. F. , Johnson , J. , Padua , D. , Veloso , M. , Singer , B. , Xiong , J. , Franchetti , F. , Gacic , A. , Voronenko , Y. , Chen , K. , Johnson , R. W. , and Rizzolo , N . 2005. SPIRAL: Code generation for DSP transforms . Proceedings of the IEEE, special issue on \"Program Generation, Optimization, and Adaptation\" 93 , 2, 232--275. P\u00fcschel, M., Moura, J. M. F., Johnson, J., Padua, D., Veloso, M., Singer, B., Xiong, J., Franchetti, F., Gacic, A., Voronenko, Y., Chen, K., Johnson, R. W., and Rizzolo, N. 2005. SPIRAL: Code generation for DSP transforms. Proceedings of the IEEE, special issue on \"Program Generation, Optimization, and Adaptation\" 93, 2, 232--275."},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/192161.192191"}],"container-title":["ACM Transactions on Graphics"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2185520.2185528","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2185520.2185528","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T06:06:47Z","timestamp":1750226807000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2185520.2185528"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,7]]},"references-count":28,"aliases":["10.1145\/2185520.2335383"],"journal-issue":{"issue":"4","published-print":{"date-parts":[[2012,8,5]]}},"alternative-id":["10.1145\/2185520.2185528"],"URL":"https:\/\/doi.org\/10.1145\/2185520.2185528","relation":{"is-identical-to":[{"id-type":"doi","id":"10.1145\/3596711.3596751","asserted-by":"object"}]},"ISSN":["0730-0301","1557-7368"],"issn-type":[{"value":"0730-0301","type":"print"},{"value":"1557-7368","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,7]]},"assertion":[{"value":"2012-07-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}