15.10 + Optimus + bumblebee + CUDA

第一:我一直在ubuntu 15.10上与我的愚蠢的optimus笔记本电脑挣扎一周。 因此,不要只是通过谷歌搜索一些关键字而不阅读整个事物加上超链接来“重复”我。

我的笔记本电脑有一个nvidia geforce 740M(optimus),我安装了ubuntu 15.10。 我使用此链接中的说明安装了bumblebee和nvidia-355驱动程序。 现在我可以完美地切换图形卡,只需使用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 

并且可以检查是否正在使用nvidia图形卡:

 cat /proc/acpi/bbswitch 0000:07:00.0 ON 

关闭glxgears后将更改为:

 cat /proc/acpi/bbswitch 0000:07:00.0 OFF 

但是,我真的需要在ubuntu中使用CUDA,这似乎是不可能的。 我应该“理论上”能够使用optirun在“make”之后运行cuda示例。 但结果是(和使用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 

所以我再次搜索并在此页面中发布了#4, 这是针对Ubuntu 12.04的。 其中建议使用:

 $ 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  to keep the current choice[*], or type selection number: 

并且vadammt建议选择nvidia-355-prime(选项号1)。 我选择了,我将能够使用

 optirun ./deviceQuery 

没问题。 但是,在运行deviceQuery之后,bbswitch将不再自动关闭nvidia OFF:

 $ cat /proc/acpi/bbswitch 0000:07:00.0 ON 

我检查了大黄蜂的文档,似乎是“nvidia-355-prime”,实际上是nvidia-prime,该命令用于从大黄蜂切换到nvidia-prime。 所以现在的主要问题是:

1)选择“nvidia-355-prime”切换到nvidia-prime是否正确?

2)如果是的话,无论如何实际上有CUDA和Bumblebee在一起(不依赖于nvidia-prime)? 通过直接使用“optirun”,并没有得到我提到的未知错误“cudaGetDeviceCount返回30”?

3)如果不是,是否可以创建一个脚本来自动化在bumblebee和nvidia prime之间切换的过程并为其分配命令?

4)任何其他意见/建议/建议/建议/提案?

5)谢谢?

编辑:改为nvidia-355-prime将不再适用:(