【问题标题】:How to run GPGPU inside docker image with different from host kernel and GPU driver version如何在与主机内核和 GPU 驱动程序版本不同的 docker 映像中运行 GPGPU
【发布时间】:2016-01-12 17:54:22
【问题描述】:

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

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

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

附:我尝试了this answer(使用 Nvidia 卡),不幸的是,docker 映像中的deviceQuery 没有看到任何 CUDA 设备(因为它发生在一些原始答案的评论者身上)......

P.P.S.我的设置:

  1. CPU:英特尔至强 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

【问题讨论】:

  • 我很确定特定机器上的所有 docker 容器 must use the same kernel 作为主机。您可以在 Arch Linux 设置上运行 Ubuntu“映像”,但它们必须使用相同的内核(主机内核)。我认为您关于 docker 映像中的 deviceQuery 的问题是一个单独的问题。我不清楚这是一个编程问题。
  • 一些应用程序强烈依赖于内核版本(因此也依赖于功能)。那么如何共享内核(如果它们非常不同)?我是否应该运行与主​​机操作系统相同的“映像”操作系统?我认为至少在 DevOps 意义上这是一个编程问题。

标签: docker gpu gpgpu


【解决方案1】:

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

【讨论】:

  • 所以,你的回答是:“这不可能”,是真的吗?
  • 根据您想要运行不同内核的要求;是的
猜你喜欢
  • 2019-03-01
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多