2010-10-28 5 views
7

Oye, Estoy usando Visual Studio 2008, con CUDA 3.2. Estoy tratando de depurar en una función con esta firma:¿Cómo depurar el código del núcleo de CUDA usando Visual Studio 2008?

MatrixMultiplication_Kernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width); 

puedo entrar en la función, sin embargo, cuando me meto en la función que no me deja pasar por encima de cualquier parte del código y me dice que no hay fuente está disponible. ¿Alguien sabe cómo depurar esto correctamente?

¡Gracias!

Respuesta

6

Actualización: Parallel Nsight ahora es gratuito y admite la depuración con una sola GPU en su sistema.

Para depurar el código del dispositivo dentro de Visual Studio, necesitará Parallel Nsight. La versión estándar es gratuita y ofrece la depuración que necesita, así como la creación de perfiles del código del dispositivo.

Si desea depurar en una sola máquina, necesitará dos GPU (ya que la GPU que ejecuta el código se detendrá cuando llegue a un punto de interrupción y, por lo tanto, su pantalla también se bloqueará). Sin embargo, no es necesario que sean GPU de gama alta, cualquier cosa desde G92 en adelante servirá (incluida la mayoría de las GPU de Fermi enumeradas en here).

+0

¿Es eso cierto para CUDA-GDB también? – Abhinav

-4

No se puede depurar el código del kernel CUDA utilizando Visual Studio. Visual Studio solo puede depurar programas que se ejecutan en la CPU.

De hecho, no creo que pueda depurar el código del kernel CUDA en Windows en absoluto. CUDA solía tener un modo de emulación de host, pero eso fue eliminado en 3.0. Las únicas herramientas de depuración disponibles son cuda-gdb y ocelot, y, hasta donde yo sé, ninguna de ellas es compatible con Windows.

+1

Esto es incorrecto. NVIDIA Parallel Nsight se puede utilizar para la depuración de dispositivos. – mch

1

¿Está utilizando Nsight? Vanilla Visual Studio no puede ingresar al código del dispositivo, pero con Nsight, esto es posible. Desafortunadamente, las limitaciones del modelo de controlador de dispositivo de Windows significa que hay algunas restricciones serias. Solía ​​ser que se necesitaban dos máquinas para realizar la depuración. La máquina de destino ejecutaría el código CUDA en su GPU, y tenía que estar usando el controlador TCC. La máquina host ejecutaría Visual Studio y controlaría el objetivo. Parece que ahora es posible depurar código CUDA en la misma máquina, siempre que tenga dos GPU, una para cálculo y otra para pantalla. Hay una serie de otros problemas mencionados en el user guide.

Puede que esta no sea una respuesta aceptable, pero si puede compilar su código en Linux, puede usar cuda-gdb para depurar kernels. cuda-gdb es parte del kit de herramientas Linux CUDA.

+0

"t ahora es posible depurar código CUDA en la misma máquina, siempre que tenga dos GPU, una para cálculo y otra para pantalla". Exactamente. Y ambos tienen que ser G92 o GT200. (Entonces, por ejemplo, los modelos Fermi 470/480 están fuera). ¿Qué porcentaje de usuarios de CUDA describe? – user434507

+0

Lamentablemente, las limitaciones técnicas y el hecho de que CUDA no ha existido tanto tiempo significa que solo aquellos que tienen mucho dinero pueden hacer este tipo de depuración. El resto tiene que tomar otros enfoques. – mch

+1

Consulte esta lista para GPU compatibles: http: //developer.nvidia.com/object/nsight-requirements.html. Fermi 470/480 es compatible con la versión 1.5. Es cierto que necesita dos GPU (de lo contrario, bloquearía su pantalla en un punto de interrupción), pero no es necesario que sean de alta gama, ¡el costo de entrada es bastante bajo! – Tom

12

Ahora puede depurar en una sola máquina con una sola GPU usando NSight.

Pensé en actualizar esto, ya que las respuestas anteriores ya no son correctas (ya no necesita 2 GPU) y me envió en la dirección incorrecta por un tiempo.

+1

Puede depurarlo en una GPU solo si no usa X o tiene SM3.5, [fuente] (http://docs.nvidia.com/cuda/cuda-gdb/index.html#single-gpu- depuración-con-escritorio-administrador-corriendo) – janisz

+0

Tengo dos tarjetas Tesla C1060. Estoy construyendo una máquina GPU para mi laboratorio y la estaré ejecutando en Linux. Entonces, según su comentario, necesito tener una tarjeta gráfica extra (probablemente a bordo) corriendo la pantalla/servidor X si quiero usar CUDA-gdb? Gracias – Abhinav

Cuestiones relacionadas