# Anything like Halide in the Julia ecosystem?

**URL:** <https://discourse.julialang.org/t/anything-like-halide-in-the-julia-ecosystem/80005>\
**Category:** Specific Domains\
**Tags:** speed-optimization\
**Created:** [April 25, 2022, 6:41pm UTC](https://discourse.julialang.org/t/anything-like-halide-in-the-julia-ecosystem/80005 "2022-04-25T18:41:22Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Phil\_Tomson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/phil_tomson/32/3575_2.png) [@Phil\_Tomson](https://discourse.julialang.org/u/Phil_Tomson)\
**Post date:** [April 25, 2022, 6:41pm UTC](https://discourse.julialang.org/t/anything-like-halide-in-the-julia-ecosystem/80005/1 "2022-04-25T18:41:22Z")

</div>

Halide ([https://halide-lang.org/](https://halide-lang.org/)) is an embedded DSL in C++ that allows you to describe an algorithm as well as a “schedule” with the intent on targeting an algorithm to a specific architecture (CPU, GPU, etc) in an optimal way so that the algorithm executes faster on said architecture than it might have without a “schedule” - it allows you to separate the algorithm from architecture-specific implementation details (which are described in what they call the “schedule”). It initially was targeted towards speeding up image processing algorithms, but is starting to be used in other areas like Machine Learning. See the original Halide paper for more details: [https://dl.acm.org/doi/10.1145/3150211](https://dl.acm.org/doi/10.1145/3150211)

The other thing that’s happening in the Halide “ecosystem” is the rise of auto-schedulers that use machine learning to come up with efficient schedules for algorithms so that users don’t have to know a whole lot about how they want the algorithm implemented on a particular architecture - an ML algorithm can explore the space and come up with a pretty reasonable schedule.

I’m wondering if anyone is working on something similar for Julia? It seems like Julia would be a good language for this sort of thing given that there are ways to interact with the LLVM backend from within the language - as well as being able to do compiler-like things with macros, etc.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [April 25, 2022, 6:47pm UTC](https://discourse.julialang.org/t/anything-like-halide-in-the-julia-ecosystem/80005/2 "2022-04-25T18:47:13Z")

</div>

> **[GitHub - JuliaGPU/KernelAbstractions.jl: Heterogeneous programming in Julia](https://github.com/JuliaGPU/KernelAbstractions.jl)**
>
> Heterogeneous programming in Julia. Contribute to JuliaGPU/KernelAbstractions.jl development by creating an account on GitHub.

Though IIRC it doesn’t have stencil optimizations right now, which is one of the core pieces of Halide.

> **[GitHub - JuliaSIMD/LoopVectorization.jl: Macro(s) for vectorizing loops.](https://github.com/JuliaSIMD/LoopVectorization.jl)**
>
> Macro(s) for vectorizing loops. Contribute to JuliaSIMD/LoopVectorization.jl development by creating an account on GitHub.

Does the CPU side extremely well though.
