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

如何在docker映像中运行不同于主机内核和GPU驱动程序版本的GPGPU,docker,gpu,gpgpu,Docker,Gpu,Gpgpu,我有一台有几个GPU的机器。我的想法是将它们附加到不同的docker实例,以便在CUDA(或OpenCL)计算中使用这些实例 我的目标是使用非常旧的Ubuntu和非常旧的AMD视频驱动程序(13.04)设置docker映像。原因很简单:升级到新版本的驱动程序将破坏我的OpenCL程序(由于有bug的AMD linux驱动程序) 所以问题如下。在存储库中使用新内核4.2和更新的AMD(fglrx)驱动程序的全新Arch Linux安装程序上,是否可以使用旧Ubuntu、旧内核(例如3.14)和旧A

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

我的目标是使用非常旧的Ubuntu和非常旧的AMD视频驱动程序(13.04)设置docker映像。原因很简单:升级到新版本的驱动程序将破坏我的OpenCL程序(由于有bug的AMD linux驱动程序)

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

另外,我尝试过(使用Nvidia卡),但不幸的是,
deviceQuery
在docker图像内部没有看到任何CUDA设备(正如一些原始答案的评论所发生的那样)

p.p.S.我的设置:

  • CPU:英特尔至强E5-2670
  • 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。如果您的设置支持Intel的VT-d,则可以将GPU作为PCIe设备传递给容器(在本例中,更好的术语是虚拟机)。

    我非常确定特定机器上的所有docker容器都作为主机。您可以在Arch Linux安装程序上运行Ubuntu“映像”,但它们必须使用相同的内核(主机内核)。我认为您关于docker映像中deviceQuery的问题是另一个问题。我不清楚这是否是一个编程问题。一些应用程序强烈依赖于内核版本(因此也依赖于功能)。那么,如何才能共享内核(如果它们非常不同的话)?我应该运行与主机操作系统相同的“映像”操作系统,这是真的吗?我认为至少在DevOps的意义上,这是一个相当复杂的编程问题。所以,你的答案是:“这是不可能的”,是真的吗?基于你想要运行不同内核的需要;对