title: Best approach for GPGPU/CUDA/OpenCL in Java?
body: <p>General-purpose computing on graphics processing units (<a href="http://en.wikipedia.org/wiki/GPGPU" rel="noreferrer">GPGPU</a>) is a very attractive concept to harness the power of the GPU for any kind of computing. </p>
  
  <p>I'd love to use GPGPU for image processing, particles, and fast geometric operations.</p>
  
  <p>Right now, it seems the two contenders in this space are CUDA and OpenCL. I'd like to know:</p>
  
  <ul>
  <li>Is OpenCL usable yet from Java on Windows/Mac?</li>
  <li>What are the libraries ways to interface to OpenCL/CUDA?</li>
  <li>Is using JNA directly an option?</li>
  <li>Am I forgetting something?</li>
  </ul>
  
  <p>Any real-world experience/examples/war stories are appreciated.</p>