Grave bajo rendimiento de CUDA frente a Windows, ¿convertir a Intel en la GPU principal?

Grave bajo rendimiento de CUDA frente a Windows, ¿convertir a Intel en la GPU principal?

Realicé la instalación de GPU tensorflow en un sistema de arranque dual ( Windows 10y Ubuntu 16.04.x)

Ambos sistemas operativos tienen aproximadamente las mismas versiones de controladores.

Lenovo P50 laptop with Nvidia Quadro M1000M    

Windows 376.51 nvidia driver version
Ubuntu  375.66 nvidia driver version

Entreno un modelo de aprendizaje profundo, cada conjunto de entrenamiento requiere una cantidad de tiempo muy diferente

Windows 10   + Tensorflow 1.3 GPU + CUDA =  8 min. per epoch
Ubuntu 16.04 + Tensorflow 1.3 GPU + CUDA = 45 min. per epoch

La instalación de Ubuntu se realizó a través de todos los valores predeterminados apt-get(no la instalación de fuentes), ypip

Mi único pensamiento hasta ahora... es que debo usar la GPU NVIDIA para pintar los gráficos... y no poder utilizar TODA la GPU para la computación... ¿hay alguna manera de verificar esto? He instalado todo en ambos iguales... incluyendo los parches paraCUDA 8.x

Ni siquiera tengo claro cuál es el problema, pero parece que los controladores están configurados para usar Optimus... ¿tal vez necesito cambiarlo a un perfil diferente?

ingrese la descripción de la imagen aquí

Idea uno: Podría intentar mañana volver a compilar tensorflow desde las fuentes... con todas las optimizaciones de CPU dentro de Ubuntu 16.x... tal vez la instalación de pip sea más dolorosa que la instalación binaria en Windows...

Idea dos: si lo anterior no hace nada, ingresaré al BIOS y forzaré los gráficos integrados de Intel... haré una reinstalación e intentaré instalar los gráficos noveua... algo así:

Parece que esta es una computadora portátil habilitada para "Optimus". No puedo apagar completamente la GPU nvidia para renderizar, solo habilito el modo híbrido. Quizás haga una instalación nueva... elimine todos los controladores de nvidia y vea si puedo hacer que X funcione de esa manera...

http://guanghan.info/blog/en/my-works/building-our-personal-deep-learning-rig-gtx-1080-ubuntu-16-04-cuda-8-0rc-cudnn-7-tensorflowmxnetcaffedarknet/

"So I went to BIOS and set the integrated graphics as default and 
restart. Remember to switch the HDMI from the port on GTX1080 to that 
on the motherboard. Now the display works well. I successfully 
installed Ubuntu following its prompt guides."

https://devtalk.nvidia.com/default/topic/991849/-solved-run-cuda-on-dedicated-nvidia-gpu-when-connecting-monitors-to-intel-hd-graphics-is-this-possible -/

When installing the NVIDIA display driver, be sure to:

1. not install the openGL libs (there are command line options with 
driver runfile installers or CUDA runfile installers to allow this)
2. make sure not to make any changes to the xorg.conf configuration.

Respuesta1

Después de mucha caza, búsqueda... unión... ¡Encontré el problema con éxito y lo solucioné! Sí, la GPU Intel en Windows se estaba usando mientras que en Linux no se utilizaba... obligando a la GPU NVIDIA a dibujar la pantalla y perder recursos.

Reinstalé una memoria USB Ubuntu 16.04 nueva encima de mi sistema anterior.

During reinstallation choose updates, but don't use 3rd party libraries

Una vez instalado, debes verificar que estás en el modo de controlador Intel Nouveau... en lugar del controlador propietario de Nvidia.

Ahora vino la(s) parte(s) rara(s)

Un usuario aquí había señalado el mismo problema... pero para implementaciones de escritorio

https://devtalk.nvidia.com/default/topic/991849/cuda-setup-and-installation/-solved-run-cuda-on-dedicated-nvidia-gpu-when-connecting-monitors-to-intel-hd -gráficos-es-esto-posible-/

básicamente...

En resumen, para que esto funcione, es necesario

1. make sure you have enabled onboard graphics in the BIOS settings (or set it as primary)

Hice el modo híbrido... ya que no hay opción de solo inteligencia

2. install both xorg intel driver and nvidia/cuda drivers

Aquí tienes que pasar las banderas.

--no-opengl-files //for the driver install I choose latest (384)

--no-openfl-libs // cuda 8.0 + patch here ..

asegúrese de desactivar nouveau... y todos los pasos descritos en las instrucciones...

forma principal de saber que estás bien... instálalo glmark2y asegúrate siempre de que esté generando información

3. start nvidia-settings, and go to the PRIME settings page, set Intel (Power Saving Mode) as default
4. modify your .bashrc and set LD_LIBRARY_PATH to at least contain /usr/local/cuda/lib64:/usr/lib/nvidia-XXX where XXX in my case is 375.

Esta carpeta no existía para mí en absoluto. Todavía agregué el valor predeterminado LD_LIBRARY_PATHy PATHlo describí en las instrucciones de cuda posteriores a la instalación.

4. logout to restart X or reboot
5. run glmark2 to confirm GL status

ya que debería haberlo instalado sin instalar archivos opengl... esto quizás sea innecesario

<strike>6. (update) if the libGL printed from step 5 points to nvidia's driver folder, you need to remove/rename the libGL.so*/libGLX.so*/libGLdispatch.so* under nvidia driver folder so that your OS can pick up the mesa libGL library.</strike>


7. run nvidia-smi to list your dedicated NVIDIA GPU, and run your CUDA program, you should not see any errors.

Esto no funcionó para mí hasta que lo ejecuté nvidia-modprobeuna vez... y de repente todo funcionó.

actualización: lamentablemente un reinicio rompió la configuración. Aún no estoy seguro de cómo solucionarlo...

información relacionada