当主机具有CUDA 9时,我可以使用CUDA 10运行Docker容器吗?

时间:2019-07-13 00:45:32

标签: docker cuda nvidia-docker

我将应用程序部署在需要CUDA 10的docker容器中。这对于运行应用程序使用的某些基础pytorch功能是必需的。

但是,主机服务器正在运行带有CUDA版本9的docker ce 17,Nvidia-docker v 1.0,我将无法升级主机。

给人的印象是,我被主机上可用的v1 nvidia docker运行时和CUDA版本所束缚。

是否可以在容器上运行CUDA 10,以便我可以利用此工具包的功能?

1 个答案:

答案 0 :(得分:2)

在一般情况下,任何特定的CUDA版本都将要求最低的GPU驱动程序版本。 herehere(表1)等地方对此进行了说明。因此,要使用CUDA 9.0,您至少需要一个支持CUDA 9.0的GPU驱动程序版本,例如R384驱动程序。要使用CUDA 10.0,您至少需要一个支持CUDA 10.0的GPU驱动程序版本,例如R410驱动程序。

容器的使用并不能从根本上改变这一点。如果要使用其中包含CUDA 10代码的容器,则您的基础计算机需要支持CUDA 10的驱动程序。

NVIDIA确实开始发布允许对上述声明进行修改的兼容性库。这些兼容性库可用,但默认情况下未随CUDA工具包安装一起安装。这些兼容性库仅在某些情况下有效,并且具有某些要求才能使用。兼容性库记录在here中。

使用这些兼容性库的特定要求之一是,所使用的GPU必须是Tesla品牌的GPU。这些兼容性库不支持GeForce,Quadro,Jetson和Titan系列GPU。

此外,这些库仅与CUDA工具包版本和基础计算机上安装的GPU驱动程序版本的特定组合一起使用。 here记录了此“兼容性矩阵”(表3)。只有CUDA工具包版本与已安装的驱动程序版本的特定组合才能用于兼容性。举一个例子,如果您希望使用CUDA 10.0,并且您的主机上安装了带有R396驱动程序的Tesla GPU,则不提供兼容性支持。但是,在同一设置中,如果您希望使用CUDA 10.1,则对此具有兼容性支持。

如果您满足兼容性使用的要求,那么剩下的步骤就是安装兼容性库(or build your container from a base container that has the compatibility libraries already installed)。

对于程序包管理器CUDA安装方法,安装兼容性库的方法很简单(例如在Ubuntu上,安装CUDA 10.1兼容性以匹配CUDA 10.1工具包的安装):

sudo apt-get install cuda-compat-10.1

请确保该版本与您正在使用的CUDA工具包版本(使用程序包管理器方法安装或已安装在容器中)相匹配。

此兼容性“路径”仅在CUDA 9.0时间范围内开始。配备有早于CUDA 9.0的驱动程序的系统无法以任何方式用于此兼容性路径。 documentation中还涵盖了各种功能限制。

正确安装并使用此“兼容性路径”后,整个系统配置可能“出现”,从而违反了此答案顶部指示的规则。例如,CUDA 10.1应用程序可能在仅安装了R396驱动程序的计算机上运行。

对于此处提出的具体问题,OP最终表示该主机具有Quadro GPU,因此该“兼容路径”不适用,并且是运行例如Windows XP的唯一方法。如果在基础计算机中安装了具有CUDA 10.0功能的驱动程序,则为CUDA 10.0容器。 R410或更高版本的驱动程序。