Memory model: Defines the abstract memory hierarchy that kernels use, regardless
of the actual underlying memory architecture. The memory model closely
resembles current GPU memory hierarchies, although this has not limited adoptability
by other accelerators.
4. Programming model: Defines how the concurrency model is mapped to physical
hardware.