About JCuda

JCuda is a library that provides Java bindings for CUDA.

The JCuda main page containing pre-built binaries and samples may be found at http://www.jcuda.org/

JCuda has been updated to version 0.3.0, intended 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 at http://www.jcuda.org/contact.html

The most important changes:

[ul]
[li]It is now possible to mix runtime- and driver API calls.
[/li][li]JCufft was extended by the functions introduced with CUFFT 3.0
[/li][li]In JCublas, all functions of CUBLAS 3.0 are available
[/li][li]The new graphics interoperability is supported (currently with limitations, see website for details)
[/li][li]The emulation mode has been deprecated in CUDA 3.0. It will no longer be supported in JCuda.
[/li][li]The license of JCuda has been changed to the GNU Lesser General Public License
[/li][/ul]

JCuda has been updated to version 0.3.1, intended for CUDA 3.1

The source code, documentation and binaries for Windows 32/64 bit and Linux 32 bit are available on the JCuda downloads site. If you would like to contribute by providing binaries for a system configuration that is not available yet, please contact me at the JCuda website.

The most important changes:
[ul]
[li]Updated to CUDA 3.1
[/li][li]The license changed to MIT/X11 license (equivalent to a 2-clause BSD license)
[/li][li]Some internal refactoring
[/li][li]Updated JavaDoc documentation
[/li][/ul]

A Utilties section has been added to the website. Currently it contains an archive with several utility classes which are similar to the “CUTIL” functions from the NVIDIA CUDA SDK samples, and the “famous” KernelLauncher class, which has been slightly updated. Further utilities may follow soon.

A release candidate (RC) for JCuda 0.3.2 has been uploaded, intended for CUDA 3.2 RC.

This release candidate is currently available only for 32bit Windows, and could not yet be tested extensively on other operating systems and architectures.

The most important changes:
[ul]
[li]The new NVIDIA CUDA libraries are now also provided for JCuda:
[/li][LIST]
[li]JCurand: Java bindings for CURAND, the NVIDIA CUDA random number generator
[/li][li]JCusparse: Java bindings for CUSPARSE, the NVIDIA CUDA sparse matrix library
[/li][/ul]
[li]Changes of the CUDA API in version 3.2 have been ported to JCuda: Some functions no longer receive an ‘unsigned int’ for memory sizes and locations, but instead use a ‘size_t’. For JCuda this means that some method parameters have changed from ‘int’ or ‘int[]’ to ‘long’ or ‘long[]’
[/li][li]The cuComplex and cuDoubleComplex types have been moved from the package jcuda.jcublas into the package jcuda, since these types are used in JCublas as well as in JCusparse
[/li][li]Some bugs have been fixed. See the change log for details.
[/li][/LIST]

A new section has been added to the JCuda website: It shows how to create an ImageJ Plugin which uses JCuda.

A minor update to JCuda 0.3.2 (final). It contains only a small bugfix, but the binaries have been updated for the most recent version of CUDA.

JCuda 0.4.0RC2 has been uploaded, intended for CUDA 4.0RC2.

This version is a release candidate. Some internals have been refactored, and the new features of CUDA 4.0 (e.g. unified addressing and peer operations) could not yet be tested.

The new API of CUBLAS (aka “CUBLAS2”) is not yet supported, but will be part of the final release.

Apart from the update to reflect the new API functions of CUDA 4.0, there have been several bugfixes. See the change log for details.

And two days later, NVIDIA publishes CUDA 4.0 final … my kingdom for a CUDA roadmap :twisted:

JCuda 0.4.0-beta1 has been uploaded. This version is inteded for CUDA 4.0 (final, build 17).

[ul]
[li]This version is still marked as a ‘beta’ version, because the new features of CUDA 4.0 could not yet be tested.
[/li][li]The new API of CUBLAS (aka “CUBLAS2”) is not yet supported, but will be part of the final release.
[/li][li]There have been a few bugfixes. See the change log for details.
[/li][/ul]

Additionally, a small Tutorial for getting started with JCuda has been added to the website.

JCuda 0.4.1RC2b has been uploaded. This version is intended for CUDA 4.1 RC2 (build 21).

[ul]
[li]This update is a Release Candidate. Not all functionalities could be tested extensively, specifically those that require a compute capability >=2 or a Linux OS.
[/li][li]This update contains bindings for the new versions of CUBLAS and CUSPARSE.
[/li][li]This update contains bindings for CUDPP 2.0
[/li][li]The KernelLauncher class from the Utilities package has been updated.
[/li][li]The old linux- and MacOS makefiles have been removed.
[/li][li]Some bugs have been fixed. See the change log for details.
[/li][/ul]

A section with general information about asynchronous operations in JCuda has been added to the website.

CUDA 4.1 (final) will most likely be released in a few days. JCuda will then be updated as soon as possible.

JCuda 0.4.1 has been uploaded. This release did not imply any significant changes or extensions of the API or functionality, but is only an update for the final version of CUDA 4.1 (build 28)

JCuda 0.4.2 has been uploaded. Again, this release did not bring many news, but is mainly an update of the binaries for CUDA 4.2, build 9.

(Some new methods for configuring the shared memory have been added, but these are not really implemented for the driver API in the NVIDIA Toolkit (at least for Win32), so they have been omitted in this release).

JCuda 0.5.0 RC (Release Candidate) has been uploaded at http://jcuda.org/

This version is intended for CUDA 5.0 Release Candidate (build 27)

[ul]
[li]The new functions of CUDA 5.0 have been added. But note that the functions for dynamic parallelism or the new texture object API could not be tested yet, since they require a Compute Capability of 3.0 or 3.5. Also, some functions have been removed in CUDA, but this should not affect JCuda users
[/li][li]The functions for setting stream callbacks are not yet supported, but will probably be supported in future versions
[/li][li]The bindings for third party libraries or beta versions (JCudpp and JNpp) are not distributed separately and no longer part of the core JCuda libraries
[/li][li]Some minor changes and bugfixes are summarized in the change log at http://jcuda.org/changelog.txt
[/li][/ul]

Again, a few days after the release of JCuda 5.0RC, NVIDIA has published the final version of CUDA 5.0.

Hey, NVIDIA: I feel honoured that you’re waiting for me, but you don’t have to … :wink:

Good to see you still support it :slight_smile:

I will write my master thesis in a around half till one year, so i will need up to date data libaries then :slight_smile:

I’ll try to support it as long as possible. On the one hand, it becomes easier, because there are fewer changes in the API in the recent versions. On the other hand, there are some challenges. The “Stream Callbacks” that have been introduced in CUDA 5.0 will require some effort on native side, but this should be doable, because OpenCL/JOCL also contains Callbacks, so I might probably reuse some code there.
I’d also like to provide better support for the extended libraries, particularly NPP, but creating nice wrappers for NPP and maintaining them properly could be more than one full time job. However, focussing on a stable support of the “core” libraries should be managable. When I see that there really is a demand for JNpp and bindings for the other extension libraries, I can increase the efforts on this.

The update for CUDA 5.0 (build 35, final) has been uploaded to http://jcuda.org/ .

The Stream Callbacks that have been introduced with CUDA 5.0 are not yet supported, but will probably be supported in a future release.

There was an update to version 0.5.0b, including a fix for the bug that could cause a CUDA_ERROR_UNKNOWN, which has been discribed in this thread: Cuda Error Unknown. The thread and the website contain a description of a simple workaround for this bug for older JCuda versions.

JCuda has been updated for CUDA 5.5. The latest version is available at http://jcuda.org/

Besides the update for the new CUDA functions, there was another bugfix: The fix that was introduced in 0.5.0b had side effects that might cause other errors. Thus, version 0.5.0b is deprecated. The bug should be fixed in the current version, and the test coverage for the different application patterns of the kernel parameters has been increased.