I have a R9 290X with 8GB and I'm using Windows 10 Build 10041. I have installed no extra software, SDKs or drivers on this test computer.
The device claims to support allocations in one chunk of close to 4 GB, as printed out by clinfo:
|Max memory allocation:||4244635648|
However, I cannot allocate more than 2GB. I'm trying something simple such as:
eig_opencl_handle* handle = eig_opencl_init();
size_t grid_npoints = 520 * 1024 * 1024;
volume = (float*) calloc(grid_npoints, sizeof(float));
OPENCL_CHECK_ALLOC(mem_grid, handle, CL_MEM_READ_WRITE, sizeof(float)*grid_npoints); // that's an
OPENCL_CHECK(clEnqueueWriteBuffer(handle->command_queue, mem_grid, CL_TRUE, 0, sizeof(float)*grid_npoints, volume, 0, NULL, NULL));
I get an CL_MEM_OBJECT_ALLOCATION_FAILURE.
Is there something I should enable to be able to allocate large memory objects? This is an 64 bit application. I can query the maximum alloc and get the same value as clinfo.
Some more info:
|Vendor:||Advanced Micro Devices, Inc.|
|Device OpenCL C version:||OpenCL C 2.0|
|Driver version:||1756.4 (VM)|
|Version:||OpenCL 2.0 AMD-APP (1756.4)|
Best Regards, Jörn