Pregunta

Estoy teniendo un problema extraño .. He escrito un código CUDA que se ejecuta correctamente en la emulación y todos los resultados mostrarán .. Sin embargo, cuando se ejecuta en el hardware "G210" .. los resultados en la memoria de resultados son siempre 0

Me estoy pasando dos vectores al núcleo, una con variables aleatorias que el otro está inicializado a cero, las copias del código del primer vector de memoria compartida, hace algo de intercambio y otras operaciones y luego escribe de vuelta los resultados en el segundo vector ( el uno con el 0 inicial de)

Estoy utilizando doble precisión, se utiliza la bandera SM13 -arch, toda asignación de memoria también utilizan sizeof (doble) ..

He comprobado si se invoca el kernel, lo hace .. así no hay problemas aquí .. la cudaMemCpy no tiene problemas ..

lo que podría ser el problema .. :( ¿por qué sería trabajar en la emulación, pero no en HW

Estoy muy confundido .. alguna idea?

¿Fue útil?

Solución

Si no recuerdo mal, GeForce 210 no soporta Calcular Capacidad de 1,3, es decir, que no admite dobles.

Trate de volver a escribir el código para utilizar sencillos, compilar con -arch = sm_12.

Otros consejos

Modo de emulación no es una simulación precisa de la GPU - que no intenta simular el comportamiento de hilos concurrentes y todos los problemas que pueden surgir de esto. Con el fin de depurar el kernel que está probablemente va a tener que dividirlo en versiones más pequeñas hasta que pueda identificar el problema.

Emulación utiliza un compilador diferente, es toda la memoria en el host, sólo un hilo de ejecución, etc Si usted encuentra un error en la emulación, se encuentra un error en el código. Si funciona en la emulación, esto no significa que usted no tiene errores. Su pregunta es, básicamente, tengo código erróneo, lo que es mi error?

Consejo: valores de retorno de verificación de todo. Aprender a hacer la comprobación de errores. Se dan cuenta de que los errores en el dispositivo pueden aparecer de forma asíncrona con respecto al código de la CPU. Utilizar el depurador (tal vez comprar una barata GPU NVIDIA bajo extremo para hacer esto más fácil). Cuprintf darle una oportunidad si lo prefiere printf a depurar (disponible en los foros de CUDA). Pedir ayuda en los foros de NVIDIA CUDA.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top