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