GNU/Linux >> Tutoriales Linux >  >> Linux

Pena de rendimiento de CUDA cuando se ejecuta en Windows

Hay una gran cantidad de gastos generales al enviar comandos de hardware de GPU a través de la pila WDDM.

Como ha descubierto, esto significa que bajo WDDM (solo) los comandos de GPU pueden "agruparse" para amortizar esta sobrecarga. El proceso de procesamiento por lotes puede (probablemente lo hará) introducir cierta latencia, que puede ser variable, dependiendo de qué más esté sucediendo.

La mejor solución en Windows es cambiar el modo operativo de la GPU de WDDM a TCC, lo que se puede hacer a través de nvidia-smi comando, pero solo es compatible con las GPU Tesla y ciertos miembros de la familia de GPU Quadro, es decir, no GeForce. (También tiene el efecto secundario de evitar que el dispositivo se use como un adaptador de pantalla acelerado de Windows, lo que podría ser relevante para un dispositivo Quadro o algunas GPU Fermi Tesla más antiguas).

AFAIK, no existe un método oficialmente documentado para eludir o afectar el proceso de procesamiento por lotes de WDDM en el controlador, pero extraoficialmente escuché, de acuerdo con [email protected] en este enlace, el comando a emitir después de la llamada al kernel cuda es cudaEventQuery(0); lo que puede/debería hacer que la cola de lotes de WDDM se "vacíe" a la GPU.

Como señala Greg, el uso extensivo de este mecanismo eliminará el beneficio de amortización y puede hacer más daño que bien.

EDITAR: avanzando hasta 2016, una recomendación más reciente para un vaciado de "bajo impacto" de la cola de comandos de WDDM sería cudaStreamQuery(stream);

EDIT2: Con controladores recientes en Windows, debería poder colocar las GPU de la familia Titan en modo TCC, suponiendo que tenga alguna otra GPU configurada para la pantalla principal. El nvidia-smi herramienta le permitirá cambiar de modo (usando nvidia-smi --help para más información).

Puede encontrar información adicional sobre el modelo de controlador TCC en la guía de instalación de Windows, incluido que puede reducir la latencia de los inicios del kernel.

La declaración sobre el soporte de TCC es general. No todas las GPU Quadro son compatibles. El determinante final de soporte para TCC (o no) en una GPU en particular es el nvidia-smi herramienta. Nada aquí debe interpretarse como una garantía de soporte para TCC en su GPU en particular.


Linux
  1. .bash_profile no se obtiene cuando se ejecuta Su?

  2. ¿Inconveniente al usar un chroot en computación de alto rendimiento?

  3. ¿Codificación de un archivo zip?

  4. ¿No se puede eliminar el archivo, incluso cuando se ejecuta como raíz?

  5. Automatización de comandos en ejecución en Linux desde Windows usando PuTTY

Ponga en funcionamiento podman en Windows usando Linux

Uso de Windows Performance Analyzer para solucionar problemas de rendimiento

Script PHP:¿detecta si se ejecuta en Linux o Windows?

No se puede leer el certificado cuando se ejecuta en el contenedor Docker de Linux:funciona en Windows

Ejecutando linux virtual usando qemu en windows

Examen de varios puertos al ejecutar NetCat (nc)