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

pet*_*hka 15 gpu gpgpu docker

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

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

所以问题是如下.是否可以使用旧的Ubuntu,旧内核(例如3.14)和旧的AMD(fglrx)驱动程序在新的Arch Linux安装程序中运行docker镜像,并fglrx在存储库中安装新的内核4.2和更新的AMD()驱动程序?

PS我尝试了这个答案(使用Nvidia卡),不幸的是deviceQuery在docker图像中没有看到任何CUDA设备(因为它发生了一些原始答案的评论员)...

PPS我的设置:

  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]
      
      Run Code Online (Sandbox Code Playgroud)
    • 2 x GeForce GTX Titan Black

hbo*_*ert 2

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