cudaMemcpy 总是 returns 我 cudaErrorInvalidValue

cudaMemcpy always returns me cudaErrorInvalidValue

我对 cudaMalloc 函数的使用有疑问。事实上,它总是 returns 我一个 "cudaErrorInvalidValue" 错误,即使在像下面这个例子这样非常简单的情况下也是如此:

cudaError_t error;
int hostTest = 12;
int* deviceTest = NULL;
error = cudaMemcpy(deviceTest, &hostTest, sizeof(int), cudaMemcpyHostToDevice);

但是,cudaMalloc 运行良好。这很奇怪。 我的构建配置了计算能力 v5.0 (compute_50,sm_50),我的显卡是 Geforce GTX 960M。

在此示例中,您需要使用 cudaMalloc 分配内存并将指针 returns 分配给 deviceTest,因为此变量意味着指向设备中的内存。

像这样应该可以解决问题

 int hostTest = 12;
 int *deviceTest;
 cudaMalloc((void **)&deviceTest,sizeof(int));
 cudaMemcpy(deviceTest, &hostTest,sizeof(int),cudaMemcpyHostToDevice);