Introducción

Un posible problema que puede aparecer es que el kernelExecTimeout esté activado. Esto proboca que la ejecución de un kernel no pueda exceder un tiempo predefinido.

Comprobación del temporizador

A continuación se presenta un código que nos permitirá comprobar el estado de ese temporizador en tiempo de ejecución.

   cudaDeviceProp propiedades;
   int device = -1;
   // Preguntar que device esta seleccionado
   printf("Preguntanto por DEVICE: s\n",cudaGetErrorString(cudaGetDevice(&device)));
   // Preguntar por las propiedades del device seleccionado
   printf("Comprobando propiedades de la Tarjeta: %s\n",cudaGetErrorString(cudaGetDeviceProperties (&propiedades, device)));

   if (propiedades.kernelExecTimeoutEnabled)
      printf("Temporizadores de la tarjeta activados\n");
   else
      printf("Temporizadores de la tarjeta desactivados\n");

Solución

Si se está utilizando un sistema Linux, un posible procedimiento sería:

Parar la X y usar en modo texto desde un terminal. Una forma de hacerlo es arrancar la máquina en nivel 3 (init 3: arranca sin entorno gráfico).

Una vez que la maquina está arrancada si intentamos ejecutar algún ejecutable cuda, obtendremos un error que nos idicara que no hay ningún dispositvo cuda.

Por tanto hay que montar el dispositvo. Una forma de hacerlo es startx y una vez que están las X arrancadas matarlas con ctrl+C.

 
proyectos/climar/gpu/kernelexectimeout.txt · Última modificación: 2012/10/08 17:58 (editor externo)
 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki