On Wednesday, 7 September 2016 at 00:18:59 UTC, Manu wrote:
On 7 September 2016 at 01:54, Wyatt via Digitalmars-d <digitalmars-d@puremagic.com> wrote:

Thanks, that's really interesting, I'll check it out.

Here's some work on static rank polymorphism that might also be applicable?:
http://www.ccs.neu.edu/home/pete/pub/esop-2014.pdf

And in the Related Work, I just noticed Halide, which sounds like it's right up your alley:
http://halide-lang.org/

Of course, this comes with the caveat that this is (still!) some relatively heavily-academic stuff. And I'm not sure to what extent that can help mitigate the problem of relaxing type requirements such that you can e.g. efficiently ,/⍉ your 4 2⍴"LR" vector for SIMD on modern processors.

That's not what I want though.
I intend to hand-write that function (I was just giving examples of how auto-vectorisation almost always fails), the question here is, how to work that new array function into our pipelines transparently...

Ah, I misunderstood. Sorry. I had the impression that you wanted to be able to simply write:

data.map!(x => transform(x)).copy(output);

...for any data[] and have it lift the transformation to the whole vector. If you're doing the work, I'm curious what you're hoping the end result to look like in terms of the code you want to be able to write. Just a doodle is fine, it doesn't have to stand up to scrutiny.

-Wyatt

Reply via email to