C++ 如何使用已初始化的变量

C++ 如何使用已初始化的变量,c++,pointers,cuda,C++,Pointers,Cuda,我有一些工作代码。。。其中,我分配一个设备变量指针,如下所示: float *d_var; cudaMalloc(&d_var, sizeof(float) ); 稍后在我的代码中,我想将此变量的内容复制到本地变量(ref): 太棒了!但是使用cudamaloc是慢的 因此,我想在不使用cudamaloc的情况下,使用\uuu设备\uuu定义来分配变量: __device__ float d_var = 1000000000.0f; 这非常有效,我知道在这种情况下d_var已正确初

我有一些工作代码。。。其中,我分配一个设备变量指针,如下所示:

float *d_var;
cudaMalloc(&d_var, sizeof(float) );
稍后在我的代码中,我想将此变量的内容复制到本地变量(ref):

太棒了!但是使用
cudamaloc
慢的


因此,我想在不使用
cudamaloc
的情况下,使用
\uuu设备\uuu
定义来分配变量:

__device__ float d_var = 1000000000.0f;
这非常有效,我知道在这种情况下d_var已正确初始化,我可以像以前一样使用它完成所有工作。我一直在打印它的内容,所以我知道它有正确的内容。但是,当我现在尝试使用与以前相同的代码将内容复制到主机var时:

checkCudaErrors(cudaMemcpy(&h_var, &d_var, sizeof(float), cudaMemcpyDeviceToHost));
我得到一个非常模糊的错误:

invalid argument cudaMemcpy(&h_var, &d_var, sizeof(float), cudaMemcpyDeviceToHost)
我尝试将变量引用为
&d_-var
d_-var
*d_-var
,但没有效果。 非常感谢您的帮助

谢谢

呸,我想出来了。。。。 而不是调用
cudaMemcpy()我需要使用
cudaMemcpyFromSymbol()

呸,我知道了。。。。 而不是调用
cudaMemcpy()我需要使用
cudaMemcpyFromSymbol()

invalid argument cudaMemcpy(&h_var, &d_var, sizeof(float), cudaMemcpyDeviceToHost)
checkCudaErrors(cudaMemcpyFromSymbol(&h_var, d_var, sizeof(float), 0, cudaMemcpyDeviceToHost));