Confusion with clCreateBuffer

Hello,

I am confused by clCreateBuffer. To my understanding, it creates a buffer object and allocates the memory on devices. Right?
However, if there are multiple devices, which one is used for the creation of buffer object? There is no argument for it.
Can someone give an explanation? Thanks!

ZHAO Peng

It is created on all devices in the context, or at least marked as being available on all devices. It is up to the OpenCL runtime to ensure that the latest data is available on a particular device when required.

It is created on all devices in the context, or at least marked as being available on all devices. It is up to the OpenCL runtime to ensure that the latest data is available on a particular device when required.

Are the physical memories allocated on all devices in the context when creating buffer object with NULL data pointer? How about with non-null data pointer?

Are the physical memories allocated on all devices in the context when creating buffer object with NULL data pointer? How about with non-null data pointer?

Hi ZHAO,

Please see my reply here. I hope it’ll be helpful.

– Liad Weinberger.