Global memory doubt

Hi everybody,

i have a doubt about global memory.

I don’t understand if each OpenCL device has its own global memory or if global memory is a generic region of the whole system.

By looking the OpenCL specification 2.1 ( https://www.khronos.org/registry/cl/specs/opencl-2.1.pdf) at page 39 it seems that the global memory is a region shared between all the possible OpenCL devices, and not a part of each device.
Instead, by looking the OpenCL specification 1.0 (https://www.khronos.org/registry/cl/specs/opencl-1.0.pdf) at page 25 it seems that a specific OpenCL device integrates its own global memory.

So, can someone help me to understand where the global memory resides ?

OpenCL 2.x has a different memory model than OpenCL 1.x, to fit SVM into the model. In OpenCL 1.x, all memory regions were device-specific. In OpenCL 2.x, the global and constant memory regions are global to the context. However, due to the option to cache global memory on the device, this changes very little, unless one actually uses SVM or the various atomic features.