OpenCV-CL: Computer vision with even more OpenCL acceleration

Hi everyone!

With our APP SDK 2.9 release  and OpenCV 2.4.7 just around the corner, OpenCL is picking up even more momentum and making OpenCV even more attractive. That’s great news for the developer community!

What’s nice is that the same code runs on all OpenCL devices, including: APUs, discrete GPUs, multi-core CPUs, with support for all major operating systems. With little (or no) incremental effort, you have the same code executed on modern heterogeneous compute platforms taking full advantage of the platform’s capabilities! Of course, you can also run non-OpenCL code on a CPU, but by running numerically intensive and highly data parallel code run on the GPU, one can achieve higher performance (throughput) and lower power consumption. This also frees up the CPU for other applications.

OpenCV 2.4.7, about to be released, further expands the already significant capabilities of OpenCL, inside OpenCV. A very noteworthy addition is expanding the OpenCL implementation into the Machine Learning (aka “ml”) module, accelerating in OpenCL the Support Vector Machine (aka “SVM”) functionality, and opening the door to multiple recognition and classification tasks. During our OpenCV session in APU13 (November 11-13 at the San Jose Convention Center), we will go over in more detail the various developments and enhancements in OpenCV 2.4.7.

With the view towards the future, and OpenCL 2.0 in particular, there is a significant and ground breaking development! About a year ago, we asked the question: Is it possible run the same code on both CPUs and GPUs, and have the OpenCV runtime libraries determine if OpenCL capable devices are present, and use hardware acceleration if they are? By that I do not mean running OpenCL on CPU  vs. running OpenCL on GPU – that already works. What I mean is run a native C++ implementation on CPU vs. an OpenCL implementation on the GPU, if, at runtime, it is determined that the system supports OpenCL.

The answer to that question is “Yes!” We call it “Transparent API,” and it will accomplish exactly that. Please join us at APU13 conference, for a preview of this OpenCV 3.0 capability, presented jointly by Itseez and AMD.

Last but not least, for the benefit of our developers, we have included one more OpenCV-CL sample to our newest AMD APP SDK (version 2.9).  We call it “Gesture Recognition,” as we are implementing plumbing that is very relevant for that task, bringing together OpenNI ( with OpenCL, and OpenCV. More details in APU13!

“Computer vision needs ever higher performance and I applaud the move towards OpenCL for OpenCV in AMD’s App SDK 2.9.”  Gary Bradski, OpenCV foundation.

Please visit us at AMD developer central where you will find resources including community forums to help you create your Heterogeneous Computing solutions.  And, as always, you can get the latest OpenCV source code in github. Please contribute to the development of the OpenCL module, and please stay tuned for more updates as we work to make computer vision faster via heterogeneous compute, and even easier to integrate, moving into the OpenCL 2.0 era!

Dr. Harris Gasparakis is the OpenCV-CL project manager, technical lead, and evangelist. His postings are his own opinions and may not represent AMD’s positions, strategies or opinions. Links to third party sites, and references to third party trademarks, are provided for convenience and illustrative purposes only.  Unless explicitly stated, AMD is not responsible for the contents of such links, and no third party endorsement of AMD or any of its products is implied.

1For best results with APP SDK 2.9, we recommend you update to AMD Catalyst 13.11 beta drivers or newer.


One Response

  1. Alex


    “A very noteworthy addition is expanding the OpenCL implementation into the Machine Learning (aka “ml”) module, accelerating in OpenCL the Support Vector Machine (aka “SVM”) functionality”

    I can’t find any information in the OpenCV API reference []

    So how do you train SVMs in parallel using OpenCV?