Running the JVM on CUDA

cuda, java, jvm

Solution

The main problem you have is that CUDA is designed to do something simple many many times. E.g. it typically runs one method on every core. You can't have different cores running different code. This doesn't mean that some code couldn't be optimized to run on a CUDA processor. e.g. vector operations, but running the entire JVM on a GPU is not what it was designed for.

BTW: CUDA processors don't support IO which is where most servers spend a large portion of their time. e.g. reading/writing to disk and to the network.

Problem

I've seen the use of Java to access `CUDA` api, however - Is there any implementation that runs the whole JVM in a GPU (perhaps using the CUDA API)? - Or, will there be any plans of doing this? - If so, will the performance be enough to run both client or server applications? - Most importantly what are the issues that will make the JVM impossible to run in a GPU? The advantage I'm seeing here is that, I can buy a decent NVidia GPU and be able to run Java application without much processing on the CPU, thus saving the CPU for some other utilization. However, if this would not be possible, is there any way to force the JVM to offload processing to the GPU with CUDA without the need to recompile a Java application to support CUDA? I mean like adding `VM arguments`?

Original source