我正在尝试将数据复制到常量内存。但是由于我对cudaMemcpyToSymbol函数的使用误解,无法成功。我试图按照这里的说明来操作。
下面是一些代码:
__device__ __constant__ double var1;
__device__ __constant__ int var2;
int main(){
//... some code here...
double var1ToCopy = 10.1;
int var2ToCopy = 1;
void * p1 = &var1ToCopy;
void * p2 = &var2ToCopy;
cudaStatus = cudaMemcpyToSymbol((void*)&var1,p1,sizeof(double),0,cudaMemcpyHostToDevice);
if (cudaStatus != cudaSuccess){
return -1;
}
cudaStatus = cudaMemcpyToSymbol((void*)&var2,p2,sizeof(int),0,cudaMemcpyHostToDevice);
if (cudaStatus != cudaSuccess){
return -1;
}
//... and some code here...
}
我知道这是一个非常愚蠢的问题,但我花了几个小时搜索答案,却没有任何进展。
cudaStatus = cudaMemcpyToSymbol(var1,&var1ToCopy,sizeof(double));
但是Visual Studio用红线划掉了它。这让我感到困惑,所以我没有尝试编译项目。现在我认为有时候不听从VS的建议是一个好习惯。 - artur me