OpenCL and OpenMP are the most commonly used programming models
for multi-core processors. They are also fundamentally different
in their approach to parallelization. In this paper, we focus on
comparing the performance of OpenCL and OpenMP. We select three
applications from the Rodinia benchmark suite (which provides
equivalent OpenMP and OpenCL implementations), and carry out
experiments with different datasets on three multi-core
platforms. We see that the incorrect usage of the multi-core
CPUs, the inherent OpenCL fine-grained parallelism, and the
immature OpenCL compilers are the main reasons that lead to the
OpenCL poorer performance. After tuning the OpenCL versions to
be more CPU-friendly, we show that OpenCL either outperforms or
achieves similar performance in more than 80\% of the cases.
Therefore, we believe that OpenCL is a good alternative for
multi-core CPU programming.