
Futhark – A small programming language that compiles to efficient GPU code - pebblexe
https://futhark-lang.org/index.html
======
nickpeterson
Woudln't the more accurate example of APL on the GPU be co-dfns?

Is there a way to make J target the GPU? I feel like APL stuff is more
limiting because it invariably results in paying Dyalog for a toolkit (which
severely limits my ability to use it at work).

------
avmich
Looks very interesting :) but I can't quite find out what is going on on the
GPU. What GPU operations are executed for a sample program which contains
various (scalar, vector, applying to different sizes and shapes etc.)
operators?

~~~
Athas
Any array combinator (most importantly map, scan, reduce, and filter) are
executed on the GPU (or whatever parallel execution platform is used).

~~~
ivanceras
What is the minimum OpenCL version? I'm evaluatimg if this could be a viable
experimentation for parallelizing task which uses amazon GPU compute which are
mostly nvidia GPU.

~~~
Athas
Somewhere around OpenCL 1.1 and 1.2. It works fine on NVIDIA GPUs - they are
our main test platform.

------
pebblexe
Sorry about the title. Thank you mods for fixing it.

------
rebootthesystem
This is not APL. Please don't call it APL.

Also, please change the title on this thread to have it reflect the same.

~~~
pjtr
Or may link to the "Docs" section? It mentions a paper that connects this to
APL:

"APL on GPUs - A TAIL from the Past, Scribbled in Futhark

A paper describing an APL compiler (apltail) that operates by translating APL
into a typed array intermediate language (TAIL), and from there into Futhark.
While the Futhark details are light, the paper demonstrates a simple use of
Futhark as a target language for a compiler. We succeed in achieving decent
speedup on several (small) APL programs."

The introduction of the paper says it only "compiles a subset of APL into
TAIL" though.

~~~
rebootthesystem
No, sorry, I studied APL in the early 80's and used it professionally for ten
years straight and have been using it sporadically since then.

Only APL is APL. Notation is as much a part of APL as is it's linear
algebra/array orientation. One can't remove the notation and call it APL just
like one can't take C and convert it to icons to drag around the screen and
still call it C.

------
bike4beer
Really what does this have to do with APL ( Ken Iverson )??

 __*

This is NOT APL.

Futhark is a functional language, we will start with the obligatory factorial
program:

fun fact (n: i32): i32 = reduce ( _) 1 (map (1+) (iota n))

_ __

This has nothing to do with APL.

Perhaps a more apt title would be "Python for the GPU".j

 __*

There is a paper on this subject, where an APL interpreter is written in
FUTARK, but then most compilers are written in C. In reality the technology in
question is Futark on GPU.

[https://futhark-lang.org/publications/fhpc16.pdf](https://futhark-
lang.org/publications/fhpc16.pdf)

~~~
Kametrixom
> Perhaps a more apt title would be "Python for the GPU"

Why Python? Futhark is a purely functional language and looks a lot like
Haskell, so I think "Haskell for the GPU" would be a better title

~~~
Athas
(Author here.)

OCaml would be an even more apt comparison.

I find it a bit ironic that of all the related submissions I (and others) have
made, it's the one with the bizarre title that hits the front page!

~~~
s_ngularity
Might be related to that GPU-accelerated APL compiler which was on the front
page a week or so ago

