[ANN] GPUArrays and friends

I’m proud to announce GPUArrays together with a couple of helper packages!

Matcha: A matching library working on any iterable, while the matching expression can be build up via values + closures.
Scope: One could implement regex with Matcha and all kind of DSL like matching tools, which can also work on e.g. streams. It’s not benchmarked yet but should be relatively fast, since it will compile specialized code for your matching expression.

Sugar: library for extracting a typed AST from a function and generic tools around it to walk the AST, replace nodes, find dependencies of a function and printing the AST.
It uses Matcha to decompile what code_typed returns.
Scope: macros from typed AST, static linting, helper tools for benchmarking, transpiling, reversediff source, etc.

Transpiler: Currently transpiles to OpenCL and OpenGL code. Should be easy to extend to transpile to other languages.

And finally, the package that I created all these packages for:
GPUArrays!
It is supposed to be easy to extend even if one isn’t that familiar with GPU programming.
That it’s written in pure Julia and getting most of it functionality for free from Julia Base gives me great hope that we can grow this package rapidly into something very useful. Check out the README for more info!

I plan to release more examples and a tight integration with GLVisualize in the coming days.

Best,
Simon

16 Likes

Very cool.

Will this support loops?

How about custom types?

Both should be supported… The transpiler has definitely more difficulties with language constructs and custom types, CUDAnative should be much better at that! On the other hand, it should be quite easy to go into Transpiler.jl and fix things.

2 Likes

… Loops as in loops in a kernel. You still need an implicit GPU loop, but you can express that one as e.g. a map/broadcast!

1 Like

Cogratulations! GPUArrays is very cool and I have enjoy playing around with it.

1 Like