Taking pipeline processing to the next level

Wyatt via Digitalmars-d digitalmars-d at puremagic.com
Wed Sep 7 07:24:43 PDT 2016


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 at 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


More information about the Digitalmars-d mailing list