Halide  20.0.0
Halide compiler and libraries
MainPage.h
Go to the documentation of this file.
1 /** \file
2  * This file only exists to contain the front-page of the documentation
3  */
4 
5 /** \mainpage Halide
6  *
7  * Halide is a programming language designed to make it easier to
8  * write high-performance image processing code on modern
9  * machines. Its front end is embedded in C++. Compiler
10  * targets include x86/SSE, ARM v7/NEON, CUDA, Native Client,
11  * OpenCL, and Metal.
12  *
13  * You build a Halide program by writing C++ code using objects of
14  * type \ref Halide::Var, \ref Halide::Expr, and \ref Halide::Func,
15  * and then calling \ref Halide::Func::compile_to_file to generate an
16  * object file and header (good for deploying large routines), or
17  * calling \ref Halide::Func::realize to JIT-compile and run the
18  * pipeline immediately (good for testing small routines).
19  *
20  * To learn Halide, we recommend you start with the <a href=examples.html>tutorials</a>.
21  *
22  * You can also look in the test folder for many small examples that
23  * use Halide's various features, and in the apps folder for some
24  * larger examples that statically compile halide pipelines. In
25  * particular check out local_laplacian, bilateral_grid, and
26  * interpolate.
27  *
28  * If you are looking for a binary release, we suggest using pip to install
29  * either a <a href="https://pypi.org/project/halide">stable release</a> or
30  * a <a href="https://test.pypi.org/project/halide">nightly build</a> from
31  * Test PyPI.
32  *
33  * If you plan to build your program with CMake, you might be interested in
34  * documentation for <a href="https://github.com/halide/Halide/blob/main/doc/HalideCMakePackage.md">
35  * the Halide CMake helpers</a>.
36  *
37  * Below are links to the documentation for the important classes in Halide.
38  *
39  * For defining, scheduling, and evaluating basic pipelines:
40  *
41  * Halide::Func, Halide::Stage, Halide::Var
42  *
43  * Our image data type:
44  *
45  * Halide::Buffer
46  *
47  * For passing around and reusing halide expressions:
48  *
49  * Halide::Expr
50  *
51  * For representing scalar and image parameters to pipelines:
52  *
53  * Halide::Param, Halide::ImageParam
54  *
55  * For writing functions that reduce or scatter over some domain:
56  *
57  * Halide::RDom
58  *
59  * For writing and evaluating functions that return multiple values:
60  *
61  * Halide::Tuple, Halide::Realization
62  *
63  */
64 
65 /**
66  * \example tutorial/lesson_01_basics.cpp
67  * \example tutorial/lesson_02_input_image.cpp
68  * \example tutorial/lesson_03_debugging_1.cpp
69  * \example tutorial/lesson_04_debugging_2.cpp
70  * \example tutorial/lesson_05_scheduling_1.cpp
71  * \example tutorial/lesson_06_realizing_over_shifted_domains.cpp
72  * \example tutorial/lesson_07_multi_stage_pipelines.cpp
73  * \example tutorial/lesson_08_scheduling_2.cpp
74  * \example tutorial/lesson_09_update_definitions.cpp
75  * \example tutorial/lesson_10_aot_compilation_generate.cpp
76  * \example tutorial/lesson_10_aot_compilation_run.cpp
77  * \example tutorial/lesson_11_cross_compilation.cpp
78  * \example tutorial/lesson_12_using_the_gpu.cpp
79  * \example tutorial/lesson_13_tuples.cpp
80  * \example tutorial/lesson_14_types.cpp
81  * \example tutorial/lesson_15_generators.cpp
82  */