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));