Lack double support?

I have a piece of code that copying over a single-element double array to the GPU, multiplying its value by two, and then returning the value back home. Upon printing out the value copied back to the host, I found that the value was always the original value, not the multiplied-by-2 value. I changed every instance of double to float, and then it worked perfectly.

I didn’t know that the GPU didn’t support double values. I am using Windows XP 32-bit Professional, Visual Studio 2008, CUDA 3.0 Toolkit, Tesla C1060 cards. As I understand it, all of those support doubles? Apparently not.

What am I missing here?


Compute 1.3 and 2.0 devices support double precision (this includes the C1060). What you are missing is a compiler flag, probably. You need to pass -arch=sm_13 to nvcc to turn on double support.

Terrific! By default, the GPU Architecture was set to “sm_10”, and I did not know this. I suppose it makes sense to default to the lowest architecture. Anyway, thanks a bundle, avidday!