The Introduction to OCCA section section goes over how the API abstracts backends for handling things like

  • Memory management
  • Code execution

However, each backend can have their own own programming paradigm and language. Our goal is to not only abstract the API but the programming of backend devices.

In this section, we introduce the OCCA Kernel Language, or OKL (like mon-ocle), which aims to abstract backend programming models. OKL extends C to add a few keywords, and limits the programming model to achieve the programming abstraction.

We start by exploring the parallel programming model in OKL and move on to discussing features and restrictions in the language.