2011-06-06 44 views
7

是什么cudaMemcpy - 从主机复制一个int到设备错误

cudaMemcpy and cudaMemset?? 

如何从主机复制一个int值,设备之间的区别? 这是我使用

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

它提供了以下错误 错误代码:类型的参数“INT”是类型为“无效*”的参数不兼容 错误:类型的参数“INT”不兼容参数类型为“const void *”

+1

cudaMemcpy和cudaMemset之间的差别在于一个取值为源,另一个指针。这两个函数的API文档中明确地说明了这种差异。 – talonmies 2011-06-06 08:42:20

+0

发布后5年内接受答案必须是某种记录。 – talonmies 2016-08-23 20:06:57

回答

7

devAddXdir必须是该代码工作的指针。另外,您必须通过参考cudaMemcpy来通过addXdir,而不是通过值。像这样:

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