On GPUs having more than 3GB memory aboard it does not seem possible to make OpenCL runtime expose more than 3 GB of RAM.
Changing the GPU_MAX_HEAP_SIZE variable as described here only allows to decrease the amount of exposed RAM, but not to increase it.
For example, on an R9 290 having 4GB of memory setting GPU_MAX_HEAP_SIZE to 100 results in 3GB to become available. Changing the variable to 50 caused only 2GB to be exposed, so the variable is respected, but there seems to be an absolute maximum of 3GB.
R9 290X with 8GB RAM only allows to use up to 3GB as well both in 32-bit and 64-bit applications.
Why is it happening? Are there any plans to expose more memory in future versions of driver?