I am working on some fairly large 3d volumes and generate gradients in both x, y and z at the same time. I have an iterative solution working on it, but am having some trouble fitting it all on the card.
The input volume is 184 by 220 by 184 in float (28.4MB). The working volumes are the same resolution, but in float4 (nearly 113.7MB a piece, 227.3MB total). Total: 255.7MB. Adding any extra volumes fails which seems to indicate a 256MB memory limit for OpenCL.
Is it possible to increase this? It is kind of small. 😛
At the moment you can't. ATI uses one UAV buffer as a whole OpenCL memory ( and as you can guess UAV buffer max size is 256MB ). So with current version of OCL you can't do anything about it.
Hmm that makes ATI OpenCL kind of worthless for my use. 😞
Do you know if nVidia cards can operate with more memory for OpenCL?
nVidia cards can use(nearly) the full device memory for opencl using the cuda sdk.
ok and what happend on nvidia if you allocate more buffers than card have memory?
for example you have 1GB card and you allocate 20 buffers per 100Mb so total will be 2GB
Setting this environment variable:
set GPU_MAX_HEAP_SIZE=512
allowed me to allocate more than 256MB buffers. I haven't used them yet, but the allocation succeded. The allocation however took quite a long time, 1 second or so.
i set GPU_MAX_HEAP_SIZE=1024
and tried allocate set of 128MB buffers.
1. allocate normaly in VRAM
2. allocate normaly in VRAM
3. allocate succssefully but all three buffers was moved to RAM
4. now all four buffers was moved back to VRAM
5. again all moved to RAM
i get error on 6 buffer so 5*128MB is my maximum.