Allocate big global memory buffer

Why a GPU with 512Mb of VRAM is letting me to allocate a max of 128Mb for a global memory buffer?

In the OpenCL spec I see this:

The minimum value should be 128Mb and the maximum 512Mb(or even more due to memory virtualisation! )

what I cannot understand is why if a GPU has 2Gb of VRAM I cannot allocate a continuous linear buffer of, almost, 1500Mb(2Gb - the framebuffer aprox ). Why 128Mb max? It’s a non-sense for me.


I believe the way the spec is written, it’s real purpose is to limit the MINIMUM maximum. There is no MAXIMUM maximum. This lays out what OpenCL vendors MUST do. There is competition among vendors, so over time some may up what they support, if they feel customers want it. I take it you in that camp.

Yes you can definitely allocate more. For example I’m working with multiple 300 MB arrays right now without any problems

Did you have to manually allow that, or is there some other reason why you can allocate that much memory?

I didn’t have to do anything… it just works