debugging - guide - path cuda ubuntu
cuda infinite kernel (1)
El lenguaje de programación CUDA y la arquitectura CUDA actualmente no admiten kernels infinitos. Sugiero que consideres la sugerencia de Roger.
Si desea continuar, le sugiero que agregue el siguiente código de depuración a su kernel:
- Incremente una variable en memoria fija cada N relojes (puede querer una ubicación diferente para cada SM) y,
- Lea periódicamente una ubicación de memoria que la CPU puede actualizar para indicarle al kernel que salga.
Este es un software de vigilancia.
Puede usar clock () o clock64 () para controlar la frecuencia con la que lo hace (1) y (2).
Puede usar cuda-gdb para depurar su problema.
Los bucles infinitos no son compatibles con el idioma. El compilador puede estar eliminando el código. Es posible que desee revisar el PTX y SASS. Si el compilador está generando código incorrecto, puede falsificarlo haciendo que el compilador piense que hay una condición de salida válida.
Estoy trabajando en una aplicación para la cual es necesario ejecutar un kernel CUDA indefinidamente. Tengo un hilo de CPU que escribe stg en una lista y gpu lee esa lista y se reinicia (al menos para empezar). Cuando escribo dentro del kernel
while(true)
{
//kernel code
}
el sistema cuelga Sé que la GPU todavía está procesando, pero no pasa nada por supuesto. Y no estoy seguro de que el reinicio en la lista ocurra.
Debo mencionar que la GPU utilizada para los cálculos no se usa para la visualización, por lo que no hay problema de vigilancia.
El sistema operativo es Ubuntu 11.10 y cuda toolkit 4.1. Podría usar cualquier ayuda / ejemplos / enlaces para escribir con éxito el kernel infinito.