Halide (programming language): Difference between revisions

Content deleted Content added
No edit summary
TvojaStara (talk | contribs)
the parallelization is not automatic
Line 4:
| caption =
| file_ext =
| paradigm = [[Functional programming|functional]], [[Parallel programming model|parallel]]
| year = 2012
| designer = Jonathan Ragan-Kelley and Andrew Adams
Line 12:
| latest_test_version =
| latest_test_date =
| typing = [[Static typing|static]]
| implementations =
| dialects =
| influenced_by =
| influenced =
| programming_language = [[C++]]
| operating_system = Mac OS X (10.6 through 10.8), mainstream Linux distributions, Windows
| license =
Line 24:
}}
 
'''Halide''' is a computer [[programming language]] designed tofor make it easier to writewriting [[image processing]] code that atakes compileradvantage canof efficientlymemory andlocality, automaticallyvectorized parallelizecomputation ontoand multi-core CPUs and GPUs.<ref name="refsite1"/> Halide is implemented as an internal DSL in C++.
 
The main innovation Halide brings is the separation of the image processing algorithm being implemented from its execution schedule, code specifying the loop nesting, parallelization, loop unrolling and vector instruction. 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.
 
== Sample source code ==