Published on Vision Systems blog
Developers of image processing software can accelerate their applications by taking advantage of the latest multi-core processors. But with several software frameworks now available that enable them to do so, many programmers might be a little confused as to which approach might be the most effective.
Hoping to shed some light on that subject, researchers at the Department of Computer and Information Science at Linköping University (Linköping, Sweden) have recently evaluated the effectiveness of OpenCL for programming multicore CPUs in a comparative case study with OpenMP and Intel Threading Building Blocks.
OpenMP and Intel Threading Building Blocks are two popular frameworks used to program shared memory multicore processor architectures. The OpenMP API supports multi-platform shared-memory parallel programming in C/C++ and Fortran, while the Intel Threading Building Blocks (TBB) offers an approach to expressing parallelism in a C++ program.
OpenCL, on the other hand, which was defined as a standard by the Khronos group, (Beaverton, OR, USA) focuses on programming a heterogeneous set of processors with many cores such as CPU cores, GPUs and DSP processors.
To evaluate the effectiveness of OpenCL for programming multicore CPUs in a comparative case study with OpenMP and Intel TBB, the researchers used five benchmarks: matrix multiply, LU decomposition, 2D image convolution, Pi value approximation and image histogram generation.
The evaluation included the effect of compiler optimizations, OpenCL performance on different vendors’ platforms and the performance gap between CPU-specific and GPU-specific OpenCL algorithms.
The comparative analysis entitled “OpenCL for programming shared memory multicore CPUs” can be found here.