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
-
The samples section now contains a
matrix inversion example which loads and executes several CUDA kernels
to perform a Gauss elimination. The original kernels and the host implementation
have been developed by Christoph Wagner (Hochschule Mannheim) in his diploma
thesis in the ZAFH-AMSER project,
based on a presentation by Christian Heinrich (Fraunhofer SCAI).
2010-07-26:
Utilities package uploaded
-
The Utilities section
contains an archive with several utility classes for JCuda, including
an updated version of the "KernelLauncher" class, which simplifies the
setup and execution of kernels using the Driver API.
2010-07-11: Update of JCuda to version 0.3.1 for
CUDA 3.1
-
The source code of JCuda 0.3.1 and binaries for Windows
32/64 bit and Linux 32 bit are available in the
downloads section.
Other binaries will follow soon. If you would like to
contribute by providing binaries for a system configuration
that is not available yet, please
contact me.
-
The license of JCuda has been changed to the
MIT/X11 License, which
is equivalent to the 2-clause BSD license.
2010-04-22: Sample for texture handling uploaded
-
A small
example in the samples section shows how 1D, 2D and 3D
arrays of float and float4 values may be accessed via texture
references.
2010-04-21: Pre-built binaries for Linux 64 bit and MacOS 32 bit uploaded
-
The Downloads section now contains
pre-built binaries of JCuda for Linux 64 bit and MacOS 32 bit. Thanks
to Adrian Challinor and Teruhisa Haruguchi for providing these binaries.
2010-04-16: Update of JCuda to version 0.3.0a
-
This release includes some bugfixes. See the change log
for details. The source code and 32 bit Windows binaries
of JCuda 0.3.0a are available in the
downloads section. Other binaries will follow soon.
If you would like to contribute by providing binaries for
a system configuration that is not available yet, please
contact me.
2010-03-28/29: Pre-built binaries for Linux 32 bit and Windows 64 bit uploaded
-
The Downloads section now contains
pre-built binaries of JCuda for Linux 32 bit and Windows 64 bit.
2010-03-25: Update of JCuda to version 0.3.0 for
CUDA 3.0
-
The source code and 32 bit Windows binaries of JCuda 0.3.0 are
available in the
downloads section. Other binaries will follow soon.
If you would like to contribute by providing binaries for
a system configuration that is not available yet, please
contact me.
-
It is now possible to mix runtime- and driver API calls. A small
example in the samples section shows how this may be used
to mix own kernels with runtime library functions
-
JCufft was extended by the functions introduced with CUFFT 3.0
-
In JCublas, all functions of CUBLAS 3.0 are available - that means all BLAS 1,2 and 3 functions
-
The new graphics interoperability is supported
-
The emulation mode has been deprecated in CUDA 3.0. It will no longer
be supported in JCuda.
-
The license of JCuda has been changed to the
GNU Lesser General Public License
2010-03-09: Utility class for compiling and launching kernels
-
A utility class which simplifies the compilation of kernels and
the launch of kernels using the driver API has been added to the
samples section.
2010-01-17: Pre-built binaries for Linux 64 bit uploaded
-
The Downloads section now contains
pre-built binaries of JCuda for Linux 64bit. Thanks to Bibrak Qamar from
NUST Pakistan for providing these libraries.
2010-01-17: Hotfix for JCublas
-
JCublas 0.2.3 was missing some functions, e.g. the cublasSnrm2 function
for computing the vector norm. The following archive contains updated
JAR files, source code, documentation and binaries for Windows 32 bit:
JCublas-0.2.3a_hotfix.zip.
The libraries are compiled for CUDA 3.0 beta, which may be obtained
from
the NVIDIA CUDA 3.0 beta download site. The updated version of
JCublas, and pre-built binaries for other operating systems will be
part of the next release of JCuda, which will be available soon after
the final version of CUDA 3.0 is available.
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
-
The source code available in the Downloads
section now contains Linux makefiles. These makefiles are based on the makefiles
from the NVIDIA samples, and should thus be able to compile for 32bit and 64bit
architectures, and it should be possible to easily adapt them for compilation
on MacOS.
These makefiles currently only have been tested on openSUSE 11.1, 32bit in
emulation mode.
Additionally, the Visual Studio project files have been enhanced and extended
to support 64bit configurations.
-
Added support for CUDPP 1.1 to JCudpp. This new sorting algorithm is
blazingly fast.
-
Added a helper function to JCudaDriver for aligning kernel parameters
-
Fixed a bug related to inverse transforms in JCufft
2009-08-25: Update of JCufft to support double precision computations
-
Since CUDA 2.3, CUFFT supports double precision computations. The support
for double precision computations now has been added to JCufft 0.2.2.
Note that double precision functions may only be used on devices that
support double precision. Otherwise, the emulation mode has to be
used. The performance of CUFFT was improved with CUDA 2.3, so it is
recommended to update to CUDA 2.3 when using CUFFT or JCufft, even
if you not intend to perform 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
-
Added a flag which allows throwing exceptions in case of errors to all libraries and the runtime- and driver API.
The flag provides a functionality similar to the "cutil" macros in C: If an error occurs,
an exception with a detailed error message will be thrown, enabling the programmer to
trace back the error without having to check the return value of each function
call or to obtain the error codes from JCublas.
-
Added missing texture parameter constants to JCudaDriver.
An example that uses textures can be found on the samples page.
2009-06-09: Alpha release of JCuda 0.2
- Added CUDA 2.2 support
-
Added OpenGL / JOGL interoperability
An example that uses the JOGL interoperability can be found on the samples page.
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.
|
|