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