shared memory and double precision

I want to make a procedure that can calculate dot product of two vectors but I don’t want to use cublasDdot.

I read the reduction example in SDK and implemented my own dot product using shared memory however I got a warning message like this: " warning : Double is not supported. Demoting to float "

My GPU is Testla 10T(or 1050) and it supports double, because I got correct result from cublasDdot which is a double precision function.

I think the warning is from “shared double sdata”.

My own procedure can not give correct result using double type, while cublasDdot can; if I use float type, my function gives the same result as cublas’. So does this mean CUDA doesn’t have double type shared memory? or something else?

I want to make a procedure that can calculate dot product of two vectors but I don’t want to use cublasDdot.

I read the reduction example in SDK and implemented my own dot product using shared memory however I got a warning message like this: " warning : Double is not supported. Demoting to float "

My GPU is Testla 10T(or 1050) and it supports double, because I got correct result from cublasDdot which is a double precision function.

I think the warning is from “shared double sdata”.

My own procedure can not give correct result using double type, while cublasDdot can; if I use float type, my function gives the same result as cublas’. So does this mean CUDA doesn’t have double type shared memory? or something else?

You need to compile with -arch sm_13 or higher. The lower compute capabilities generated by default (for broad GPU compatibility) do not support doubles.

You need to compile with -arch sm_13 or higher. The lower compute capabilities generated by default (for broad GPU compatibility) do not support doubles.

Thanks a lot, problem solved.

Thanks a lot, problem solved.