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
Дан