|
|
|
|
|
by russellsprouts
599 days ago
|
|
This reminds me of Halide (https://halide-lang.org/), which is a really interesting design in this direction. In Halide, you specify the algorithm at a high level, then specify the "schedule" (execution order, vectorization, storage) separately. Then, it verifies that the two match. For tight loops like image kernels, it's often counter-intuitive which execution plan will give the best performance, so being able to experiment with the guarantee that you are still implementing the algorithm correctly is valuable. For a database, it would be as if you could send a high level SQL query and an execution plan together. Halide is very specific, but I could imagine a general-purpose language with a Python-like high level representation for code behavior, with the option to specify a lower-level implementation with a lot of performance annotations. |
|