我正在部署一个需要CUDA 10的docker容器中的应用程序。这是运行应用程序使用的一些底层pytorch功能所必需的。
但是,主机服务器运行的是docker ce 17,Nvidia-docker v1.0和CUDA版本9,我将无法升级主机。
我的印象是,我被主机上可用的v1 nvidia docker运行时和CUDA版本所束缚。
有没有办法在容器上运行CUDA 10,这样我就可以利用这个工具包的功能了?
发布于 2019-07-14 07:10:41
一般情况下,任何特定的CUDA版本都需要最低的GPU驱动程序版本。这在here和here等地方都有介绍(表1)。因此,要使用CUDA9.0,您至少需要一个支持CUDA9.0的GPU驱动程序版本,例如R384驱动程序。要使用CUDA10.0,您至少需要一个支持CUDA10.0的GPU驱动程序版本,例如R410驱动程序。
容器的使用并没有从根本上改变这一点。如果要使用包含CUDA 10代码的容器,则您的基础计算机需要支持CUDA 10的驱动程序。
NVIDIA确实开始发布兼容性库,允许对上述声明进行修改。这些兼容性库可用,但默认情况下不随CUDA工具包一起安装。这些兼容性库仅在某些情况下有效,并且它们有一定的使用要求。兼容性库记录在here中。
使用这些兼容性库的具体要求之一是,使用的GPU必须是特斯拉品牌的GPU。这些兼容性库不支持GeForce、Quadro、Jetson和Titan系列GPU。
此外,这些库仅适用于安装在基础计算机上的CUDA工具包版本和GPU驱动程序版本的特定组合。此“兼容性矩阵”记录在here中(表3)。只有CUDA工具包版本与已安装驱动程序版本的特定组合才可用于兼容性。举个例子,如果你想使用CUDA10.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中还介绍了各种功能限制和约束。
如果正确安装并使用了此“兼容路径”,则整个系统配置可能“看起来”违反了此答案顶部指示的规则。例如,CUDA10.1应用程序可能运行在只安装了R396驱动程序的机器上。
对于这里所看到的特定问题,OP最终指出基础计算机有一个Quadro GPU,因此这个“兼容路径”不适用,并且运行例如CUDA10.0容器的唯一方法是在基础计算机上安装支持CUDA10.0的驱动程序,例如R410或更高版本的驱动程序。
https://stackoverflow.com/questions/57015346
复制相似问题