OCCA is an open-source library that facilitates programming in an environment containing different types of devices. It abstracts devices and lets the user pick at run-time, for example: CPUs, GPUs, Intel’s Xeon Phi, FPGAs.
OCCA abstracts the variety of device programming languages into one kernel language, the OCCA kernel language (OKL). OKL minimally extends C and restricts the user to write parallel code that is JIT compiled.
OCCA is freely available under an MIT license.
In CEED, OCCA is primarily involved in the efforts of the Software and Finite Element thrusts.
For more information, see the OCCA website: http://libocca.org.