copying data to constant memory failed at sm_20

Several posts in this forum or stackoverflow described a similar but not the same problem that I have come across. I am programming on a Tesla C2050, and the problem arises when I try to copy data to constant memory space using cudaMemcpyToSymbol. The syntax comes from CUDA API REFERENCE MANUAL. Here’s my code:


int main()



   double thickness=1.5;

   HandleDeviceError(cudaMemcpyToSymbol("thickness_device", &thickness, sizeof(double), 0, cudaMemcpyHostToDevice));


   return 0;



__constant__ double thickness_device;

When the program is executed with compute_10, sm_10, no error occurs, but the data thickness is somehow NOT copied to thickness_device at all. When it is executed with compute_20, sm_20, an error messange is thrown: invalid device symbol.

Could anyone help me with this problem? I appreciate any help!

Does it work if you move the cudaMemcpyToSymbol() call to, i.e. to the same file where the symbol is declared?