Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java GPU programming [closed]

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.

like image 501
Anand Sunderraman Avatar asked Aug 02 '10 04:08

Anand Sunderraman


People also ask

Can you run Java code on GPU?

Although there are many applications where GPUs can bring some game-changing benefits, you might say there are still some obstacles. However, Java and GPUs can do great things together.

Does Java need a graphics card?

A dedicated (also known as discrete) graphics card isn't very important for coding purposes. Save money by going with an integrated graphics card. Invest the money you save in an SSD or a better processor which will provide more value for the money.

Can I use GPU for programming?

GPU Programming is a method of running highly parallel general-purpose computations on GPU accelerators. While the past GPUs were designed exclusively for computer graphics, today they are being used extensively for general-purpose computing (GPGPU computing) as well.


2 Answers

Yes. Java3D, LWJGL 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 efficient 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.

like image 106
Gunslinger47 Avatar answered Sep 22 '22 03:09

Gunslinger47


Rootbeer1 has just been released on github: https://github.com/pcpratts/rootbeer1

With Rootbeer you can program using almost any Java except the following:

  1. native methods and fields
  2. reflection
  3. dynamic method invocation
  4. garbage collection
  5. sleeping inside a monitor

This means you can use arbitrary object graphs with composite types.

like image 29
pcpratts Avatar answered Sep 19 '22 03:09

pcpratts