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.
For more information, see the OCCA website: http://libocca.org.