The design of the OCCA (like oca-rina) API is based on the functionality of physical devices. The main two being
- Memory management
- Code execution
We generalize different device architectures by wrapping these two concepts in a single API. We’ll showcase the basics by going through a simple example where we add 2 vectors.
- The physical device running the application code. This is usually a CPU processor.
- A physical device we’re communicating with, whether the same physical device as the host or an offload device. Examples include CPU processors, GPUs, and Xeon Phi.
- A function that runs on a device