The Feasibility of Using OpenCL Instead of OpenMP for Parallel CPU Programming
Kamran Karimi

TL;DR
This paper compares OpenCL and OpenMP for CPU programming, analyzing their performance and ease of use in compute-heavy tasks, and finds that OpenCL can be a viable alternative to OpenMP under certain conditions.
Contribution
It provides a detailed comparison of OpenCL and OpenMP for CPU parallel programming, highlighting scenarios where OpenCL performs competitively.
Findings
OpenCL and OpenMP each excel in different execution scenarios.
OpenCL can match OpenMP performance with high thread invocation counts.
Using OpenCL requires careful consideration of potential pitfalls.
Abstract
OpenCL, along with CUDA, is one of the main tools used to program GPGPUs. However, it allows running the same code on multi-core CPUs too, making it a rival for the long-established OpenMP. In this paper we compare OpenCL and OpenMP when developing and running compute-heavy code on a CPU. Both ease of programming and performance aspects are considered. Since, unlike a GPU, no memory copy operation is involved, our comparisons measure the code generation quality, as well as thread management efficiency of OpenCL and OpenMP. We evaluate the performance of these development tools under two conditions: a large number of short-running compute-heavy parallel code executions, when more thread management is performed, and a small number of long-running parallel code executions, when less thread management is required. The results show that OpenCL and OpenMP each win in one of the two…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Distributed and Parallel Computing Systems · Advanced Data Storage Technologies
