代码之家  ›  专栏  ›  技术社区  ›  Å imon Tóth

限制对Cuda和OpenCL资源的访问

  •  2
  • Å imon Tóth  · 技术社区  · 14 年前

    我们想扩展批处理系统以支持GPU计算。

    对于GPU,这意味着每个作业都独占地声明一个GPU(当请求一个GPU时)。

    据我所知,在乔布斯之间共享GPU是一个非常糟糕的主意(因为乔布斯的GPU部分可能会被随机杀死)。

    /dev/ 使用 cgroups 但我想,这还不够。

    理想状态是,如果作业只看到它请求的尽可能多的GPU,而其他作业无法访问这些GPU。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Tom    14 年前

    目前有两个相关机制:

    • 使用nvidia smi将设备设置为独占模式,这样,一旦进程有一个GPU,就没有其他进程可以附加到同一个GPU。
    • 使用CUDA U VISIBLE U DEVICES变量来限制进程在查找GPU时看到的GPU。

    后者当然会受到虐待,但这只是一个开始。

    据我所知,在乔布斯之间共享GPU是一个非常糟糕的主意(因为乔布斯的GPU部分可能会被随机杀死)。

        2
  •  1
  •   Edric    14 年前

    我相信有两件事可以帮助NVIDIA CUDA GPU:

    1. 通过 nvidia-smi 工具
    2. 指示用户使用除 cudaSetDevice ,如 "Best Practices Guide"

    我不知道如何为OpenCL实现这一点。

        3
  •  0
  •   big_gie    13 年前

    它支持nvidia(gpu)、amd(gpu&cpu)、intel(cpu)和apple(gpu&cpu)。

    有独占访问的锁定机制。但这不是最好的。我还在寻找更好的解决办法。基本上,它用/tmp中使用的platform+设备保存一个文件。

    这是我们在实验室中使用的。它可以在GPLv3下找到,并可以在github上找到: https://github.com/nbigaouette/oclutils/