Quadro 4000/CUDA compatability

SYSTEM INFO

  • Ubuntu 18.04.3 LTS
  • GPU: Quadro 4000
  • NVIDIA Driver: 390.129
  • CUDA Compilation Tools: 10.1, v10.1.243
  • CUDA Driver version: 9.1

ADDITIONAL INFO

$ lspci | grep -i nvidia
05:00.0 VGA compatible controller: NVIDIA Corporation GF100GL [Quadro 4000] (rev a1)
05:00.1 Audio device: NVIDIA Corporation GF110 High Definition Audio Controller (rev a1)

QUESTION
I was following the linux installation guide (https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html) for CUDA. When I get to the post installation actions and run deviceQuery, I get the following error:

$ ./deviceQuery
./NVIDIA_CUDA-10.1_Samples/bin/x86_64/linux/release/deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL

From what I can gather, the installed NVIDIA driver I have is the correct one for my GPU but it is possible that the version of CUDA is not correct. I read on here that for this GPU CUDA 8 is supported, but I’m not sure if that is the road I need to go down. The error points to an insufficient CUDA driver version but I am not sure which version I need to replace it with. Any thoughts would be most welcome. Thanks in advance!

Quadro 4000 has compute capability 2.0 (Fermi architecture). CUDA 8 was the last CUDA version to support this, Fermi was flagged as deprecated in that CUDA version.

However, at some point in the past few years Fermi support has also been removed from NVIDIA’s drivers. So a modern driver does not know what to do with this ancient hardware (from about 2010). CUDA always ships with a matching driver in the installer, so the easiest way to try and use this GPU would be to install CUDA 8 and make sure the check box for also installing the included driver is ticked.

Drivers for CUDA 8 that include Fermi support would likely be in the 36x.yy or 37x.yy range. Your 390.yy driver is matched up with CUDA 9.x.

Currently, I am trying to install CUDA 8 using the run files from the website (https://developer.nvidia.com/cuda-80-ga2-download-archive). Since I am running Ubuntu 18.04.3, and the latest version of Ubuntu supported for CUDA 8 is 16.04, I selected that box on the website.

I’m now getting that the driver installs but not CUDA toolkit (see log below).

$ cat /var/log/nvidia-installer.log
nvidia-installer log file '/var/log/nvidia-installer.log'
creation time: Wed Nov 13 16:27:16 2019
installer version: 375.26

PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

nvidia-installer command line:
    ./nvidia-installer
    --ui=none
    --no-questions
    --accept-license
    --disable-nouveau
    --dkms
    --run-nvidia-xconfig

Using built-in stream user interface
-> Detected 8 CPUs online; setting concurrency level to 8.
-> License accepted by command line option.
-> Installing NVIDIA driver version 375.26.
-> There appears to already be a driver installed on your system (version: 375.26).  As part of installing this driver (version: 375.26), the existing driver will be uninstalled.  Are you sure you want to continue? (Answer: Continue installation)
-> Running distribution scripts
   executing: '/usr/lib/nvidia/pre-install'...
-> done.
-> The distribution-provided pre-install script failed!  Are you sure you want to continue? (Answer: Continue installation)
WARNING: One or more modprobe configuration files to disable Nouveau are already present at: /etc/modprobe.d/nvidia-installer-disable-nouveau.conf.  Please be sure you have rebooted your system since these files were written.  If you have rebooted, then Nouveau may be enabled for other reasons, such as being included in the system initial ramdisk or in your X configuration file.  Please consult the NVIDIA driver README and your Linux distribution's documentation for details on how to correctly disable the Nouveau kernel driver.
-> For some distributions, Nouveau can be disabled by adding a file in the modprobe configuration directory.  Would you like nvidia-installer to attempt to create this modprobe file for you? (Answer: Yes)
-> One or more modprobe configuration files to disable Nouveau have been written.  For some distributions, this may be sufficient to disable Nouveau; other distributions may require modification of the initial ramdisk.  Please reboot your system and attempt NVIDIA driver installation again.  Note if you later wish to reenable Nouveau, you will need to delete these files: /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
-> Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later. (Answer: Yes)
-> Installing both new and classic TLS OpenGL libraries.
-> Installing both new and classic TLS 32bit OpenGL libraries.
-> Install NVIDIA's 32-bit compatibility libraries? (Answer: Yes)
-> Will install GLVND GLX client libraries.
-> Will install GLVND EGL client libraries.
-> Skipping GLX non-GLVND file: "libGL.so.375.26"
-> Skipping GLX non-GLVND file: "libGL.so.1"
-> Skipping GLX non-GLVND file: "libGL.so"
-> Skipping EGL non-GLVND file: "libEGL.so.375.26"
-> Skipping EGL non-GLVND file: "libEGL.so"
-> Skipping EGL non-GLVND file: "libEGL.so.1"
-> Skipping GLX non-GLVND file: "./32/libGL.so.375.26"
-> Skipping GLX non-GLVND file: "libGL.so.1"
-> Skipping GLX non-GLVND file: "libGL.so"
-> Skipping EGL non-GLVND file: "./32/libEGL.so.375.26"
-> Skipping EGL non-GLVND file: "libEGL.so"
-> Skipping EGL non-GLVND file: "libEGL.so.1"
-> Uninstalling the previous installation with /usr/bin/nvidia-uninstall.
Looking for install checker script at ./libglvnd_install_checker/check-libglvnd-install.sh
   executing: '/bin/sh ./libglvnd_install_checker/check-libglvnd-install.sh'...
   Checking for libglvnd installation.
   Checking libGLdispatch...
   Checking libGLdispatch dispatch table
   Checking call through libGLdispatch
   All OK
   libGLdispatch is OK
   Checking for libGLX
   libGLX is OK
   Checking entrypoint library libOpenGL.so.0
   Checking call through libGLdispatch
   Checking call through library libOpenGL.so.0
   All OK
   Entrypoint library libOpenGL.so.0 is OK
   Checking entrypoint library libGL.so.1
   Checking call through libGLdispatch
   Checking call through library libGL.so.1
   All OK
   Entrypoint library libGL.so.1 is OK
   libglvnd appears to be installed.
Will not install libglvnd libraries.
-> Skipping GLVND file: "libOpenGL.so.0"
-> Skipping GLVND file: "libOpenGL.so"
-> Skipping GLVND file: "libGLESv1_CM.so.1"
-> Skipping GLVND file: "libGLESv1_CM.so"
-> Skipping GLVND file: "libGLESv2.so.2"
-> Skipping GLVND file: "libGLESv2.so"
-> Skipping GLVND file: "libGLdispatch.so.0"
-> Skipping GLVND file: "libGLX.so.0"
-> Skipping GLVND file: "libGLX.so"
-> Skipping GLVND file: "libGL.so.1.0.0"
-> Skipping GLVND file: "libGL.so.1"
-> Skipping GLVND file: "libGL.so"
-> Skipping GLVND file: "libEGL.so.1"
-> Skipping GLVND file: "libEGL.so"
-> Skipping GLVND file: "./32/libOpenGL.so.0"
-> Skipping GLVND file: "libOpenGL.so"
-> Skipping GLVND file: "./32/libGLdispatch.so.0"
-> Skipping GLVND file: "./32/libGLESv2.so.2"
-> Skipping GLVND file: "libGLESv2.so"
-> Skipping GLVND file: "./32/libGLESv1_CM.so.1"
-> Skipping GLVND file: "libGLESv1_CM.so"
-> Skipping GLVND file: "./32/libGL.so.1.0.0"
-> Skipping GLVND file: "libGL.so.1"
-> Skipping GLVND file: "libGL.so"
-> Skipping GLVND file: "./32/libGLX.so.0"
-> Skipping GLVND file: "libGLX.so"
-> Skipping GLVND file: "./32/libEGL.so.1"
-> Skipping GLVND file: "libEGL.so"
Will install libEGL vendor library config file to /usr/share/glvnd/egl_vendor.d
-> Searching for conflicting files:
-> done.
-> Installing 'NVIDIA Accelerated Graphics Driver for Linux-x86_64' (375.26):
   executing: '/sbin/ldconfig'...
-> done.
-> Driver file installation is complete.
-> Installing DKMS kernel module:
ERROR: Failed to run `/usr/sbin/dkms build -m nvidia -v 375.26 -k 4.15.0-70-generic`:
Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...
'make' -j8 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=4.15.0-70-generic modules.....(bad exit status: 2)
ERROR (dkms apport): binary package for nvidia: 375.26 not found
Error! Bad return status for module build on kernel: 4.15.0-70-generic (x86_64)
Consult /var/lib/dkms/nvidia/375.26/build/make.log for more information.
-> error.
ERROR: Failed to install the kernel module through DKMS. No kernel module was installed; please try installing again without DKMS, or check the DKMS logs for more information.
ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.  You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

I’m not sure how to fix this, but I’ll give the deb files a shot. Any advice is much appreciated!

So that’s the Ubuntu version you would want to use.

If this were my Quadro 4000, I would carry it to an approved e-waste recycler of my choice, then hop on the internet to buy a modern GPU.