JavaCL v1.0.0 RC4 is available!

Download / Install   Browse JavaDoc   Getting Started (Tutorial)   Discuss

JavaCL is a BSD-licensed library that provides object-oriented OpenCL bindings for Java, helping run massively-parallel computations on graphic cards (and/or CPUs).

The project is migrating to its own GitHub repository, where all new issues should be filed.

Release Notes

Here are the changes between 1.0.0-RC3 and 1.0.0-RC4 (see full CHANGELOG) :

  • Dropped Blas artifact from main deployment (requires addional repo since ujmp is not in Maven Central)
  • Dropped support for JNA variant of JavaCL. Migration is highly encouraged to get more features and bugfixes: [](
  • Updated to BridJ 0.7 (brings fixes and lots of performance enhancements)
  • Optimized allocation of native memory throughout the library (reusing thread-local pointer pools)
  • Optimized (CLDevice, CLPlatform).hasExtension
  • Added basic handling of structs in JavaCL Generator ([issue nativelibs4java#421](, [issue nativelibs4java#422](, [issue nativelibs4java#423](
  • Added CLBuffer.copyTo, .copyBytesTo, .copyElementsTo
  • Added CLBuffer.fillBuffer to support OpenCL 1.2 clEnqueueFillBuffer ([issue nativelibs4java#232](
  • Added CLDevice.getParent()
  • Added CLDevice.getPrintfBufferSize(), .isPreferredInteropUserSync(), .isLinkerAvailable()
  • Added CLImage.copyTo ([issue nativelibs4java#508](
  • Added CLImage.fillImage ([issue nativelibs4java#232](
  • Added CLPlatform.unloadPlatformCompiler() with automatic switch between OpenCL 1.1 clUnloadCompiler and OpenCL 1.2 clUnloadPlatformCompiler ([issue nativelibs4java#232](
  • Added CLQueue.enqueueBarrier & .enqueueMarker to support clEnqueueBarrierWithWaitList & clEnqueueMarkerWithWaitList (switching between OpenCL 1.1 and OpenCL 1.2 variants automatically) ([issue nativelibs4java#232](
  • Added CLQueue.enqueueMigrateMemObjects ([issue nativelibs4java#232](
  • Added JAVACL_LOG_CALLS=1 / -Djavacl.logCalls=true to log every native call (similar to BRIDJ_LOG_CALLS except it prints the parameter and return values)
  • Added many missing CLDevice 1.2 info getters ([issue nativelibs4java#232](,
  • Added MapFlags.WriteInvalidateRegion (CL_MAP_WRITE_INVALIDATE_REGION from OpenCL 1.2) ([issue nativelibs4java#232](
  • Fixed crash in CLPlatform.getBinaries()
  • Fixed excessive logs for deprecated features and missing OpenCL 1.1 and 1.2 functions (especially if version < deprecatedVersion)
  • Fixed [issue nativelibs4java#387]( don't call clReleaseDevice (OpenCL 1.2) unless explicitly needed
  • Fixed [issue nativelibs4java#397]( crash on Radeon due to bug in driver (attempts to get the source from a program created with clCreateProgramWithBinary yields a segfault)
  • Fixed [issue nativelibs4java#397]( major bug in CLProgram
  • Fixed [issue nativelibs4java#420]( horrible random native crash (double release, found with new -Dbridj.debug.pointer.releases=true).
  • Fixed [issue nativelibs4java#453]( don't try to load cached binaries for programs created from binaries!
  • Fixed [issue nativelibs4java#455]( when reading binaries, skip devices that are not allowed
  • Fixed [issue nativelibs4java#479]( avoid some NPEs in CLProgram.getProgramBuildInfo
  • Fixed typo: CLDevice.getOpenCLVersion -> getOpenCLCVersion



Getting started

You can read the Getting Started (Tutorial) page on the wiki to get started very quickly !

Please join the NativeLibs4Java Google Group to discuss JavaCL, get the latest news and ask for support from the growing JavaCL community.