Как остановить сбой Matlab при (неправильном) выполнении mex-файла с функциональностью CUDA - PullRequest
7 голосов
/ 12 мая 2011

В настоящее время я разрабатываю mex-файл с функциональностью CUDA для использования в MATLAB. Когда я делаю что-то не так (например, неверные указатели или что-то в этом роде), MATLAB всегда вылетает (Windows предлагает мне завершить работу, отправить отчет для математических работ или попытку продолжить). Есть ли способ предотвратить это? Это действительно раздражает, когда я так развиваюсь, но, как вы, вероятно, знаете сами: вряд ли кто-то может написать идеальный код без «проб и ошибок» ... Пока спасибо!

Ответы [ 3 ]

4 голосов
/ 12 мая 2011

Насколько я знаю, нет способа предотвратить сбой Matlab при ошибке mex.Но вы можете присоединить отладчик к процессу Matlab и пройтись по коду.

Я точно знаю, что это работает, если ваш код находится во внешней dll, которую вы загружаете в Matlab.Я не уверен, что это работает с mex файлами.

3 голосов
/ 13 мая 2011

со страницы файла Matlab MEX ,

mex -g yourmexfile.c

если вы этого еще не сделали.

1 голос
/ 08 октября 2013

Вы можете отладить мексфайлы Matlab, включая коды CUDA, используя Visual Studio и NVIDIA Nsight для Visual Studio , выполнив следующую процедуру.

  1. Определите системную переменную среды NSIGHT_CUDA_DEBUGGER и установите для нее 1 .
  2. Запуск Matlab .
  3. Запустить NVIDIA Nsight . Щелкните правой кнопкой мыши значок Nsight Monitor на панели задач и выберите Параметры . Выберите вкладку CUDA. Для параметра Использовать этот монитор для подключения CUDA , щелкните раскрывающееся меню и выберите True .
  4. Откройте ваш проект в Visual Studio, установите точки останова и скомпилируйте его.
  5. Перейти к Инструменты -> Присоединить к процессу .
  6. Щелкните раскрывающееся меню рядом с полем Transport и выберите Nsight GPU Debugger .
  7. Убедитесь, что имя вашего хост-компьютера указано в поле Qualifier . Обратите внимание, что это поле пустое по умолчанию; вам придется вручную выбрать имя вашего компьютера при первом открытии этого диалогового окна.
  8. Когда вы вводите имя хоста вашего компьютера в поле Qualifier, в диалоговом окне появится список доступных процессов. Процессы, которые могут быть связаны с использованием CUDA, будут отображаться с CUDA, указанным в столбце Тип Если процесс выделен серым цветом и CUDA указан в столбце Тип , он уже отлаживается, поэтому его невозможно подключить. Процессы, выделенные серым цветом без CUDA в столбце Тип , указывают на то, что они не используются в CUDA в отлаживаемом процессе. Процессы, которые могут быть прикреплены, будут отображаться нормально, и кнопка Attach будет включена.
  9. Убедитесь, что Matlab имеет CUDA в столбце Тип и выберите его.
  10. Из командной строки Matlab вызвать функцию, определенную в мексфайле CUDA. Затем выполнение остановится на первой точке останова, и отладка может начаться.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...