Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HPC (mainly on Java)

I'm looking for some way of using the number-crunching ability of a GPU (with Java perhaps?) in addition to using the multiple cores that the target machine has. I will be working on implementing (at present) the A* Algorithm but in the future I hope to replace it with a Genetic Algorithm of sorts. I've looked at Project Fortress but as I'm building my GUI in JavaFX, I'd prefer not to stray too far from a JVM.

Of course, should no feasible solution be available, I will migrate to the easiest solution to implement.

like image 760
Insectatorious Avatar asked May 11 '10 10:05

Insectatorious


4 Answers

If you're interested in HPC with GPUs then perhaps you can look jCuda. This provides Java bindings for CUDA, along with access to CUDA FFT, CUDA BLAS and CUDA DPP. I haven't seen any performance reports on this library so I can't guarantee it will be very good.

Beyond that, I'm not really sure. If you're interested in doing this type of stuff as an educational exercise then Java should be good enough, but if you have a serious need for HPC then you're probably going to want to implement in C and use the Java Native Interface to communicate with it.

like image 59
Il-Bhima Avatar answered Oct 16 '22 18:10

Il-Bhima


Morten Nobel Joergensen has a blog post showing how to create a Mandelbrot Set using JOGL - Java Bindings for OpenGL

However if you want generic computing, rather than graphics, then you'd be after the Java bindings for OpenCL, from which you can chose from JOCL, or JOCL or JavaCL.

Wikipedia's page shows how OpenCL can be used to compute a fast fourier transform.

like image 22
Stephen Denne Avatar answered Oct 16 '22 19:10

Stephen Denne


Parallel Colt might be of interest.

like image 30
Mark Avatar answered Oct 16 '22 17:10

Mark


Have a look at JPPF, it is a very nice and mature open source Java grid computing environment

like image 2
John Channing Avatar answered Oct 16 '22 19:10

John Channing