On my card cudaGetDeviceProperties, reports the following information:
Device GeForce 8800 GTS / Version 1.0 / Memory 319.7MB
I interpreted this as 319.7MB being available for usage in CUDA. But then I tried to allocate 8192x8192x4 bytes with cudaMalloc and it failed (returns a 0 pointer).
After some experimentation it appears the maximum amount I can allocate successfully is 227 MB. What happened to the other 93MB? Is it used by the operating system? If so, this is really a lot. Is there a way to query the real amount of memory available for usage on the card?