JavaCL (and OpenCL4Java) v1.0-beta-5 is available !

Download / Browse JavaDoc / Discuss<

Click here to launch the latest JavaCL ParticlesDemo : Advanced OpenCL/OpenGL settings screen in JavaCL's Particles Demo

Here are the main changes from this new version :

  • Now using a nice configuration dialog when launching ParticlesDemo : has optional OpenCL settings with “Fastest”, “Normal” and “Safest” presets + detailed platform and device choice (with optional OpenGL sharing choice).
  • Added optional context properties map argument to JavaCL.createContext (can be nulled out)
  • Fixed issue #18: CLImage.write calls enqueueImageRead !
  • Documented workaround for Linux crashes (issue #20) : http://code.google.com/p/javacl/wiki/TroubleShootingJavaCLOnLinux
  • Fixed issue #21: NIOUtils.put() doesn’t accept ByteBuffer
  • Fixed issue #25: CLEvent.waitFor bug causes segfault
  • OpenCL 1.1 support :

    • CLContext.createUserEvent()
    • CLUserEvent.setStatus(int), setCompleted()
    • CLEvent.setCallback(status, callbac), setCompletionCallback(callback)
    • CLBuffer.createSubBuffer(usage, offset, length)
    • CLContext.getDeviceCount()
    • CLDevice.getOpenCLVersion()
    • CLDevice.isHostUnifiedMemory()
    • CLDevice.getNativeVectorWidthXXX() methods
    • CLMem.setDestructorCallback(callback)
    • CLKernel.getPreferredWorkGroupSizeMultiple()
    • CLKernel.enqueueNDRange overload with potentially non-null globalOffsets
    • CLImageFormat.ChannelOrder.Rx, RGx, RGBx
  • Faster enums
  • Check for cl_amd_fp64 in CLDevice.isDoubleSupported()
  • Fixed CLProgram.getBinaries()
  • Fixed issue #22 (maven pom issue)

Additionally, an experimental of JavaCL from JNA to BridJ is now available from the Downloads.

While it shouldn’t be considered for production use, it passes all JavaCL automatic tests, runs the demos fine, is smaller (JAR weighs 750 kB instead of 1.8 MB) and presumably marginally faster (overhead per-function call about 5x smaller).

Feedback on this prototype would be highly appreciated : to test it you just have to exchange javacl’s jar with the javacl-bridj JAR (no API change at all).