In December of 2008, we did a blog post answering questions from customers and prospects about the use of OpenCL for Jacket.  If you have not reviewed that blog post to gain some insight into our progress you can access it here - <a href="../2008/12/30/opencl/">http://blog.accelereyes.com/blog/2008/12/30/opencl/</a>.

Some things have changed since that original post.  For example, NVIDIA now provides an OpenCL driver, toolkit, programming guide, and SDK examples.  Given the new tools available and the new Fermi hardware, we ran some tests on the <a href="http://www.nvidia.com/object/product_tesla_C2050_C2070_us.html" target="_blank">Tesla c2050</a> to compare OpenCL performance to CUDA performance.  The Tesla C2050 is an amazing beast of a card, providing upto 512 Gigaflops of double precision arithmetic (at peak).

Before we present the benchmarks, we should comment on the programmability of OpenCL versus CUDA.  OpenCL is notably more difficult to program and debug than CUDA since OpenCL documentation, tools, and scientific   computation libraries are still very limited.  Considering these handicaps, only a few matrix / vector operations were considered for this benchmark.  All the vector operations are modified versions of the SDK examples provided by NVIDIA.  All the tests were for single precision numbers.

Here are the results:

<a href="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/MatrixMultiply.png"><img class="alignnone size-large wp-image-331" title="MatrixMultiply" src="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/MatrixMultiply-683x1024.png" alt="MatrixMultipleFermi" width="546" height="819" /></a>

<a href="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/DotProduct.jpg"><img class="alignnone size-large wp-image-333" title="DotProduct" src="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/DotProduct-660x1024.jpg" alt="" width="528" height="819" /></a>

<a href="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/Transpose.jpg"><img class="alignnone size-large wp-image-335" title="Transpose" src="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/Transpose-683x1024.jpg" alt="" width="546" height="819" /></a>

<a href="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/VectorAdd.jpg"><img class="alignnone size-large wp-image-336" title="VectorAdd" src="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/VectorAdd-660x1024.jpg" alt="VectorAddFermiCUDAOpenCL" width="528" height="819" /></a>

<a href="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/reductions.jpg"><img class="alignnone size-large wp-image-337" title="reductions" src="http://blog.accelereyes.com/blog/wp-content/uploads/2010/05/reductions-1024x739.jpg" alt="reductionsfermicudaopencl" width="737" height="532" /></a>

The results indicate that there is an overhead when using OpenCL with smaller data sizes, which seems to disappear at larger data sizes. Currently it is unknown whether the overhead is due to the time taken to launch a kernel in OpenCL or something else within the API.

This is our report of the current status of OpenCL relative to CUDA on the new NVIDIA hardware.  We continue to watch the progress of OpenCL, ATI, and other GPU  computing initiatives.  Our focus is to deliver the best GPU computing  platform on the planet for engineers, scientists, analysts, and  students, and we guarantee that  <a href="http://www.accelereyes.com/products/jacket">Jacket</a> customers will always have the very best in GPU hardware choices  for your applications.  As the GPU landscape continues to evolve, your Jacket code will simply get faster without you having to do anything new.  So, we invite you to sit back, relax, and enjoy watching your Jacket code scale with each new release!

<strong>Useful links:</strong>

1)  <a href="http://www.anandtech.com/show/2977/nvidia-s-geforce-gtx-480-and-gtx-470-6-months-late-was-it-worth-the-wait-/6">http://www.anandtech.com/show/2977/nvidia-s-geforce-gtx-480-and-gtx-470-6-months-late-was-it-worth-the-wait-/6</a>

2)  <a href="http://www.pcgameshardware.com/aid,743498/Geforce-GTX-480-and-GTX-470-reviewed-Fermi-performance-benchmarks/Reviews/">http://www.pcgameshardware.com/aid,743498/Geforce-GTX-480-and-GTX-470-reviewed-Fermi-performance-benchmarks/Reviews/</a>

3) <a href="http://www.appleinsider.com/articles/08/12/10/nvidia_pioneering_opencl_support_on_top_of_cuda.html">http://www.appleinsider.com/articles/08/12/10/nvidia_pioneering_opencl_support_on_top_of_cuda.html</a>

4)  http://www.sisoftware.co.uk/?d=qa&amp;f=gpu_opencl&amp;a=AMD

5)  <a href="http://unigine.blogspot.com/2010/02/cuda-vs-opencl-vs-directcompute.html">http://unigine.blogspot.com/2010/02/cuda-vs-opencl-vs-directcompute.html</a>