如何在与主机内核和GPU驱动程序版本不同的docker镜像内运行GPGPU

时间:2015-10-14 14:56:39

标签: docker gpu gpgpu

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

我的目标是使用相当旧的Ubuntu和相当旧的AMD视频驱动程序(13.04)设置docker镜像。原因很简单:升级到更新版本的驱动程序会破坏我的OpenCL程序(由于有缺陷的AMD Linux驱动程序)。

所以问题如下。是否可以在新的Arch Linux设置上使用旧的Ubuntu,旧内核(例如3.14)和旧的AMD(fglrx)驱动程序运行docker镜像,其中包含新的内核4.2和更新的AMD(fglrx)驱动程序存储库

P.S。我尝试了this answer(使用Nvidia卡片),遗憾的是deviceQuery在docker image中没有看到任何CUDA设备(正如原始答案的一些评论员所发生的那样)......

P.P.S。我的设置:

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

    • 1 x 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 x GeForce GTX Titan Black

1 个答案:

答案 0 :(得分:2)

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