views:

343

answers:

1

Hi,

Is it possible to do GPU programming in Java ? I mean without using native libraries.

And how much of a performance improvement can one expect when we switch over to gpu's ?

Edit:

I am not looking at game programming, I want to do hard core number crunching.

+3  A: 

Yes. Java3D and JOGL support GLSL (OpenGL Shading Language).

Edit:
You can use OpenCL if you want to do platform-neutral, general-purpose computation on GPUs. This framework lets you write code that treats all processing units identically, despite wildly varying feature sets and execution environments. Though, this is very low level programming compared with Java.

It seems your ideal would be a JVM written with OpenCL support. Searching online, I found a little bit of interest in the idea but no evidence of any major backing.

how much of a performance improvement can one expect

That depends on the system you're running on and what sort of data you're processing (Matrix and vector math is extremely efficent on GPUs). You'd likely get some major gains on a system like mine with two powerful GPUs and a modest single-core CPU. However on a computer with a modest GPU and a quad-core CPU, the performance gains might have a hard time overcoming the overhead.

Gunslinger47
He's probably looking for JOCL. http://www.jocl.org/
Ben Voigt
JOCL tutorial: http://www.codeproject.com/KB/recipes/opencl-part1.aspx
rwong