Halide - separating algorithm from implementation/locality issues (for image processing)

Just wondering if any of you have tried out Halide [http://halide-lang.org/]. It's a language/C++/Python library for which the aim seems to be to separate the functional steps of an algorithm from issues of how things are parallelised and cached. From a naive perspective, the separation of 'what' vs 'how'/'where' seems like it could be a good idea for keeping optimised code readable. What are your thoughts on this?

Are there any simple things you can do with plain C to emulate this separation? Would metaprogramming be required or could you do something with clever application of function pointers etc?



For those of you with ACM DL access, there are a few articles there: https://dl.acm.org/citation.cfm?id=2792710

There are tutorials and other resources on http://halide-lang.org/