2011-06-06 21 views
7

¿Cuál es la diferencia entrecudaMemcpy - copiar un int del anfitrión al error de dispositivo

cudaMemcpy and cudaMemset?? 

¿Cómo puedo copiar un valor int del anfitrión al dispositivo? Este es el código que estoy utilizando

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

que da los siguientes errores error: argumento de tipo "int" es incompatible con el parámetro de tipo "void *" error: argumento de tipo "int" es incompatible con parámetro del tipo "const void *"

+1

La diferencia entre cudaMemcpy y cudaMemset es que uno toma un valor como fuente y el otro un puntero. Esta diferencia se hace perfectamente clara en la documentación API de las dos funciones. – talonmies

+0

Aceptar una respuesta más de 5 años después de su publicación debe ser algún tipo de registro. – talonmies

Respuesta

7

devAddXdir debe ser un puntero para que funcione ese código. Además, debe pasar addXdir por referencia al cudaMemcpy, no por valor. De esta manera:

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