在一般情况下,任何特定的CUDA版本都需要一个最低的GPU驱动程序版本。这些信息可以在
这里和
这里(表格1)等地方找到。因此,要使用CUDA 9.0,您需要至少具备支持CUDA 9.0的GPU驱动程序版本,例如R384驱动程序。要使用CUDA 10.0,您需要至少具备支持CUDA 10.0的GPU驱动程序版本,例如R410驱动程序。
容器的使用并不会从根本上改变这一点。如果您想使用包含CUDA 10代码的容器,则您的基本机器需要具备支持CUDA 10的驱动程序。
NVIDIA开始发布兼容性库,以允许修改上述语句。这些兼容性库可用,但不会默认安装在CUDA工具包中。这些兼容性库仅在某些情况下起作用,并且有一定的可用要求。这些兼容性库的文档在
这里。
这些兼容性库的具体要求之一是使用的GPU必须是Tesla品牌的GPU。不支持使用GeForce、Quadro、Jetson和Titan系列的GPU。
此外,这些库只能与基础机器上安装的某些CUDA工具包版本和GPU驱动程序版本的组合配合使用。这个“兼容性矩阵”在
这里(表3)有记录。只有特定的CUDA工具包版本与已安装的驱动程序版本的组合才可用于兼容性。举个例子,如果您想使用CUDA 10.0,并且您的基础机器上安装了一个带有R396驱动程序的Tesla GPU,则没有兼容性支持。然而,在相同的设置中,如果您想使用CUDA 10.1,则有兼容性支持。
如果您已满足兼容性使用的要求,则剩下的步骤是安装兼容性库(
或从已安装兼容性库的基础容器构建您的容器)。
对于包管理器CUDA安装方法,安装兼容性库的方法很简单(以在Ubuntu上安装CUDA 10.1兼容性以匹配CUDA 10.1工具包安装为例)。
sudo apt-get install cuda-compat-10.1
请确保将版本与您使用的CUDA工具包版本匹配(使用包管理器方法安装或已在容器中安装)。
此兼容性“路径”仅始于CUDA 9.0时间范围内。配备CUDA 9.0之前驱动程序的系统将无法以任何方式用于此兼容性路径。还有各种功能限制和限制,这些限制在
文档中介绍。
当正确安装并使用此“兼容性路径”时,整个系统配置可以“看起来”违反了本答案顶部指示的规则。例如,CUDA 10.1应用程序可能正在运行仅安装了R396驱动程序的机器上。
针对此问题,OP最终指出基础机器具有Quadro GPU,因此此“兼容性路径”不适用,例如,运行CUDA 10.0容器的唯一方法是在基础机器上安装CUDA 10.0兼容的驱动程序,例如R410或更高版本驱动程序。