【问题标题】:CUDA MPS servers fail to start on workstation with multiple GPUsCUDA MPS 服务器无法在具有多个 GPU 的工作站上启动
【发布时间】:2016-07-01 02:42:13
【问题描述】:

编辑:我试图通过使用它们的 UUID 而不是它们的 ID 来枚举有效的 GPU,这会导致事情正常工作。

它似乎仍在看到 GT 610,尽管我认为它不应该。这就是它不起作用的原因。


我的一台机器上的 cuda MPS 遇到问题。

这台机器有 4 个 Tesla K80,以及一个(编辑:)不支持 MPS 的 GT610

这是 nvidia-smi:

riveale@coiworkstation1:~/code/psweep2/src$ nvidia-smi
Tue Mar 15 23:51:59 2016       
+------------------------------------------------------+                       
| NVIDIA-SMI 352.63     Driver Version: 352.63         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 610      Off  | 0000:01:00.0     N/A |                  N/A |
| 40%   29C    P8    N/A /  N/A |      3MiB /  1021MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla K80           Off  | 0000:04:00.0     Off |                    0 |
| N/A   29C    P8    26W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+
|   2  Tesla K80           Off  | 0000:05:00.0     Off |                    0 |
| N/A   24C    P8    30W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+
|   3  Tesla K80           Off  | 0000:08:00.0     Off |                    0 |
| N/A   34C    P8    27W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+
|   4  Tesla K80           Off  | 0000:09:00.0     Off |                    0 |
| N/A   28C    P8    29W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+
|   5  Tesla K80           Off  | 0000:84:00.0     Off |                    0 |
| N/A   31C    P8    28W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+
|   6  Tesla K80           Off  | 0000:85:00.0     Off |                    0 |
| N/A   26C    P8    30W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+
|   7  Tesla K80           Off  | 0000:88:00.0     Off |                    0 |
| N/A   31C    P8    26W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+
|   8  Tesla K80           Off  | 0000:89:00.0     Off |                    0 |
| N/A   25C    P8    31W / 149W |     55MiB / 11519MiB |      0%   E. Process |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
+-----------------------------------------------------------------------------+

如您所见,我已经将处理器设置为独占进程。

我可以只使用第一个 GPU 运行健全性检查,启动 MPS 服务器等,如下所示:

export CUDA_VISIBLE_DEVICES="0"
export CUDA_MPS_PIPE_DIRECTORY=/tmp/nvidia-mps
export CUDA_MPS_LOG_DIRECTORY=/tmp/nvidia-log
nvidia-cuda-mps-control -d

然后我运行我的脚本:

NRANKS=4
mpirun -n $NRANKS gputest.exe

这成功运行,我在 /tmp/nvidia-log/server.log 中看到:

riveale@coiworkstation1:~/code/psweep2/src$ cat /tmp/nvidia-log/server.log 
[2016-03-15 23:57:07.883 Other  6957] Start
[2016-03-15 23:57:08.513 Other  6957] New client 6956 connected
[2016-03-15 23:57:08.513 Other  6957] New client 6954 connected
[2016-03-15 23:57:08.514 Other  6957] New client 6955 connected

但是,当我尝试在系统上使用超过 1 个 GPU 时,我遇到了问题。具体来说,如下(完全相同,但现在我有 2 个可见的 CUDA 设备):

export CUDA_VISIBLE_DEVICES="0,1"
export CUDA_MPS_PIPE_DIRECTORY=/tmp/nvidia-mps
export CUDA_MPS_LOG_DIRECTORY=/tmp/nvidia-log
nvidia-cuda-mps-control -d

(ps ax | grep mps 显示守护进程正常启动,与上面的工作示例没有区别)。 其次是:

NRANKS=7
mpirun -n $NRANKS gputest.exe

我明白了:

riveale@coiworkstation1:~/code/psweep2/src$ cat /tmp/nvidia-log/server.log 
[2016-03-15 23:59:55.718 Other  7102] Start
[2016-03-15 23:59:56.301 Other  7102] MPS server failed to start
[2016-03-15 23:59:56.301 Other  7102] MPS is only supported on 64-bit Linux platforms, with an SM 3.5 or higher GPU.
[2016-03-15 23:59:56.727 Other  7105] Start
[2016-03-15 23:59:57.302 Other  7105] MPS server failed to start
[2016-03-15 23:59:57.302 Other  7105] MPS is only supported on 64-bit Linux platforms, with an SM 3.5 or higher GPU.
[2016-03-15 23:59:57.718 Other  7107] Start
[2016-03-15 23:59:58.291 Other  7107] MPS server failed to start
[2016-03-15 23:59:58.291 Other  7107] MPS is only supported on 64-bit Linux platforms, with an SM 3.5 or higher GPU.
[2016-03-15 23:59:58.709 Other  7109] Start
[2016-03-15 23:59:59.236 Other  7109] MPS server failed to start
[2016-03-15 23:59:59.236 Other  7109] MPS is only supported on 64-bit Linux platforms, with an SM 3.5 or higher GPU.
[2016-03-15 23:59:59.644 Other  7111] Start
[2016-03-16 00:00:00.215 Other  7111] MPS server failed to start
[2016-03-16 00:00:00.215 Other  7111] MPS is only supported on 64-bit Linux platforms, with an SM 3.5 or higher GPU.
[2016-03-16 00:00:00.651 Other  7113] Start
[2016-03-16 00:00:01.221 Other  7113] MPS server failed to start
[2016-03-16 00:00:01.221 Other  7113] MPS is only supported on 64-bit Linux platforms, with an SM 3.5 or higher GPU.

很奇怪。

提前感谢您的任何帮助/想法。

另一个奇怪的是,完全相同的东西在我的另一个工作站上工作,它具有相同的设置,只是它使用的是 Quadro K620 而不是 GT610。 K620 是一个 CUDA 设备,所以我觉得这就是问题所在。现在我很远程,所以我无法切换卡片来查看是否会改变问题。

【问题讨论】:

  • GT610 CUDA supported device,它可能会打乱您的方法(尽管我不希望 CUDA 在任何 K80 GPU 之前枚举它),因为它计算能力小于3.5。作为诊断,在执行export CUDA_VISIBLE_DEVICES="0,1" 之后,运行deviceQuery 示例代码。如果 GT610 出现在输出中,那就是问题所在。 Quadro K620 OTOH 虽有命名,但它是 Maxwell 设备,计算能力为 5.0,因此在相同情况下不会触发该错误。你在这两种情况下都使用 CUDA 7.5 吗?
  • 嗨罗伯特,是的,这两台机器在其他方面是完全相同的机器,安装了完全相同的软件,包括 cuda 7.5。我没有运行 deviceQuery,但是我根据 MPS 文档得出了与您所做的相同的结论,其中提到了小宝石:“如果在应用 CUDA_VISIBLE_DEVICES 后不兼容的设备可见,则 MPS 服务器将无法启动。”
  • Robert,正如我在编辑中提到的,我通过使用 GPU UUID 而不是普通的 ID 0,1 事物进行枚举来使其工作。不知何故让它发挥了作用。
  • 要将问题标记为已解决,请将您的解决方案作为答案发布并接受。
  • 是的,它不会让我在 2 天内这样做,所以我在此期间标记了它。

标签: cuda mpi nvidia


【解决方案1】:

正如编辑中所标记的,解决方案是使用 cc >3.5 GPU 的 UUID 并将 CUDA_VISIBLE_DEVICES 设置为该值。似乎无论出于何种原因,即使设备 0 正确地是 K80 之一,但出于某种原因,将显示设备(610 等)列为设备 #1,而不是我预期的最后一个设备。

例如:

riveale@coiworkstation0:~$ nvidia-smi -L
GPU 0: Quadro K620 (UUID: GPU-1685f2e0-0f3a-fef1-c94c-00bf21afeb24)
GPU 1: Tesla K80 (UUID: GPU-9e8b10fb-8005-24c7-b7aa-5795c39b4c15)
GPU 2: Tesla K80 (UUID: GPU-3d917409-02ae-079b-3941-bacd9570b8c6)
GPU 3: Tesla K80 (UUID: GPU-8faf997f-67a1-b729-6205-1da501a39470)
GPU 4: Tesla K80 (UUID: GPU-99da7098-9e60-d67a-c5c8-de52e4b30c30)

riveale@coiworkstation0:~$ export CUDA_VISIBLE_DEVICES="GPU-9e8b10fb-8005-24c7-b7aa-5795c39b4c15,GPU-3d917409-02ae-079b-3941-bacd9570b8c6,GPU-8faf997f-67a1-b729-6205-1da501a39470,GPU-99da7098-9e60-d67a-c5c8-de52e4b30c30"

在每个节点/机器上启动上述 nvidia-cuda-mps-control -d 脚本之前,我必须这样做。

事实证明 MPS 很慢(MPS 服务器占用大量 CPU),所以我决定不使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2019-02-17
    • 1970-01-01
    相关资源
    最近更新 更多