CULA multiGPU.c

Я пытаюсь запустить пример multiGPU в CULA, но получаю следующую ошибку. Кто-то попробовал пример и сумел заставить его работать? У меня есть два графических процессора на борту.

[xxxx @ xxxxxxxxxx multiGPU] $./multiGPU Найдено 2 устройства, будет запущено 2 потока

Поток 0 - Запущенный поток 0 - Привязка к устройству 0 Поток 1 - Запущенный поток 1 - Привязка к устройству 1 Поток 0 - Ошибка CUDA: устройство с эксклюзивной нитью уже используется другим потоком (см. Руководство программиста) Поток 1 - Распределение матриц Поток 1 - Инициализация потока CULA 1 - Вызов потока culaSgeqrf 1 - Выключение CULA

Тема 0 - Не удалось

1 ответ

Решение

Я смог воспроизвести эту проблему, установив режим вычисления в системе с 2 графическими процессорами на EXCLUSIVE_PROCESS и запустив пример multiGPU из CULA.

Проблема заключается в том, что процесс multiGPU становится связанным с GPU и препятствует доступу одного из потоков, порожденных pthreads к этому GPU, что приводит к указанным сообщениям об ошибках (Ошибка CUDA: устройство с эксклюзивным потоком уже используется другим потоком).

Одним из решений этой проблемы является перевод графических процессоров в режим вычисления "По умолчанию", чтобы они могли быть доступны нескольким потокам одновременно.

# nvidia-smi -c 0

Программу также можно запускать на устройствах с графическим процессором в вычислительном режиме EXCLUSIVE_PROCESS, но необходимо использовать многопроцессную службу CUDA (MPS). Этот демон будет управлять процессами на устройстве, чтобы порожденные процессы взаимодействовали с устройством, как если бы он находился в режиме вычислений DEFAULT. Для меня программа работала правильно, когда демон MPS работал для конфликтующего устройства. Инструкции по запуску демона можно найти в приложении к документации MPS.

https://docs.nvidia.com/deploy/pdf/CUDA_Multi_Process_Service_Overview.pdf

Дан

Другие вопросы по тегам