CL_DEVICE_ADDRESS_BITS, CL_DEVICE_MAX_MEM_ALLOC_SIZE (and CL_DEVICE_GLOBAL_MEM_SIZE) should help. On GF8800GT they return 32 bits, 128MB (and 511MB). That would mean, that on this card the biggest buffer you can get is 128 MB (and theoretically have 3 such buffers and one smaller altogether, 'cuz only 511MB of 512 is accessible). So you can have 128MB/4B = 32M = 2^25 = 33554432 32bit ints or floats in a single array.
On AMD CPU, the values are 32bit, 512MB and 1024MB now.
CL_DEVICE_ADDRESS_BITS, CL_DEVICE_MAX_MEM_ALLOC_SIZE (and CL_DEVICE_GLOBAL_MEM_SIZE) should help. On GF8800GT they return 32 bits, 128MB (and 511MB). That would mean, that on this card the biggest buffer you can get is 128 MB (and theoretically have 3 such buffers and one smaller altogether, 'cuz only 511MB of 512 is accessible). So you can have 128MB/4B = 32M = 2^25 = 33554432 32bit ints or floats in a single array.
On AMD CPU, the values are 32bit, 512MB and 1024MB now.
Actually no :-) A 64bit system can address much more memory. However, the memory of the devices is limited, no matter how many bits the OS can address :-D I have a 64 bit system myself and these are the readings. You really should be able to allocate 32M ints, if you have a similar device!
Actually no :-) A 64bit system can address much more memory. However, the memory of the devices is limited, no matter how many bits the OS can address :-D I have a 64 bit system myself and these are the readings. You really should be able to allocate 32M ints, if you have a similar device!