4 ms·
Futhark – A small programming language that compiles to efficient GPU code
- bike4beer 10y agoReally 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 10y ago> 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 10y ago(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 10y agoMight be related to that GPU-accelerated APL compiler which was on the front page a week or so ago
- brudgers 10y agoI don't disagree. Charitably, 'APL' can be read as an ordinary acronym for 'a programming language' rather than the proper name of a programming language.
- sctb 10y agoThanks, a moderator updated the submission title to clarify. (Submitted title was "Futhark: APL on the GPU".)
- pebblexe 10y agoSorry about the title. Thank you mods for fixing it.
- avmich 10y agoLooks 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 10y agoAny array combinator (most importantly map, scan, reduce, and filter) are executed on the GPU (or whatever parallel execution platform is used).
- ivanceras 10y agoWhat 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 10y agoSomewhere around OpenCL 1.1 and 1.2. It works fine on NVIDIA GPUs - they are our main test platform.
- rebootthesystem 10y agoThis is not APL. Please don't call it APL. Also, please change the title on this thread to have it reflect the same.
- pjtr 10y agoOr 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 10y agoNo, 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.
- nickpeterson 10y agoWoudln'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).