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 questions and discussion about JCuda can be found at
https://forum.byte-welt.net/c/byte-welt-projekte-projects/jcuda.
Feel free to post your questions and discuss
all aspects of JCuda there. Apart from that, any
feedback
that helps to improve JCuda is welcome.
The current list of Maven dependencies can be found in the
downloads section.
News
2022-05-06: Version 11.6.1 has been uploaded to Maven Central.
2022-03-10: Version 11.5.2 has been uploaded to Maven Central.
2021-08-11: Version 11.4.0 has been uploaded to Maven Central.
2021-04-20: Version 11.2.0 has been uploaded to Maven Central.
2020-12-09: Version 11.1.1 has been uploaded to Maven Central
2020-09-21: Version 11.0.0 has been uploaded to Maven Central
2020-02-09: Version 10.2.0 has been uploaded to Maven Central
2019-05-30: Version 10.1.0 has been uploaded to Maven Central
2018-11-17: Version 10.0.0 has been uploaded to Maven Central
2018-06-24: Version 0.9.2 has been uploaded to Maven Central
2018-04-06: Version 0.9.0d has been uploaded to Maven Central
2017-02-27: Version 0.8.0 has been uploaded to Maven Central
-
JCuda has been made available in Maven Central. The list of
dependencies can be found in the downloads
section.
2016-11-10: Version 0.8.0
-
JCuda has been updated for CUDA 8.0.44 (final). The binaries are
available in the downloads
section.
2016-09-23: The samples are moving to GitHub
2016-09-15: Version 0.8.0RC
-
JCuda and JCudnn have been updated to support CUDA 8.0.27 (Release Candidate)
and cuDNN 5.1
-
The binaries are available in the downloads
section. Note that this is the first release where the native binaries
(DLL, SO and DYLIB files) are no longer distributed directly. Instead, they
are contained in JAR files and loaded from these JARs. This is one step
of
improving the deployment of the native libraries, with the goal of
bringing JCuda into Maven Central.
2016-02-22: Version 0.7.5b
-
A bugfix update: The method signatures for some of the JCusolver
methods have been fixed to receive an int array instead of a pointer.
2015-09-23: First version of JCudnn
-
JCudnn been added to the set of JCuda libraries. It offers
Java bindings for cuDNN,
the NVIDIA CUDA Deep Neural Network library. The binaries are
available in the downloads
section. The source code will be hosted at
https://github.com/jcuda/jcudnn
2015-09-17: Version 0.7.5
-
JCuda has been updated to support CUDA 7.5
-
The source code of JCuda is migrated to
https://github.com/jcuda.
Currently, the source code of the core JCuda libraries
(JCuda, JCublas, JCufft, JCurand and JCusolver) is already
available at GitHub. The other libraries will be added successively.
See the jcuda-main project at GitHub
for further information and build instructions.
2015-07-06: Update of JCudpp
-
JCudpp has been updated to support for CUDPP 2.2.
The source code, documentation and binaries (currently, only for Windows 64bit)
are available in the downloads
section.
2015-05-21: Extended documentation
-
The Documentation
section has been restructured and extended with a section about
Debugging JCuda applications
2015-05-11: Update to version 0.7.0a
-
Some methods had been missing in the JCublas2- and JCusparse
libraries. This has been fixed in the new version
-
A first basic support of Unified Memory has been added,
but should be considered as experimental.
-
The build scripts have been updated to use a more
recent
FindCUDA.cmake
version, and
to properly support the compilation of JCusolver
-
The source code, documentation and binaries are available
in the downloads
section. If you would like to contribute by providing binaries for a
system configuration that is not available yet, please
contact me.
(Older entries omitted here)
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
PTX- and 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.
|
JCurand |
Java bindings for CURAND, the NVIDIA CUDA random number generator.
JCurand offers GPU-accelerated random number generation for Java, using
the CURAND random number generator.
|
JCusparse |
Java bindings for CUSPARSE, the NVIDIA CUDA sparse matrix library.
With JCusparse it is possible to use the sparse matrix level 1,2 and 3
BLAS functions and sparse matrix conversion routines provided by CUSPARSE.
|
JCusolver |
Java bindings for CUSOLVER, the NVIDIA CUDA solver library.
JCusolver is a Java library for the CUDA solver library for
dense- and sparse solvers and reoptimization.
|
JCudnn |
Java bindings for cuDNN, the NVIDIA CUDA deep neural network library
|
|