Ubuntu install specific old cuda drivers combo

So I did some testing, and it does look like there is ever so slightly a way around this with the right combination.

I did a test of all the versions of cuda and all versions of cuda-drivers in the repo as of this morning, after the latest drivers were added.

for cudaver in $(apt list cuda -a 2>/dev/null | awk '{print $2}' | xargs) ; do for driverver in $(apt list cuda-drivers -a 2>/dev/null | awk '{print $2}' | xargs) ; do echo $cudaver $driverver ; sudo apt-get install cuda=$cudaver cuda-drivers=$driverver --dry-run 2>&1 > /dev/null ; echo $? ; done ; done

I’m just taking the exit code, 0 works, 100 doesn’t.

DRIVER/CUDA 515.43.04-1 510.47.03-1 510.39.01-1 495.29.05-1 470.129.06-1 470.103.01-1 470.82.01-1 470.57.02-1 470.42.01-1 465.19.01-1 460.106.00-1 460.91.03-1 460.73.01-1 460.32.03-1 460.27.04-1 455.45.01-1 455.32.00-1 455.23.05-1 450.191.01-1 450.172.01-1 450.156.00-1 450.142.00-1 450.119.04-1 450.119.03-1 450.102.04-1 450.80.02-1 450.51.06-1 450.51.05-1
11.7.0-1 TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.6.2-1 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.6.1-1 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.6.0-1 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.5.2-1 TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.5.1-1 TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.5.0-1 TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.4.4-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.4.3-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.4.2-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.4.1-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.4.0-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.3.1-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.3.0-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.2.2-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.2.1-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.2.0-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.1.1-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.1.0-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.0.3-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
11.0.2-1 TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

I tested this against my snapshotted repo, which was taken after the 11.7.0 release, but before this latest legacy driver release, and results are the same, except that from R470,R660,R455,R450, shift the release one minor release previous in the chart, because the newer version has not usurped the latest version in my snapshotted mirror, here.

So, it does appear that it is possible to install the requisite “legacy” cuda+drivers, with the correct knowledge of what to install, which is this decoder ring of compatibility for cuda11.X+drivers

cuda/drivers R515 R510 R495 R470 R465 R460 R455 R450
11.7.0-1 515.43.04-1
11.6.2-1 515.43.04-1 510.47.03-1
11.5.2-1 515.43.04-1 510.47.03-1 495.29.05-1
11.4.4-1 515.43.04-1 510.47.03-1 495.29.05-1 470.129.06-1
11.3.1-1 515.43.04-1 510.47.03-1 495.29.05-1 470.129.06-1 465.19.01-1
11.2.2-1 515.43.04-1 510.47.03-1 495.29.05-1 470.129.06-1 465.19.01-1 460.106.00-1
11.1.1-1 515.43.04-1 510.47.03-1 495.29.05-1 470.129.06-1 465.19.01-1 460.106.00-1 455.45.01-1
11.0.3-1 515.43.04-1 510.47.03-1 495.29.05-1 470.129.06-1 465.19.01-1 460.106.00-1 455.45.01-1 450.191.01-1

Feels like it could included int he documentation somewhere for "If needing to install older cuda/drivers, sudo apt-get install cuda=$cudaver cuda-drivers=$driverver and explicitly state to use the cuda-drivers package, rather than the cuda-drivers-XYZ package, which intuitively feels like the correct package to install to get a specific driver version.

I imagine this could help user163220, so instead of apt-get install -y cuda-10-1, he should be doing apt-get install -y cuda=10.1.243-1 cuda-drivers=418.226.00-1, if I am reading the cuda-copmpatability page correctly.

So, in conclusion, it does appear that this is possible to achieve after all without a snapshotted repo, which is great news, its just (as far as I have found) poorly documented on how to actually achieve it, it feels like it should fall under Advanced Setup, because this would be a non-standard deployment, but the Driver Installation docuementation pretty well contradicts my findings here for installing an older branch with the cuda package(s).

You just need to know the right incantations to chant to be able to install a working install for something with deprecated compute capabilities, and I hope that maybe someone will find this helpful, and maybe it can make it into the documentation, because I doubt that I was the first, nor will I be the last to fall victim to this.

I guess to be the most succinct I was thinking that there should be something akin to:
To install a specific older driver, do:

Driver Command
R510 sudo apt-get install cuda=11.6.2-1 cuda-drivers=510.47.03-1
R495 sudo apt-get install cuda=11.5.2-1 cuda-drivers=495.29.05-1
R470 sudo apt-get install cuda=11.4.4-1 cuda-drivers=470.129.06-1
R465 sudo apt-get install cuda=11.3.1-1 cuda-drivers=465.19.01-1
R460 sudo apt-get install cuda=11.2.2-1 cuda-drivers=460.106.00-1
R455 sudo apt-get install cuda=1.1.1-1 cuda-drivers=455.45.01-1
R450 sudo apt-get install cuda=11.0.3-1 cuda-drivers=450.191.01-1

This is only for 20.04/focal, and also only for ubuntu/debian (apt) package manager, I’m sure there must be a similar yum/dnf/zypper method for accomplishing the same thing, but I’ll leave that to someone more experienced in that ecosystem to come up with that.

6 Likes