我有一个针对cudaMalloc功能使用的问题。实际上,它总是返回一个“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。
答案 0 :(得分:2)
在此示例中,您需要使用cudaMalloc
分配内存并将其返回的指针分配给deviceTest
,因为此变量意味着指向设备中的内存。
这样的事情可以解决问题
int hostTest = 12;
int *deviceTest;
cudaMalloc((void **)&deviceTest,sizeof(int));
cudaMemcpy(deviceTest, &hostTest,sizeof(int),cudaMemcpyHostToDevice);