![](/cs149/fall21content/media/dsl/images/slide_038.jpg)
![](/cs149/fall21content/media/users/xiyan/profile.jpg)
![](/cs149/fall21content/media/users/csmith23/profile.jpg)
It seems like Halide mostly just converts the supplied scheduling into code for the target machine, which seems like it'd be useful in cases beyond image processing. Is Halide ever used for other domains?
![](/cs149/fall21content/media/users/juliob/profile.jpg)
Piggying off of Xiyan's question - how exactly does the compiler make the best decisions given the target machine? How does it know which version of the vector intrinsics to use - and how does it compile to the target in the most efficient way possible (or are tools like Halide just slow to compile given all these requirements?)
![](/cs149/fall21content/media/users/laimagineCS149/profile.jpg)
Can the programmer mix Halide code with other programming languages (e.g. C code) in cases where there's some business logic (use C), a computation-intensive section (use Halide), and finally some other business logic (use C)? Or does the programmer have to access what Halide outputs via files on disks?
![](/cs149/fall21content/media/users/hamood/profile.jpg)
This slide gives a lot of clarity to the overall presentation. It makes a lot of sense for Halide to limit itself to just providing a simpler, higher level abstraction for programmers to make their own parallelism decisions rather than trying to make decisions for the programmer. Given this, I imagine that expanding Halide to other languages must be in the future plans because every language could benefit from having this higher level abstraction and mechanisms of the target machines don't really change.
![](/cs149/fall21content/media/users/potato/profile.jpg)
In this, the programmer both needs to know the abstraction and the high-level scheduling implementation, but Halide takes care of the low-level, actual scheduling
![](/cs149/fall21content/media/users/sidhikab/profile.jpg)
Halide multithreading, or Halide's parallelization across cores, uses dynamic assignment. Iterations of the loop are thrown into a thread pool and cores take them as they finish.
![](/cs149/fall21content/media/users/joshcho/profile.jpg)
What are some older examples of something like Halide? Perhaps something really innovative, where a DSL really changed a field.
Please log in to leave a comment.
How does the Halide compiler work? Does it compile it C++ code running different mechanisms (pthreads/AVX) based on machines?