Ubuntu 16.04LTS; SuiteSparse 4.5.5; CUDA 8.0.61 (с повышением производительности); Водитель Nvidia 384,98;
У меня был ускоренный графический процессор CHOLMOD, успешно внедренный в мой код и работающий в течение нескольких месяцев. Недавно, совершенно неожиданно (без изменений в исходном коде), я начал видеть эти ошибки в своем выводе:
GPU failure in cholmod_gpu: gpu_memorysize 8.38861e+06 0 MB
CHOLMOD error: gpu memorysize failure
. file: ../GPU/cholmod_gpu.c line: 384
CHOLMOD error: CUBLAS initialization. file: ../GPU/cholmod_gpu.c line: 433
CHOLMOD error: cudaMemcpy(d_Ls). file: ../Supernodal/../GPU/t_cholmod_gpu.c line: 129
CHOLMOD error: CUDA stream. file: ../Supernodal/../GPU/t_cholmod_gpu.c line: 140
Я подозревал, что сторонняя библиотека обновилась без присмотра. Но мой тест CHOLMOD / Demo / cholmod_l_demo (с экспортом CHOLMOD_USE_GPU = 1) доказывает, что сам CHOLMOD работает отлично и использует полный графический процессор (мониторинг активности с помощью nvidia-smi). Точно так же Cuda / samples все работают просто отлично. Я очистил и переустановил все, включая Cuda, драйверы Nvidia и SuiteSparse. Я пробовал различные комбинации Cuda 8.0 и Cuda 9.0. Безрезультатно, Cuda / samples и CHOLMOD / Demos по-прежнему работают отлично, но моя реализация CHOLMOD выдает ту же ошибку.
Я отследил проблему до функции cudaMemGetInfo (). По какой-то причине он сообщает 0 доступных байтов на GPU, что приводит к первой ошибке (gpu_memorysize)! Похоже, что оставшиеся ошибки касаются первой. Эта ошибка не происходит в скрипте CHOLMOD / Demo / cholmod_l_demo, что говорит о том, что с моей реализацией что-то не так. Тем не менее, я ничего не изменил в моей реализации. Кто-нибудь есть идеи, почему cudaMemGetInfo () будет сообщать 0 доступных байтов? Я думаю, что ответ на этот вопрос поможет мне найти решение.
Я просмотрел мою историю автоматических обновлений, и, похоже, у меня были обновлены некоторые linux-заголовки и драйверы nvidia примерно в то время, когда я начал видеть ошибки. Но я не уверен, что виновато обновление драйвера nvidia, поскольку CHOLMOD / Demo / cholmod_l_demo работает отлично. Так что я подозреваю, что это может быть проблемой с linux-заголовками …
Моя реализация распределена по нескольким файлам, поэтому, возможно, стоит взглянуть на Github совершить. Но, как я уже упоминал, я не изменил ни один из исходных файлов по сравнению с тем, когда ускорение GPU CHOLMOD работало последние пару месяцев.
Любые предложения с благодарностью!
Причина, по которой cudaMemGetInfo () сообщала о 0 свободных байтах, заключалась в том, что у моей программы не было исполняемых прав на libcublas и libcudart. Как только я запускаю свою программу с предшествующим ему sudo, запускается графический процессор, и CHOLMOD работает так же, как и несколько недель назад.
Я не уверен, что ядро изменило привилегии, или требуются новые привилегии для определенных установок .so. Это немного загадки. Но решение состоит в том, чтобы использовать «sudo» для запуска программы.
Других решений пока нет …