  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.
