Installing Cuda with Bumblebee

The question is sort of between a driver related problem and a laptop problem, so I guess Hardware/Driver is somewhat the right place.

I am very very new to openSuse as the story goes as: I got a MSI GE60 with an Nvidia 860M card. Trying to install Ubuntu in UEFI dual boot with Windows 10 was painful and my cuda installations either did not work or the nvidia driver installation messed up the system completely.
So eventually I decided to give suse a try. Installation worked mainly ok (I did it twice, first time secure boot worked, second time I had to switch it off. Who knows why, but thats a different story) Next wanted the graphics to work. As lspci detects the VGA and Nvidia, I figured I should go for bumblebee. Following SDB:NVIDIA Bumblebee - openSUSE Wiki everything seems to work.

Now what troubles me is the lines that states:

If you plan to use the Nvidia graphics card for CUDA programming it is important to notice that the bumblebee nvidia driver is newer than the one provided in the CUDA package, so you will have to install this first, then the CUDA 7.0 package, then reinstall this package for the graphics to work correctly.

First this is cuda 7.5 now and next, how would I do that. Is it really that simple? Following the simple instructions from Nvidia got me in big trouble already twice on Ubuntu…

…so what about…

I know that the .run file lets me choose to install the nvidia driver. Would it be ok just to install the toolkit but not the driver, or am I missing something then.
If I install the drivers, does this not mess up the bumblebee installation? Is that just fixed by reinstalling it?
I have seen posts about disabling nvidia drivers first, or even remove purge, playing with*.conf files etc.
Although here bumblebee - How can I get nVidia CUDA or OpenCL working on a laptop with nVidia discrete card/Intel Integrated Graphics? - Ask Ubuntu it looks simple.

Anyone with experience? Suggestions are appreciated.

There is a large question if cuda will work at all with NVIDIA Optimus set ups. Only NVIDIA can answer.

I manage to run CUDA on Optimus system. I run 42.1 with nVidia driver.

#zypper se nvidia
S | Name                          | Summary                                                                       | Type       
--+-------------------------------+-------------------------------------------------------------------------------+-----------
  | nvidia-bumblebee              | Installer for the proprietary graphics driver for GeForce 6xxx and newer GPUs | srcpackage
i | nvidia-bumblebee              | Installer for the proprietary graphics driver for GeForce 6xxx and newer GPUs | package    
i | nvidia-bumblebee-32bit        | Installer for the proprietary graphics driver for GeForce 6xxx and newer GPUs | package    
  | nvidia-computeG02             | NVIDIA driver for computing with GPGPU                                        | package    
i | nvidia-computeG03             | NVIDIA driver for computing with GPGPU                                        | package    
  | nvidia-computeG04             | NVIDIA driver for computing with GPGPU                                        | package    
  | nvidia-gfxG02-kmp-default     | NVIDIA graphics driver kernel module for GeForce 6xxx and newer GPUs          | package    
  | nvidia-gfxG02-kmp-pv          | NVIDIA graphics driver kernel module for GeForce 6xxx and newer GPUs          | package    
i | nvidia-gfxG03-kmp-default     | NVIDIA graphics driver kernel module for GeForce 8xxx and newer GPUs          | package    
  | nvidia-gfxG03-kmp-pv          | NVIDIA graphics driver kernel module for GeForce 8xxx and newer GPUs          | package    
  | nvidia-gfxG04-kmp-default     | NVIDIA graphics driver kernel module for GeForce 400 series and newer         | package    
  | nvidia-gfxG04-kmp-pv          | NVIDIA graphics driver kernel module for GeForce 400 series and newer         | package    
i | nvidia-glG03                  | NVIDIA GL libraries for OpenGL acceleration                                   | package    
  | nvidia-glG04                  | NVIDIA GL libraries for OpenGL acceleration                                   | package    
  | nvidia-texture-tools          | NVIDIA Texture Tools                                                          | package    
i | nvidia-uvm-gfxG03-kmp-default | NVIDIA Unified Memory kernel module                                           | package    
  | nvidia-uvm-gfxG03-kmp-pv      | NVIDIA Unified Memory kernel module                                           | package    
  | nvidia-uvm-gfxG04-kmp-default | NVIDIA Unified Memory kernel module                                           | package    
  | nvidia-uvm-gfxG04-kmp-pv      | NVIDIA Unified Memory kernel module                                           | package    
  | x11-video-nvidiaG02           | NVIDIA graphics driver for GeForce 6xxx and newer GPUs                        | package    
  | x11-video-nvidiaG03           | NVIDIA graphics driver for GeForce 8xxx and newer GPUs                        | package    
  | x11-video-nvidiaG04           | NVIDIA graphics driver for GeForce 400 series and newer                       | package

#zypper se bumble
S | Name                   | Summary                                                                       | Type       
--+------------------------+-------------------------------------------------------------------------------+-----------
  | bumblebee              | NVidia Optimus support for GNU/Linux aimed at stability                       | srcpackage
i | bumblebee              | NVidia Optimus support for GNU/Linux aimed at stability                       | package    
  | nvidia-bumblebee       | Installer for the proprietary graphics driver for GeForce 6xxx and newer GPUs | srcpackage
i | nvidia-bumblebee       | Installer for the proprietary graphics driver for GeForce 6xxx and newer GPUs | package    
i | nvidia-bumblebee-32bit | Installer for the proprietary graphics driver for GeForce 6xxx and newer GPUs | package

#zypper se cuda
S | Name                            | Summary                                                                             | Type    
--+---------------------------------+-------------------------------------------------------------------------------------+--------
  | cuda                            | CUDA meta-package                                                                   | package
i | cuda-7-5                        | CUDA 7.5 meta-package                                                               | package
i | cuda-command-line-tools-7-5     | CUDA command-line tools                                                             | package
i | cuda-core-7-5                   | CUDA core tools                                                                     | package
i | cuda-cublas-7-5                 | CUBLAS native runtime libraries                                                     | package
i | cuda-cublas-dev-7-5             | CUBLAS native dev links, headers                                                    | package
i | cuda-cudart-7-5                 | CUDA Runtime native Libraries                                                       | package
i | cuda-cudart-dev-7-5             | CUDA Runtime native dev links, headers                                              | package
i | cuda-cufft-7-5                  | CUFFT native runtime libraries                                                      | package
i | cuda-cufft-dev-7-5              | CUFFT native dev links, headers                                                     | package
i | cuda-curand-7-5                 | CURAND native runtime libraries                                                     | package
i | cuda-curand-dev-7-5             | CURAND native dev links, headers                                                    | package
i | cuda-cusolver-7-5               | CUDA solver native runtime libraries                                                | package
i | cuda-cusolver-dev-7-5           | CUDA solver native dev links, headers                                               | package
i | cuda-cusparse-7-5               | CUSPARSE native runtime libraries                                                   | package
i | cuda-cusparse-dev-7-5           | CUSPARSE native dev links, headers                                                  | package
i | cuda-documentation-7-5          | CUDA documentation                                                                  | package
i | cuda-driver-dev-7-5             | CUDA Driver native dev stub library                                                 | package
i | cuda-drivers                    | CUDA Driver meta-package                                                            | package
i | cuda-gdb-src-7-5                | Contains the source code for cuda-gdb                                               | package
i | cuda-license-7-5                | CUDA licenses                                                                       | package
  | cuda-minimal-build-7-5          | Minimal CUDA 7.5 toolkit build packages.                                            | package
i | cuda-misc-headers-7-5           | CUDA misc headers                                                                   | package
i | cuda-npp-7-5                    | NPP native runtime libraries                                                        | package
i | cuda-npp-dev-7-5                | NPP native dev links, headers                                                       | package
i | cuda-nvrtc-7-5                  | NVRTC native runtime libraries                                                      | package
i | cuda-nvrtc-dev-7-5              | NVRTC native dev links, headers                                                     | package
  | cuda-repo-opensuse131           | Contains configuration files needed to set up access to the NVIDIA CUDA repository. | package
  | cuda-repo-opensuse132-7-0-local | Contains configuration files needed to set up access to the NVIDIA CUDA repository. | package
i | cuda-runtime-7-5                | CUDA Runtime 7.5 meta-package                                                       | package
i | cuda-samples-7-5                | Contains an extensive set of example CUDA programs.                                 | package
i | cuda-toolkit-7-5                | CUDA Toolkit 7.5 meta-package                                                       | package
i | cuda-visual-tools-7-5           | CUDA visual tools                                                                   | package

to run compiler I start in a bash window by running

optimus bash

so optimus is running and then compile your code or run nsight from that command line
EDIT : Have to look into how to list what version :confused:

**linux-ikd7:~ #** rpm -qa | grep nvidia
**nvidia**-glG03-352.39-0.x86_64
**nvidia**-gfxG03-kmp-default-352.39_k3.16.6_2-0.x86_64
**nvidia**-computeG03-352.39-0.x86_64
**nvidia**-bumblebee-352.55-1.1.x86_64
**nvidia**-uvm-gfxG03-kmp-default-352.39_k3.16.6_2-0.x86_64
**nvidia**-bumblebee-32bit-352.55-1.1.x86_64
**linux-ikd7:~ #** 
**linux-ikd7:~ #**rpm -qa | grep cuda
**cuda**-cusolver-dev-7-5-7.5-18.x86_64
**cuda**-npp-dev-7-5-7.5-18.x86_64
**cuda**-command-line-tools-7-5-7.5-18.x86_64
**cuda**-**cuda**rt-dev-7-5-7.5-18.x86_64
**cuda**-cusolver-7-5-7.5-18.x86_64
**cuda**-misc-headers-7-5-7.5-18.x86_64
**cuda**-**cuda**rt-7-5-7.5-18.x86_64
**cuda**-runtime-7-5-7.5-18.x86_64
**cuda**-cublas-7-5-7.5-18.x86_64
**cuda**-visual-tools-7-5-7.5-18.x86_64
**cuda**-curand-7-5-7.5-18.x86_64
**cuda**-drivers-352.39-0.x86_64
**cuda**-core-7-5-7.5-18.x86_64
**cuda**-documentation-7-5-7.5-18.x86_64
**cuda**-nvrtc-dev-7-5-7.5-18.x86_64
**cuda**-driver-dev-7-5-7.5-18.x86_64
**cuda**-cufft-dev-7-5-7.5-18.x86_64
**cuda**-nvrtc-7-5-7.5-18.x86_64
**cuda**-cusparse-dev-7-5-7.5-18.x86_64
**cuda**-toolkit-7-5-7.5-18.x86_64
**cuda**-npp-7-5-7.5-18.x86_64
**cuda**-7-5-7.5-18.x86_64
**cuda**-license-7-5-7.5-18.x86_64
**cuda**-samples-7-5-7.5-18.x86_64
**cuda**-cufft-7-5-7.5-18.x86_64
**cuda**-cusparse-7-5-7.5-18.x86_64
**cuda**-cublas-dev-7-5-7.5-18.x86_64
**cuda**-gdb-src-7-5-7.5-18.x86_64
**cuda**-curand-dev-7-5-7.5-18.x86_64
**linux-ikd7:~ #** 
**linux-ikd7:~ #**rpm -qa | grep bumble
**bumble**bee-3.2.1-22.1.x86_64
nvidia-**bumble**bee-352.55-1.1.x86_64
nvidia-**bumble**bee-32bit-352.55-1.1.x86_64

As you see there are 352.39 and 352.55 versions of nvidia driver but somehow it works on my systems (on laptop with 520m, second laptop with 660m)

Install every packages, easiest in yast2 for me, all at once.

blacklist nouveau

**linux-ikd7:~ # **echo "blacklist nouveau" >>/etc/modprobe.d/50-blacklist.conf
**linux-ikd7:~ # **echo "options nouveau modeset=0" >>/etc/modprobe.d/50-blacklist.conf
**linux-ikd7:~ #** mkinitrd

Add yourself to bumblebee-group and enable bumblebee

**linux-ikd7:~ #** useradd -G bumblebee {username}
**linux-ikd7:~ #** systemctl enable bumblebeed
**linux-ikd7:~ #** systemctl start bumblebeed 

… and restart computer

Thank you all, this looks all quite promising and encouraging.

As mentioned above, installing Bublebee I used zypper as I followed this page https://en.opensuse.org/SDB:NVIDIA_Bumblebee
It does not mention:

echo "options nouveau modeset=0" >>/etc/modprobe.d/50-blacklist.conf

but I get the point, and it surely does not hurt.

@quinness Did you install cuda using the download from the nvidia page and followed their instructions or are there repositories to use with yast or zypper?

I downloaded the CUDA 7.5 local rpm, unpacked it, added the folder to local rpm repository and installed them. You can install the downloaded rpm but, as I remember you have to install the downloaded rpm and then restart yast2 and then install the cuda packages.

Thanks, I will try that the moment I have time.
I will comment here on success or failure (first one, I hope).

Updated nVidia drivers, these are for 13.2 but working for Leap.
http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64
Yesterday I upgraded bumblebee drivers to 325.63 and looked around for similar cuda drivers nd found that link.
Downloaded drivers with 352.63

cuda-drivers-352.63-0.x86_64.rpm
gpu-deployment-kit-352.63-0.x86_64.rpm
nvidia-computeG03-352.63-0.x86_64.rpm
nvidia-gfxG03-kmp-default-352.63_k3.16.6_2-0.x86_64.rpm
nvidia-gfxG03-kmp-desktop-352.63_k3.16.6_2-0.x86_64.rpm
nvidia-glG03-352.63-0.x86_64.rpm
nvidia-uvm-gfxG03-kmp-default-352.63_k3.16.6_2-0.x86_64.rpm
nvidia-uvm-gfxG03-kmp-desktop-352.63_k3.16.6_2-0.x86_64.rpm
x11-video-nvidiaG03-352.63-0.x86_64.rpm

All drivers are same version.

Save to your update folder, where you extracted CUDA package

wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/cuda-drivers-352.63-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/gpu-deployment-kit-352.63-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/nvidia-computeG03-352.63-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/nvidia-gfxG03-kmp-default-352.63_k3.16.6_2-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/nvidia-gfxG03-kmp-desktop-352.63_k3.16.6_2-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/nvidia-glG03-352.63-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/nvidia-uvm-gfxG03-kmp-default-352.63_k3.16.6_2-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/nvidia-uvm-gfxG03-kmp-desktop-352.63_k3.16.6_2-0.x86_64.rpm"
wget "http://developer.download.nvidia.com/compute/cuda/repos/opensuse132/x86_64/x11-video-nvidiaG03-352.63-0.x86_64.rpm"

Hi guys,

sorry for coming back to this so late.
The good news first. In contrast to Ubuntu, Suse is still working after me messing around with graphic drivers. I am impressed.
The bad news: it is not working. optirun returns the famous

Cannot access secondary GPU - error: Could not load GPU driver

I have

$lspci -v
    00:000:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller])
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 1107
        Flags: bus master, fast devsel, latency 0, IRQ 45
        Memory at f7400000 (64-bit, non-prefetchable) [size=4]
        Memory at d0000000 (64-bit, prefetchable) [size=256]
        I/O ports at f000 [size=64]
        Expansion ROM at <unassigned> [disabled]
        Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
        Capabilities: [d0] Power Management version 2
        Capabilities: [a4] PCI Advanced Features
        Kernel driver in use: i915
        Kernel modules: i915

    01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 860M] (rev ff) (prog-if ff)
        !!! Unknown header type 7f
        Kernel modules: nouveau

having the

options nouveau modeset=0

put or not does not seem to make a difference nor does the bumblebee suggested change in 50-bbswitch.conf from

load_state=0

to -1

trying to install drivers gives


jr@linux:~> sudo zypper install nvidia-gfxG03-kmp-desktop
Retrieving repository 'X11:Cinnamon:Current' metadata .......................................................................................................................................................[done]
Building repository 'X11:Cinnamon:Current' cache ............................................................................................................................................................[done]
Loading repository data...
Reading installed packages...
'nvidia-gfxG03-kmp-desktop' is already installed.
No update candidate for 'nvidia-gfxG03-kmp-desktop-352.39_k3.16.6_2-0.x86_64'. The highest available version is already installed.
Resolving package dependencies...
    
Nothing to do.

So I guess the drivers are there somewhere, while the lspci does not show them. And I don’t get why it says nouveau, if this is in 50-blacklist.conf

Any ideas? Thanks.[/size][/size][/size]

…not really sure what i changed, but now lspci gives


01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 860M] (rev a2)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 1107
        Flags: bus master, fast devsel, latency 0, IRQ 16
        Memory at f6000000 (32-bit, non-prefetchable) [size=16]
        Memory at e0000000 (64-bit, prefetchable) [size=256]
        Memory at f0000000 (64-bit, prefetchable) [size=32]
        I/O ports at e000 [size=128]
        Expansion ROM at f7000000 [disabled] [size=512]
        Capabilities: [60] Power Management version 3
        Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [78] Express Endpoint, MSI 00
        Capabilities: [100] Virtual Channel
        Capabilities: [250] Latency Tolerance Reporting
        Capabilities: [258] L1 PM Substates
        Capabilities: [128] Power Budgeting <?>
        Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
        Capabilities: [900] #19
        Kernel modules: nouveau

…in any case, the nouveau-problem remains.

cheers.[/size][/size][/size][/size][/size]

…ah…some more info:


jr@linux:/usr/lib64/nvidia> optirun --debug whoami
 4548.994818] [DEBUG]optirun version 3.2.1 starting...
 4548.994832] [DEBUG]Active configuration:
 4548.994835] [DEBUG] bumblebeed config file: /etc/bumblebee/bumblebee.conf
 4548.994837] [DEBUG] X display: :8
 4548.994838] [DEBUG] LD_LIBRARY_PATH: /usr/lib64/nvidia:/usr/lib/nvidia
 4548.994840] [DEBUG] Socket path: /var/run/bumblebee.socket
 4548.994842] [DEBUG] Accel/display bridge: auto
 4548.994844] [DEBUG] VGL Compression: proxy
 4548.994846] [DEBUG] VGLrun extra options: 
 4548.994847] [DEBUG] Primus LD Path: /usr/lib64/primus:/usr/lib/primus
 4548.994865] [DEBUG]Using auto-detected bridge virtualgl
 4549.025748] [INFO]Response: No - error: Could not load GPU driver

 4549.025764] [ERROR]Cannot access secondary GPU - error: Could not load GPU driver

 4549.025767] [DEBUG]Socket closed.
 4549.025782] [ERROR]Aborting because fallback start is disabled.
 4549.025786] [DEBUG]Killing all remaining processes.

Did you install the nvidia-bumblebee driver?

You need either nouveau or nvidia-bumblebee driver. If you installed the NVIDA driver before the bumblebee stuff you must remove before adding the bumblebee packages

Ok, thanks for this info.

So far, this is how I did it:
According to the bumblebee installation guide I installed bumblebee including the graphics driver. (Unfortunately I never tried the optirun glxspheres at that moment). Afterwards I installed the CUDA stuff. I guess that is why I have the nvidia drivers. Following the guide I the installed the bumblebee again, including the graphics driiver. However, I did not manually remove the nvidia drivers.

So to proceed I would remove the nvidia drivers and reinstall the bumblebee driver? I will have to figure out how to remove those properly, though.

Cheers.

(P.S. Out of curiosity, any idea why it states nouveau, even though that is blacklisted?)

Ouch the problem is that these are not separate things nvidia-bumblebee is just the same as the NVIDA driver with some package changes the stops the installation and use of the nvida version of the mesa drivers which allows the Intel to work. Adding the nvidia-bumblebee driver without removing the normal NVIDIA leaves stuff behind. I think to clear it up you must install again the normal driver then properly remove it before installing nvidia-bumblebee.

Well, I removed the NVIDIA drivers using YAST. Now searching for nvidia looks like


[v] bumblebee
[v] libdrm_nouveau2
[v] libdrm_nouveau2-32bit
[v] nvidia-bumblebee
[v] nvidia-bumblebee-32bit
[v] xf86-video-nouveau
 ] asusfan
 ] gpu-deployment-kit
 ] nvdock
 ] nvidia-computeG03
 ] nvidia-gfxG03-kmp-default
 ] nvidia-gfxG03-kmp-desktop
 ] nvidia-glG03
 ] nvidia-texture-tools
 ] nvidia-uvm-gfxG03-kmp-default
 ] nvidia-uvm-gfxG03-kmp-desktop
 ] x11-video-nvidiaG03
 ] xf86-video-nv

I followed again the steps from the Bumblebee installation guide with respect to nvidia drivers.
However, the mouse is again lagging as before bumblebee installation. So one step backwards here. So I uninstalled something that I shouldn’t?

Moreover optirun says


[Error] The Bumblebee daemon has not been started yet or the socket path /var/run/bumblebee.socket was incorrect.
[Error] Could not connect to bumblebee daemon - is it running?

Oh man…why must this be so complicated…that is starting to get frustrating…lets try to stay optimistic.

@gogalthorp your help is really appreciated. I am close to reinstall suse, but think it should be possible to get this work. In case of reinstalling I probably would need a step-by-step guide how to set up bumblebee and cuda.

In any case I am wondering, as there are comments where bumblebee and several nvidia drivers are installed in parallel.
Let me try just to uninstall everything that shows up in yast with nvidia, restart, and follow the bumblebee guide once again.

Cheers.

Now that is something new…


optirun glspheres

[ERROR] Cannot access secondary GPU - error: [XORG] (EE) /dev/dri/card0: failed to set DRM interface version 1.4 Permission denied

I guess I give up and try a new install with LEAP.

If someone could provide a more (there is no) fool-proved step-by-step guide to get bumblebee and cuda running, that would be really appreciated.

You must install then uninstall the nvidia driver to be sure to remove ALL trace of the regular before adding the nvidia-bumblebee.

But reinstall is always an option if you get things too messed up for you to fix