OCCA: A unified approach to multi-threading languages
David S Medina, Amik St-Cyr, T. Warburton

TL;DR
OCCA is a C++ library that enables portable high-performance computing across multiple threading languages by using run-time compilation and macro expansions, supporting OpenMP, OpenCL, and CUDA.
Contribution
It introduces a unified kernel language that expands to various threading platforms, simplifying multi-platform development.
Findings
OCCA achieves portable high performance across different architectures.
Supports multiple threading languages including OpenMP, OpenCL, and CUDA.
Demonstrates effectiveness with finite difference, spectral element, and discontinuous Galerkin methods.
Abstract
The inability to predict lasting languages and architectures led us to develop OCCA, a C++ library focused on host-device interaction. Using run-time compilation and macro expansions, the result is a novel single kernel language that expands to multiple threading languages. Currently, OCCA supports device kernel expansions for the OpenMP, OpenCL, and CUDA platforms. Computational results using finite difference, spectral element and discontinuous Galerkin methods show OCCA delivers portable high performance in different architectures and platforms.
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 · Seismic Imaging and Inversion Techniques · Physics of Superconductivity and Magnetism
