2016-03-08 3 views
4

Я пытаюсь профилировать код CUDA, встроенный в файл mex, вызываемый из MATLAB. Запуск на win7 x64 машине, MATLAB r2014bПрофилирование приложений MATLAB mex CUDA с визуальным профилировщиком NVIDIA

Код структурирована следующим образом:

MATLAB test.m 
    ->contains some standard code generating variables (and calling 1 or 2 minor own MATLAB fucntions) 
    -> calls testcuda.mex 
     ->contains small, standard, no library C++ code 
     -> calls either test1.cu or test2.cu 
       ->.cu files end in cudaDeviceReset(); 

я сделал следующее, как указано в several places в интернете:

  1. Составитель MEX файлы. Проверьте их. Они работают.
  2. Добавить exit в конце испытания.m.
  3. Запустите визуальный профайлер NVIDIA. Файл -> Новая сессия.
  4. добавить полный путь к исполняемому файлу Matlab, например C:\Program Files\MATLAB\R2014b\bin\matlab.exe
  5. Рабочий каталог: добавьте полный путь к файлу Matlab .m. C:\CUDA_MATLABtests\MyToolbox
  6. Аргументы: -nojvm -nosplash -r test

Однако, когда я запускаю профайлер, я получаю

======== Warning: No CUDA application was profiled, exiting 

И ничего больше.

У меня нет инструкции?

Есть ли какая-либо конкретная структура кода, которая сделает профилировщик не профилированным?

+0

Я думаю, что на шаге 4 вы должны использовать 'C: \ Program Files \ MATLAB \ R2014b \ bin \ win64 \ matlab.exe'. Или попробуйте использовать параметр '-wait'. – Daniel

+0

@ Даниэль действительно .... папка win64, какая глупая ошибка. Будучи MATLAB уже в Program Files, а не в Program Files x86, я думал, что это уже 64-разрядная версия. Подумайте об этом. –

ответ

4

Установка Matlab поставляется с двумя бинарниками, пусковой установкой в ​​<matlabroot>\bin и основным приложением в <matlabroot>\bin\<arch>. Более поздний - исполняемый файл, который также выполняет функции mex в его адресном пространстве.

  • Когда инструмент отладки должен запускать приложение напрямую, вы должны запустить его в <matlabroot>\bin\<arch>.
  • Когда инструмент отладки автоматически присоединяется к дочерним процессам, обычно достаточно запустить двоичный код в <matlabroot>\bin, задав параметр -wait. Увидев, что приложение приложения запуска завершено, инструменты отладки часто останавливаются.

Не используйте двоичный код в <matlabroot>\bin\<arch> непосредственно, если вам не нужно.

Смежные вопросы