cudaMemcpy - 将一个整数从主机复制到设备时出错

9
什么是两者之间的区别?
 cudaMemcpy and cudaMemset??

我应该如何将一个int类型的值从主机复制到设备? 这是我使用的代码。
int addXdir = 1;
int devAddXdir;
cudaMalloc((void**)&devAddXdir, sizeof(int));
cudaMemcpy(devAddXdir, addXdir, sizeof(int), cudaMemcpyHostToDevice);

程序报出如下错误: error: argument of type "int" is incompatible with parameter of type "void *" error: argument of type "int" is incompatible with parameter of type "const void *"


1
cudaMemcpy和cudaMemset之间的区别在于一个以值作为源,而另一个以指针作为源。这个差异在这两个函数的API文档中非常清晰地说明了。 - talonmies
1个回答

13

devAddXdir 必须是指针才能使代码正常工作。此外,您必须通过引用将 addXdir 传递给 cudaMemcpy,而不是通过值传递。像这样:

int addXdir = 1;
int * devAddXdir;
cudaMalloc((void**)&devAddXdir, sizeof(int));
cudaMemcpy(devAddXdir, &addXdir, sizeof(int), cudaMemcpyHostToDevice);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接