Прерывистая ошибка CUDA с 2 x Tesla K40m на Ubuntu 18 - PullRequest
0 голосов
/ 23 апреля 2020

У меня чистая установка CUDA-10.1 на Ubuntu 18.04 LTS, безголовый сервер. Это вывод nvidia-smi:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.126.02   Driver Version: 418.126.02   CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K40m          On   | 00000000:82:00.0 Off |                 Off* |
| N/A   23C    P8    20W / 235W |      0MiB / 12206MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla K40m          On   | 00000000:C2:00.0 Off |                 Off* |
| N/A   22C    P8    19W / 235W |      0MiB / 12206MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Я скомпилирую следующую простую программу:


#include <cuda_runtime.h>

int main(void)
{
    cudaError_t err = cudaSuccess;

    float *buf = NULL;
    err = cudaMalloc((void **)&buf, 1000);

    if (err != cudaSuccess) {
        fprintf(stderr, "Failed to allocate device memory (error code %s)!\n", cudaGetErrorString(err));

        return EXIT_FAILURE;
    }

    err = cudaFree(buf);

    if (err != cudaSuccess) {
        fprintf(stderr, "Failed to free device memory (error code %s)!\n", cudaGetErrorString(err));

        return EXIT_FAILURE;
    }

    return EXIT_FAILURE;
}

Затем я запускаю ее несколько раз вручную, и она периодически дает сбой:

afeldman@apollo:~/cuda$ ./test_cuda_malloc 
afeldman@apollo:~/cuda$ ./test_cuda_malloc 
Failed to allocate device memory (error code all CUDA-capable devices are busy or unavailable)!
afeldman@apollo:~/cuda$ ./test_cuda_malloc 
Failed to allocate device memory (error code all CUDA-capable devices are busy or unavailable)!
afeldman@apollo:~/cuda$ ./test_cuda_malloc 
Failed to allocate device memory (error code all CUDA-capable devices are busy or unavailable)!
afeldman@apollo:~/cuda$ ./test_cuda_malloc 
afeldman@apollo:~/cuda$ ./test_cuda_malloc 
Failed to allocate device memory (error code all CUDA-capable devices are busy or unavailable)!
afeldman@apollo:~/cuda$ 

Я проверил много выводов nvidia-smi, /var/log/kern и /var/log/syslog, и нет ничего, что могло бы помочь мне отследить проблему. Отключение одной из карт не помогло. Хост не используется во время этих экспериментов, и нет ничего, что использует NVidias.

Какие действия предпринимаются для устранения этого прерывистого сбоя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...