Halide (programming language): Difference between revisions

Content deleted Content added
External links: these are sources, not ELs (they are both in peer reviewed venues)
m remove one repeated source and one lower quality source
Line 23:
| influenced =
}}
'''Halide''' is a computer [[programming language]] designed for writing [[digital image processing]] code that takes advantage of [[memory locality]], [[Array programming|vectorized computation]] and multi-core [[central processing unit]]s (CPU) and [[graphics processing unit]]s (GPU).<ref name="refsite1">{{cite web |url=http://www.i-programmer.info/news/192-photography-a-imaging/4588-halide-new-language-for-image-processing.html | title=Halide: New Language For Image Processing |year=2012 |access-date=20 September 2013}}</ref> Halide is implemented as an internal [[___domain-specific language]] (DSL) in [[C++]]. Halide was announced by MIT in 2012<ref>{{Cite web |last=Hardesty |first=Larry |date=2012-08-02 |title=Writing graphics software gets much easier |url=https://news.mit.edu/2012/better-programming-language-for-image-processing-0802 |access-date=2025-06-30 |website=MIT News {{!}} Massachusetts Institute of Technology |language=en}}</ref> and released in 2013.<ref>{{Cite journal |last=Ragan-Kelley |first=Jonathan |last2=Barnes |first2=Connelly |last3=Adams |first3=Andrew |last4=Paris |first4=Sylvain |last5=Durand |first5=Frédo |last6=Amarasinghe |first6=Saman |date=2013-06-16 |title=Halide: a language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelines |url=https://dl.acm.org/doi/10.1145/2491956.2462176 |journal=Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation |series=PLDI '13 |___location=New York, NY, USA |publisher=Association for Computing Machinery |pages=519–530 |doi=10.1145/2491956.2462176 |isbn=978-1-4503-2014-6}}</ref>
 
==Language==
The main innovation Halide brings is the separation of the [[algorithm]] being implemented from its [[scheduling (computing)|execution schedule]], i.e. code specifying the [[loop (computing)|loop]] [[nesting (computing)|nesting]], [[parallelization]], [[loop unrolling]] and [[vector processor|vector instruction]].<ref>{{Cite journal |last=Ragan-Kelley |first=Jonathan |last2=Adams |first2=Andrew |last3=Sharlet |first3=Dillon |last4=Barnes |first4=Connelly |last5=Paris |first5=Sylvain |last6=Levoy |first6=Marc |last7=Amarasinghe |first7=Saman |last8=Durand |first8=Frédo |date=2017-12-27 |title=Halide: decoupling algorithms from schedules for high-performance image processing |url=https://dl.acm.org/doi/10.1145/3150211 |journal=Commun. ACM |volume=61 |issue=1 |pages=106–115 |doi=10.1145/3150211 |issn=0001-0782}}</ref> These two are usually interleaved together and experimenting with changing the schedule requires the programmer to rewrite large portions of the algorithm with every change. With Halide, changing the schedule does not require any changes to the algorithm and this allows the programmer to experiment with scheduling and finding the most efficient one.<ref name=":0">{{Cite journal |last=Adams |first=Andrew |last2=Ma |first2=Karima |last3=Anderson |first3=Luke |last4=Baghdadi |first4=Riyadh |last5=Li |first5=Tzu-Mao |last6=Gharbi |first6=Michaël |last7=Steiner |first7=Benoit |last8=Johnson |first8=Steven |last9=Fatahalian |first9=Kayvon |last10=Durand |first10=Frédo |last11=Ragan-Kelley |first11=Jonathan |date=2019-07-12 |title=Learning to optimize halide with tree search and random programs |url=https://dl.acm.org/doi/10.1145/3306346.3322967 |journal=ACM Trans. Graph. |volume=38 |issue=4 |pages=121:1–121:12 |doi=10.1145/3306346.3322967 |issn=0730-0301}}</ref>
 
== Sample source code ==
Line 49:
 
==Use==
Google used Halide and [[TensorFlow]] for its Pixel 2 [[Pixel Visual Core]].<ref>{{cite web|url=https://www.theregister.co.uk/2017/10/22/ai_roundup/|title=Google and Intel cook AI chips, neural network exchanges – and more|publisher=Situation Publishing|website=[[The Register]]}}</ref> Adobe Photoshop also uses Halide.<ref>{{cite web |url=https://community.adobe.com/t5/photoshop/photoshop-freezing-at-startup-on-halide-bottlenecks/td-p/11085284?page=1 | title=Photoshop freezing at startup on Halide Bottlenecks |year=2020 |accessdate=27 April 2020}}</ref> Both Google and Adobe have been involved in Halide research.<ref>{{cite web |urlname=https"://halide-lang.org/papers/halide_autoscheduler_2019.pdf | title=Learning to Optimize Halide with Tree Search and Random Programs |year=2019 |accessdate=1 July0" 2019}}</ref>
 
== See also ==