如何在Docker镜像中运行GPGPU,与主机内核和GPU驱动版本不同

我有几台GPU的机器。 我的想法是将它们附加到不同的docker实例,以便在CUDA(或OpenCL)计算中使用该实例。

我的目标是用相当古老的Ubuntu和相当老的AMDvideo驱动程序(13.04)来设置docker镜像。 原因很简单:升级到较新版本的驱动程序将打破我的OpenCL程序(由于错误的AMD Linux驱动程序)。

所以问题在于。 是否有可能运行新鲜的内核4.2和更新的AMD( fglrx )驱动程序在仓库中的旧Ubuntu,旧内核(例如3.14)和旧的AMD( fglrx )驱动程序的新鲜的Arch Linux安装程序的docker映像?

PS我试过这个答案 (与Nvidia卡),不幸的是deviceQuery图像内的deviceQuery没有看到任何CUDA设备(因为它发生在原来的答案一些评论者)…

PPS我的设置:

  1. CPU:Intel Xeon E5-2670
  2. GPU的:

    • 1个Radeon HD 7970

        $ lspci -nn | grep Rad 83:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] [1002:6798] 83:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series] [1002:aaa0] 
    • 2个GeForce GTX泰坦黑色

通过docker,您可以依靠操作系统级别的虚拟化。 这意味着你在所有容器中使用相同的内核。 如果您希望为每个容器运行不同的内核,则可能必须使用系统级虚拟化,例如KVM,VirtualBox。 如果您的设置支持英特尔的VT-d,则可以将GPU作为PCIe设备传递给容器(在这种情况下,更好的术语是虚拟机)。