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 is more complex than scalars, arrays, and structs that can be copied from one variable to another using a simple
memcpy. The data to be exchanged between the CPU and the coprocessor can be arbitrarily complex. It can use pointers, and any composition of structs and pointers.
Data exchanged in this model is unrestricted in data structural complexity. However, at the point of offload, the data must already be in the shared memory region, either as a result of its being declared _Cilk_shared, or because it was allocated using _Offload_shared_malloc() or _Offload_shared_aligned_malloc().