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

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

3 ответов


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

mex-g yourmexfile.c

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


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

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


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

  1. определите системную переменную окружающей среды NSIGHT_CUDA_DEBUGGER и установить его в 1.
  2. запуск Matlab.
  3. запуск NVIDIA Nsight. Щелкните правой кнопкой мыши значок монитора Nsight на панели задач и выберите опции. Выбирать в разделе соты. Для опции используйте этот монитор для CUDA attach нажмите на выпадающем меню и выберите True.
  4. откройте проект в Visual Studio, установите точки останова и скомпилируйте его.
  5. на инструменты ->присоединить к процессу.
  6. нажмите раскрывающееся меню рядом с транспорт поле, и выберите отладчик GPU Nsight.
  7. убедитесь, что имя хост-компьютера указан в спецификатор