Programming CUDA and OpenCL: A Case Study Using Modern C++ Libraries
Denis Demidov, Karsten Ahnert, Karl Rupp, Peter Gottschling

TL;DR
This paper compares modern C++ libraries for high-level programming of CUDA and OpenCL architectures, focusing on solving differential equations, and demonstrates their effectiveness on multi-core GPUs and CPUs.
Contribution
It provides a comparative analysis of high-level C++ libraries for CUDA and OpenCL, highlighting their performance and ease of use for differential equation problems.
Findings
CUDA and OpenCL perform similarly on large problems.
OpenCL has higher overhead on small problems.
High-level libraries enable effective resource utilization without deep technical knowledge.
Abstract
We present a comparison of several modern C++ libraries providing high-level interfaces for programming multi- and many-core architectures on top of CUDA or OpenCL. The comparison focuses on the solution of ordinary differential equations and is based on odeint, a framework for the solution of systems of ordinary differential equations. Odeint is designed in a very flexible way and may be easily adapted for effective use of libraries such as Thrust, MTL4, VexCL, or ViennaCL, using CUDA or OpenCL technologies. We found that CUDA and OpenCL work equally well for problems of large sizes, while OpenCL has higher overhead for smaller problems. Furthermore, we show that modern high-level libraries allow to effectively use the computational resources of many-core GPUs or multi-core CPUs without much knowledge of the underlying technologies.
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.
