Внутренняя ошибка Memcheck: Ошибка инициализации Memcheck при подключении профилировщика

Я всегда использовал cuda-memcheck под Windows 7.

К сожалению, на моем ноутбуке я получаю следующее сообщение об ошибке:

========= Internal Memcheck Error: Memcheck failed initialization as profiler is attached. Try unsetting CUDA_PROFILE or disabling the profiler.
=========     Saved host backtrace up to driver entry point at error
=========     Host Frame:C:\windows\system32\nvcuda.dll (cuD3D11CtxCreate + 0x103dbd) [0x11fe1d]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x5eb2) [0xdaf2]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x600d) [0xdc4d]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x6576) [0xe1b6]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (_cudaRegisterDeviceFunction + 0x3609) [0xb249]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll [0x3137]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\cudart32_55.dll (cudaMalloc + 0xb5) [0x152d5]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\StackOverflow.exe (main + 0x59) [0x2289]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\StackOverflow.exe (__tmainCRTStartup + 0x1bf) [0xa3ef]
=========     Host Frame:C:\Users\user\Documents\Project\StackOverflow\Debug\StackOverflow.exe (mainCRTStartup + 0xf) [0xa21f]
=========     Host Frame:C:\windows\syswow64\KERNEL32.dll (BaseThreadInitThunk + 0x12) [0x1336a]
=========     Host Frame:C:\windows\SysWOW64\ntdll.dll (RtlInitializeExceptionChain + 0x63) [0x39f72]
=========     Host Frame:C:\windows\SysWOW64\ntdll.dll (RtlInitializeExceptionChain + 0x36) [0x39f45]
=========
========= ERROR SUMMARY: 1 error

Я проверял существование переменной среды CUDA_PROFILE, но она не определена ни как система, ни как пользовательская переменная. Я все равно поставил

Set @CUDA_PROFILE = 0

но без эффекта. Я использую CUDA 5.5.

Я попытался использовать cuda-memcheck также в других двух системах, системе 4 -GPU, NVIDIA K20c и системе, имеющей единственную плату Tesla C2050. На первом у меня такая же проблема, на последнем cuda-memcheck отлично работает.

Тот факт, что ошибка говорит о прикрепленном профиле, заставляет меня думать, что проблема может быть связана с вложениями Visual Studio для обработки, которые я ранее делал на двух машинах, cuda-memcheck не работает. cuda-memcheck машина cuda-memcheck, которая была недавно установлена. Тем не менее, я проверил, что NSIGHT_CUDA_DEBUGGER переменной NSIGHT_CUDA_DEBUGGER используемой для такого типа вложений, установлено значение 0. Также. Я не мог обнаружить какой-либо видимый процесс, который все еще может быть привязан к отладчику.

Может ли кто-нибудь предложить какой-либо намек на решение проблемы?

Заранее спасибо за любую помощь.

+2
11 окт. '13 в 17:02
источник поделиться
2 ответа

При возникновении проблемы с cuda-memcheck моя системная переменная среды COMPUTE_PROFILE была установлена в 1. Я должен был просто установить значение 0 для cuda-memcheck работы cuda-memcheck. Кстати, я должен поблагодарить @Vjas за предложение проверить nvprof --profile-all-processes которые жаловались на настройку CUDA_PROFILE. Я решил проблему на своем ноутбуке и в системе Kepler, установив COMPUTE_PROFILE=0.

У меня сегодня нет доступа к системе Tesla, на которой правильно работала cuda-memcheck, чтобы проверить настройку COMPUTE_PROFILE. Я обновлю этот ответ, как только у меня появится такая информация.

РЕДАКТИРОВАТЬ

Я проверил, что переменная окружения COMPUTE_PROFILE не была определена в системе, где cuda-memcheck изначально работал.

+2
12 окт. '13 в 20:19
источник

Я столкнулся с аналогичным с CUDA 6.5 и 7.0. Сообщение об ошибке было несколько более общим (что может быть связано с другой версией - я не уверен в этом). Он сказал

Внутренняя ошибка Memcheck: инициализация с ошибкой Memcheck, поскольку некоторые другие инструменты в настоящее время подключены. Убедитесь, что nvprof и Nsight Visual Studio Edition не запускаются одновременно

(Конечно, в это время не было другого инструмента).

Установка COMPUTE_PROFILE окружения COMPUTE_PROFILE в 0 не помогла. (Вообще-то, для меня это вообще не было).

Наконец, я понял, что странное поведение было вызвано другими переменными среды: Инструментарий/профилировщик, очевидно, устанавливает две дополнительные переменные среды во время установки:

CUDA_INJECTION32_PATH=C:\Program Files (x86)\NVIDIA Corporation\Nsight Visual Studio Edition 4.1\Monitor\Common\Injection32\Nvda.Cuda.Injection.dll
CUDA_INJECTION64_PATH=C:\Program Files (x86)\NVIDIA Corporation\Nsight Visual Studio Edition 4.1\Monitor\Common\Injection64\Nvda.Cuda.Injection.dll

Я не уверен, что они делают (скорее всего, они устанавливают некоторый "крючок", необходимый для профилирования). В любом случае: удаление этих переменных среды (или установка их пустым путем выполнения

set CUDA_INJECTION32_PATH=
set CUDA_INJECTION64_PATH=

в командной строке, где CUDA-memcheck должен быть запущен) вызывается CUDA-memcheck работать должным образом снова.

ОБНОВИТЬ

Я получал ту же ошибку на моих машинах Windows 2008 R2 и Windows 7 с графическими процессорами GeForce GTX 780. Хотя описанная выше процедура работала для меня, я обнаружил, что переменные среды CUDA_INJECTION32_PATH и CUDA_INJECTION64_PATH добавляются и устанавливаются Nsight Monitor, когда ее настройка "CUDA-> Использовать этот монитор для подключения CUDA" соответствует true пользователем.

Чтобы исправить проблему инициализации CUDA- memcheck, я просто отключил настройку "CUDA-> Использовать этот монитор для подключения CUDA" в мониторе Nsight. Это удалило переменные среды CUDA_INJECTION32_PATH и CUDA_INJECTION64_PATH. После этого я открыл новый сеанс командной строки для перезагрузки новых переменных среды и протестировал, что CUDA- memcheck работал правильно.

+3
19 мая '15 в 19:05
источник

Посмотрите другие вопросы по меткам или Задайте вопрос