Severo desempenho abaixo do CUDA vs Windows, tornar a GPU Intel primária?

Severo desempenho abaixo do CUDA vs Windows, tornar a GPU Intel primária?

Eu passei pela instalação do tensorflow da GPU em um sistema dualboot ( Windows 10e Ubuntu 16.04.x)

ambos os sistemas operacionais têm aproximadamente as mesmas versões de drivers

Lenovo P50 laptop with Nvidia Quadro M1000M    

Windows 376.51 nvidia driver version
Ubuntu  375.66 nvidia driver version

Eu treino um modelo de aprendizado profundo, cada conjunto de treinamento leva um tempo muito diferente

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

A instalação do Ubuntu foi feita através de todos os padrões de apt-get(não instalação de fontes) epip

Meu único pensamento até agora... é que devo usar a GPU NVIDIA para pintar os gráficos.. e não conseguir utilizar TODA a GPU para computação.. existe uma maneira de verificar isso? Instalei tudo em ambos iguais.. incluindo os patches paraCUDA 8.x

Ainda não sei qual é o problema, mas parece que os drivers estão configurados para usar o Optimus. Talvez eu precise mudar para um perfil diferente?

insira a descrição da imagem aqui

Idéia um: posso tentar amanhã recompilar o tensorflow a partir das fontes .. com todas as otimizações de CPU dentro do Ubuntu 16.x .. talvez a instalação do pip seja mais dolorosa do que a instalação binária no Windows ...

Idéia dois: Se acima não fizer nada, irei para o BIOS e forçarei os gráficos integrados da Intel .. reinstalarei e tentarei instalar os gráficos noveua .. mais ou menos assim:

Parece que este é um laptop habilitado para "Optimus". Não consigo desligar completamente o gpu nvidia para renderização, apenas habilitar o modo híbrido. Talvez eu faça uma nova instalação .. remova todos os drivers da nvidia e veja se consigo fazer o X funcionar dessa maneira ..?

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-while-connecting-monitors-to-intel-hd-graphics-is-this-possível -/

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.

Responder1

Depois de muita caça, pesquisa.. coalescência.. Encontrei o problema com sucesso e resolvi-o! Sim, a GPU Intel no Windows estava sendo usada enquanto no Linux não era utilizada... forçando a GPU NVIDIA a desenhar a tela e perder recursos.

Eu reinstalei um novo Ubuntu 16.04 USB Stick em cima do meu sistema anterior.

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

Uma vez instalado, você deve verificar se está no modo de driver Intel Nouveau.. em vez do driver proprietário da Nvidia.

Agora vieram as partes estranhas

Um usuário aqui apontou o mesmo problema.. mas para implantações de desktop

https://devtalk.nvidia.com/default/topic/991849/cuda-setup-and-installation/-solved-run-cuda-on-dedicated-nvidia-gpu-while-connecting-monitors-to-intel-hd -gráficos-isso-é-possível-/

basicamente...

Em resumo, para que isso funcione, você precisa

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

Eu fiz o modo híbrido .. já que não há opção somente Intel

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

aqui você precisa passar as bandeiras

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

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

certifique-se de desativar o nouveau .. e todas as etapas descritas nas instruções.

principal maneira de saber se você está bem. Instale glmark2e sempre garanta que está gerando informações

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 pasta não existia para mim. Eu ainda adicionei o padrão LD_LIBRARY_PATHe PATHdescrevi nas instruções pós-instalação do cuda

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

já que você deveria ter instalado sem instalar arquivos opengl .. isso talvez seja desnecessário

<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.

isso não funcionou para mim até que eu corri nvidia-modprobeuma vez.. então, de repente, tudo funcionou.

atualização: infelizmente uma reinicialização quebrou a configuração. ainda não tenho certeza de como consertar...

informação relacionada