This topic only applies to Intel® Many Integrated Core Architecture (Intel® MIC Architecture).
This programming model is suitable when the data exchanged between the CPU and the coprocessor consists of scalars, arrays, and structs that can be copied from one variable to another using a simple
Data that flows between the CPU and the coprocessor must have a flat structure.
Data that is created and used entirely on the CPU, or used entirely within the offloaded regions, can be arbitrarily complex, including multi-dimensional arrays, C++ classes of any types, and any composition of data structures using pointers, arrays and structs.
In this model, you control the data transfer between the CPU and the coprocessor. The data transfer consists of densely packed data structures. You can select the data to be transferred at the point of offload, without needing to declare or allocate it in any special way.