Exploiting Graphics processing units (Linux, Windows only)

You can improve the performance of your Java™ applications by offloading certain processing functions from your processor (CPU) to a graphics processing unit (GPU); specific hardware and software requirements apply.

A graphics processing unit is designed to optimize parallel processing. An NVIDIA GPU can potentially have thousands of cores that can run the same instruction at the same time, such as operating on each pixel within an image. By comparison, a CPU has a few cores that are ideal for serial processing, carrying out different instructions sequentially.

If your application contains code that would benefit from parallel processing, you can run that part of the code on the GPU, and the rest of the code on the CPU. You can use the CUDA4J application programming interface (API) to specify in your application exactly when to use the GPU. The types of applications that might be suitable for this technology are high performance enterprise and technical computing applications such as big data and analytics workloads. For more information, see The CUDA4J application programming interface (Linux, Windows only).

Some Java functions, such as sort, are particularly appropriate for GPU processing. The sort function requires repetitive operations on data arrays and can be processed on a GPU faster than a CPU. However, for a Java application to benefit from this type of processing, the array must be of a sufficient size to justify the time it takes to move the data between the CPU and the GPU. If you can determine exactly when a GPU could be used, you can develop applications that use the com.ibm.gpu classes to offload specific tasks. For more information about these classes, see The com.ibm.gpu application programming interface (Linux, Windows only). Alternatively, you can let the Java virtual machine decide when to offload processing to a GPU by setting a system property on the command line. To enable this feature, see Enabling application processing on a graphics processing unit (Linux, Windows only).

The Just-In-Time (JIT) compiler can also offload processing to a GPU. For more information, see How the JIT compiler uses a GPU (Linux, Windows only).