Halide (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
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.