News for hackers. Stuff that matters.
Re:Harlan, new Lispy language for GPU programming by Ihmahr on Monday July 01, 2013 @11:54AM (#5971442)
This is very much needed to make gpu more mainstream.
Re:Harlan, new Lispy language for GPU programming by vault_ on Monday July 01, 2013 @01:05PM (#5971969)
Things like NumbaPro[1] and OpenACC[2] are going to go much further towards making gpu programming more mainstream than a lisp dialect.

NumbaPro is a python library that let's you JIT python into CUDA or CPU vector extensions via decorators.

OpenACC is similar (or possibly developed out of) OpenMP in that it takes a directive driven approach to accelerating code. Given a loop you can add a pragma above it with instructions of how it should run a GPU and it will make it happen.

[1] http://docs.continuum.io/numbapro/ [2] http://www.openacc-standard.org/

EDIT: I forgot to mention that I believe we'll be seeing less writing of GPU code directly and more using of libraries that do the hard work for you. Some algorithms on GPUs are quite tricky to get right, and even with a language that makes them easy to express they are non-trivial to design and test. (Nvidia already provides Thrust with cuda which provides a nice STL like library that implements a lot of common routines)

[3] http://docs.nvidia.com/cuda/thrust/

Re:Harlan, new Lispy language for GPU programming by iskander on Monday July 01, 2013 @02:10PM (#5972513)
>Harlan already has native support for rich data structures, including trees and ragged arrays. Very soon the language will support higher order procedures.

Structured data and nonuniform computations are very hard to express right now on the GPU and typically require a long and terrible process of "creative" CUDA programming. Harlan seems to be pushing the boundaries of what sorts of GPU programs we can effectively/efficiently implement. But, because the syntax is unusual, you're saying it's irrelevant compared to NumbaPro...which is what, a thin wrapper over elementwise array operations?

Re:Harlan, new Lispy language for GPU programming by vault_ on Monday July 01, 2013 @03:02PM (#5972850)
Syntax is syntax, whether it's Lisp or C. What I mean is I hardly think that a new language is what GPU programming needs to break into the mainstream.

What I believe GPU programming needs is tools that people can easily add to their current environments or that they can easily extend their current algorithms with. NumbaPro, OpenACC, and Thrust allow that.

In addition, the reason it's hard to express structured data and nonuniform computation is because those aren't things GPU architecture excels at. It excels at doing uniform operations over large chunks of memory. I'm sure that Harlan is pushing the boundary of what you can do on a GPU, but it's not going to exceed the limitations imposed by the hardware.

Re:Harlan, new Lispy language for GPU programming by iskander on Monday July 01, 2013 @07:10PM (#5974336)
>In addition, the reason it's hard to express structured data and nonuniform computation is because those aren't things GPU architecture excels at.

If you write simple GPU kernels (like those that Theano/Thrust/Copperhead/NumbaPro let you easily express) then you're mostly stuck "doing uniform operations over large chunks of memory". However, the latest GPUs are packed with features for going beyond this simple model. There's a rich set of global atomic operations, a fast register shuffle, better caching and most importantly: dynamic parallelism via nested kernel invocations. We're not programming for the G80 any more, Keplers can run a much larger swath of programs. Sure, you won't reach the theoretical peak FLOPS by traversing irregular structures via recursive kernels but you might still beat the pants off a CPU.

Re:Harlan, new Lispy language for GPU programming by phren0logy on Monday July 01, 2013 @12:21PM (#5971634)
I'm not sure if you are joking (given that it is a lisp, which is notoriously not mainstream), but my limited experience with GPU programming with the existing tools has been pretty painful. I, for one, welcome this development.
Re:Harlan, new Lispy language for GPU programming by burke on Monday July 01, 2013 @01:01PM (#5971947)
The lisp part isn't necessary (or necessarily helpful), but it's certainly an improvement on embedding C-as-a-string in more C.

...though I am concerned that abstracting this stuff too much makes it less obvious how to optimize for the GPU. This may be a language for people that already have a solid grasp on GPU programming.

Re:Harlan, new Lispy language for GPU programming by octo_t on Monday July 01, 2013 @01:08PM (#5972001)
>> embedding C-as-a-string in more C

Um. OpenCL/Cuda look absolutely nothing like that.

Re:Harlan, new Lispy language for GPU programming by _pmf_ on Tuesday July 02, 2013 @01:38AM (#5976038)
>> embedding C-as-a-string in more C >Um. OpenCL/Cuda look absolutely nothing like that.

Absolutely right. You can also include an external C file from C++ [1]; that makes it so much prettier.

[1] http://developer.amd.com/tools-and-sdks/heterogeneous-comput...

Re:Harlan, new Lispy language for GPU programming by bajsejohannes on Monday July 01, 2013 @12:32PM (#5971706)
Yes, anything to make it easier to get started. I've tried before, but got lost in figuring out which SDK to download. Too bad this toolkit doesn't help in that process.

Happily, writing this answer I discovered that OS X 10.7+ ships with OpenCL already! Can't believe I missed that last time.

For anyone else wanting to try it, the first example is pretty straight forward:

https://developer.apple.com/library/mac/#documentation/Perfo...

(You'll also want the code examples at https://developer.apple.com/library/mac/#documentation/Perfo... )

Re:Harlan, new Lispy language for GPU programming by reeses on Monday July 01, 2013 @06:45PM (#5974176)
The OpenCL implementation provided by Apple is less than ideal. It lacks a number of optimizations that are provided by, for example, AMD's OpenCL driver packages for Linux and Windows.

That, coupled with the wretched GPU options available on the Mac Pro, make the current stack not really cost effective. (I think a 5770 is still $250.)

However, it is better than CPU-only.

I've found slaving a cheap Linux box with expensive GPUs to be a much more gratifying experience.

Re:Harlan, new Lispy language for GPU programming by eholk on Monday July 01, 2013 @07:36PM (#5974498)
I've done most of my development on a Mac, but I keep finding many bugs in Apple's OpenCL implementation. Intel's seems to follow the standard most closely, which is useful for keeping me honest.
Re:Harlan, new Lispy language for GPU programming by octo_t on Monday July 01, 2013 @01:08PM (#5972006)
OpenCL is used to JIT OpenGL calls based on the hardware. Its magic.
Re:Harlan, new Lispy language for GPU programming by pi18n on Monday July 01, 2013 @12:42PM (#5971800)
Are GLSL and OpenCL equally capable?
Re:Harlan, new Lispy language for GPU programming by bajsejohannes on Monday July 01, 2013 @01:19PM (#5972081)
Not exactly sure what you're asking, but GLSL and OpenCL are for two different domains: GLSL for graphics and OpenCL for calculations that are not intended to show up as graphics.

They both run on the same hardware, but I don't have enough (or really any) experience with OpenCL to say if it feels more or less powerful than GLSL.

Edit: It turns out that I have no OpenCL hardware support (mid 2011 MBA), so I guess the hardware isn't necessarily completely similar (i.e. it can support GLSL and not OpenCL)

Re:Harlan, new Lispy language for GPU programming by Impossible on Monday July 01, 2013 @01:55PM (#5972391)
This isn't entirely true. As of OpenGL 4.3 (latest spec), OpenGL adds compute shaders as well. Their primary usage is to make interopt with the graphics pipeline less painful than it would be with OpenCL, but in theory you could use OpenGL (or DX11 on Windows) compute shaders for non-graphics tasks, and they'd have roughly the same capabilities as CUDA or OpenCL.
Re:Harlan, new Lispy language for GPU programming by Ihmahr on Tuesday July 02, 2013 @06:56AM (#5976928)
Not joking.