jcuda.org

Java bindings for CUDA



This site contains Java bindings for NVIDIA® CUDA™ and related libraries.

To use these libraries, you need a CUDA-enabled GPU device and the NVIDIA driver with CUDA support and the CUDA Toolkit from the NVIDIA website.

The APIs of the libraries on this site have been kept close to the original APIs. The functions of all libraries are provided as static methods, and semantics and signatures of these methods have been kept consistent with the original library functions, except for the language-specific limitations of Java. See the section about the pointer handling for more information.

A forum for discussion about JCuda can be found at http://forum.byte-welt.de/forumdisplay.php?f=87&langid=2. Feel free to post your questions and discuss all aspects of JCuda there. Apart from that, any feedback that helps to improve the APIs and the functionalities of the libraries is welcome.



News



2010-08-30: Matrix inversion sample uploaded

2010-07-26: Utilities package uploaded

2010-07-11: Update of JCuda to version 0.3.1 for CUDA 3.1
2010-04-22: Sample for texture handling uploaded

2010-04-21: Pre-built binaries for Linux 64 bit and MacOS 32 bit uploaded

2010-04-16: Update of JCuda to version 0.3.0a 2010-03-28/29: Pre-built binaries for Linux 32 bit and Windows 64 bit uploaded

2010-03-25: Update of JCuda to version 0.3.0 for CUDA 3.0
2010-03-09: Utility class for compiling and launching kernels

2010-01-17: Pre-built binaries for Linux 64 bit uploaded

2010-01-17: Hotfix for JCublas

2010-01-07: JCuda forum opened

2009-11-02: Updated build files for Windows, Linux and MacOS - CUDPP 1.1 support - Minor improvements and bug fixes

2009-08-25: Update of JCufft to support double precision computations

2009-07-21: Preview of JOCL: Java bindings for OpenCL

2009-07-05: Alpha release of version 0.2.1 of JCuda, JCublas, JCufft and JCuddp

2009-06-09: Alpha release of JCuda 0.2

2009-05-27: Initial alpha release of version 0.1.1 of JCuda, JCublas, JCufft and JCuddp


(Change log)



Libraries


The following libraries are currently available:

JCuda Java bindings for the CUDA runtime and driver API.

This is the base for all other libraries on this site. It allows interacting with a CUDA device, by providing methods for device- and event management, allocating memory on the device and copying memory between the device and the host system. Additionally, the library comprises bindings for the CUDA driver API, which allows loading and executing CUBIN files and launching CUDA kernels from Java.
The following are special-purpose libraries which are using JCuda as a common platform:

JCublas Java bindings for CUBLAS, the NVIDIA CUDA BLAS library.

This library makes it possible to use CUBLAS, the NVIDIA CUDA implementation of the Basic Linear Algebra Subprograms, in Java applications.
JCufft Java bindings for the NVIDIA CUDA FFT library.

This library provides methods for using CUFFT, the NVIDIA CUDA implementation of Fast Fourier Transforms in Java applications.
JCudpp Java bindings for CUDPP, the CUDA Data Parallel Primitives Library.

This library enables Java applications to use the CUDA Data Parallel Primitives Library, which contains methods for sparse-matrix-vector-multiplications, parallel scans and sorting.