Multiple NVidia graphics cards in Ubuntu

Two NVidia GTX/GT graphics cards + two monitors + Intel motherboard + Ubuntu 12.04 + 64 bit Nvidia driver + CUDA installation

Disconnect the secondary one of the two monitors.

Select the primary video adaptor in BIOS setup. If the BIOS persists not to change the order, try to change it to automatic or something else, then to change it to manual with your favoured order in the next reboot.

This ensures that you have POST messages and tty1–6 consoles displayed in your primary graphics card correctly.

Update xorg.conf. nvidia-settings can do it for you. Ensure that:
you have a “Device” section which identifies correctly the graphics card you want to use for X11.
This will have your X11 server use the graphics card you want.

Install the graphics card driver in the following order.

Download the suitable graphics card driver and the CUDA toolkit in the following pages, both the .run installers.

EDIT: Check which version of gcc was used to build the kernel:

cat /proc/version

Set compiler version the same as that used to compile kernel:

sudo update-alternatives --config gcc

or

export CC=/usr/bin/gcc-x.x

If you’re in GUI environment, press ctrl-alt-F1 to change to a tty console.

Stop X server:

sudo service lightdm stop

Remove the old NVidia driver:

sudo apt-get remove nvidia-*

Remove the nouveau driver which causes problems with maya and potentially with other software:

sudo apt-get remove xserver-xorg-video-nouveau

If you installed the driver without using apt-get you may need:

sudo /usr/bin/nvidia-uninstall

Remove the NVidia kernel module:

sudo dkms remove -m nvidia -v <version> --all

To identify the kernel module that’s running:

lsmod | grep nvidia
find /lib/modules | grep nvidia

To get more info about the kernel module:

modinfo <module name>

nvidia apt-get uninstaller removes kernel modules, so better reboot before checking it.

Install the driver—run the downloaded graphics card driver (the .run file):

sudo sh ./NVIDIA-Linux-x86_64-<version>.run

After installing the driver, remove xorg.conf file:

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

Set your gcc version back if you had to change it for the driver compilation:

sudo update-alternatives --config gcc

Reboot:

sudo reboot

Install CUDA—run the downloaded CUDA toolkit .run installer:

sudo sh ./cuda_<version>_linux_64.run

During the installation, do not install the driver, but only the CUDA toolkit and sample code.

After the installation add path and library path.

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

Connect the second monitor.

Failed to run `/usr/sbin/dkms add -m nvidia -v 331.20 -k 3.2.0-57-generic`: Error! DKMS tree already contains: nvidia-331.20 You cannot add the same module/version combo more than once.

References:
http://ubuntuforums.org/archive/index.php/t-2020648.html
http://ubuntuforums.org/showthread.php?t=1036788
http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html#runfile-installation

Advertisements
Multiple NVidia graphics cards in Ubuntu

missing nvidia-settings after driver update

After the update of the driver to enable CUDA for the NVidia graphics cards of my Ubuntu box, nvidia-settings seemed to disappear. Trying to install it didn’t help as it apparently is already installed!

$ nvidia-settings
nvidia-settings: command not found
$ sudo apt-get install nvidia-settings
Reading package lists... Done
Building dependency tree
Reading state information... Done
nvidia-settings is already the newest version.
The following packages were automatically installed and are no longer required:
linux-headers-3.2.0-29 linux-headers-3.2.0-29-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

It turned out that it actually is there, but the link is broken as it used to be linked to the binary in some version-specific directory. Fixing the broken link made it work now.

$ find /usr -name nvidia-settings
/usr/lib/nvidia-settings
/usr/lib/nvidia-settings/bin/nvidia-settings
/usr/bin/nvidia-settings
/usr/share/doc/nvidia-settings
$ ls -l /usr/bin/nvidia-settings
lrwxrwxrwx 1 root root 33 Aug 22 12:45 /usr/bin/nvidia-settings -> /etc/alternatives/nvidia_settings
$ ls -l /etc/alternatives/nvidia_settings*
lrwxrwxrwx 1 root root 48 Aug 22 12:45 /etc/alternatives/nvidia_settings -> /usr/lib/nvidia-settings-304/bin/nvidia-settings
lrwxrwxrwx 1 root root 39 Aug 22 12:45 /etc/alternatives/nvidia_settings_conf -> /usr/lib/nvidia-settings-304/ld.so.conf
$ sudo ln -sf /usr/lib/nvidia-settings/bin/nvidia-settings /etc/alternatives/nvidia_settings
$ sudo ln -sf /usr/lib/nvidia-settings/ld.so.conf /etc/alternatives/nvidia_settings_conf
$ ls -l /etc/alternatives/nvidia_settings*
lrwxrwxrwx 1 root root 44 Sep 26 16:41 /etc/alternatives/nvidia_settings -> /usr/lib/nvidia-settings/bin/nvidia-settings
lrwxrwxrwx 1 root root 35 Sep 26 16:42 /etc/alternatives/nvidia_settings_conf -> /usr/lib/nvidia-settings/ld.so.conf
missing nvidia-settings after driver update