Meu laptop tem uma nvidia geforce 740M (optimus) e eu tenho o ubuntu 15.10 instalado. Eu instalei o bumblebee com o driver nvidia-355 usando as instruções em este link. Agora é possível para mim alternar entre as placas gráficas na perfeição, apenas com o uso do optirun:
$ optirun glxgears
6763 frames in 5.0 seconds = 1352.335 FPS
7156 frames in 5.0 seconds = 1431.125 FPS
7152 frames in 5.0 seconds = 1430.255 FPS
e pode ser verificado se a placa gráfica nvidia está sendo usada:
cat /proc/acpi/bbswitch
0000:07:00.0 ON
que depois de fechar o glxgears será alterado para:
cat /proc/acpi/bbswitch
0000:07:00.0 OFF
No entanto, eu realmente preciso usar o CUDA no Ubuntu que parece impossível. Eu deveria "teoricamente" ser capaz de usar optirun para executar exemplos cuda depois de "make". mas o resultado é (e não há diferença em usar o sudo):
~/NVIDIA_CUDA-7.5_Samples/1_Utilities/deviceQuery$ optirun ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 30
-> unknown error
Result = FAIL
Então eu procurei novamente e consegui postar # 4 em esta página que é para o Ubuntu 12.04. Em que é sugerido usar:
$ sudo update-alternatives --config x86_64-linux-gnu_gl_conf
There are 3 choices for the alternative x86_64-linux-gnu_gl_conf (providing /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/nvidia-355/ld.so.conf 8604 auto mode
1 /usr/lib/nvidia-355-prime/ld.so.conf 8603 manual mode
2 /usr/lib/nvidia-355/ld.so.conf 8604 manual mode
* 3 /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf 500 manual mode
Press <enter> to keep the current choice[*], or type selection number:
E o vadammt sugeriu selecionar o nvidia-355-prime (opção número 1). Eu selecionei e poderei usar
optirun ./deviceQuery
sem problemas. NO ENTANTO, depois de executar o deviceQuery, o bbswitch não desligará a nvidia OFF automaticamente:
$ cat /proc/acpi/bbswitch
0000:07:00.0 ON
Eu verifiquei a documentação do bumblebee e parece que o "nvidia-355-prime", na verdade, é o nvidia-prime e esse comando é usado para alternar de bumblebee para nvidia-prime. Então as principais perguntas agora são:
1) É verdade que selecionar as opções "nvidia-355-prime" para nvidia-prime?
2) Se sim, existe alguma maneira de realmente ter CUDA e Bumblebee juntos (sem depender de nvidia-prime)? apenas usando o "optirun" diretamente, e não recebendo o erro desconhecido "cudaGetDeviceCount retornou 30" que mencionei?
3) Se não, é possível criar um script para automatizar o processo de alternar entre o bumblebee e o nvidia prime e atribuir um comando a ele?
4) Algum outro comentário / sugestão / recomendação / conselho / proposta?
5) Obrigado?
EDITAR: mudar para nvidia-355-prime também não funcionará mais: (