Можно ли программно определить, работает ли профилировщик CUDA? - PullRequest
2 голосов
/ 07 марта 2019

Проблема, которую я пытаюсь решить. В большинстве наших приложений командной строки, когда они запускаются из Visual Studio, мы хотим заставить пользователя нажать клавишу для выхода, чтобы мы могли видеть вывод в Visual Studio во время отладки.

Это не работает с профилированием. Один из способов исправить это - определить, запущен ли профилировщик.

API для профилировщика CUDA довольно ограничен: https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__PROFILER.html

Кажется, для поддержки:

  • Инициализация cudaProfilerInitialize
  • Начиная с cudaProfilerStart
  • Остановка cudaProfilerStop

Но нет способа определить, действительно ли он работает?

1 Ответ

3 голосов
/ 10 марта 2019

Ну, некрасивое и, несомненно, неоптимальное решение - просто поиск nvprof среди запущенных процессов ...

В Linux вы можете сделать это с помощью readproc():

#include <proc/readproc.h>

proc_t* readproc(PROCTAB *PT, proc_t *return_buf);

Для получения дополнительной информации о том, как использовать функции в readproc.h, посмотрите:

Как работает команда ps?

на SuperUser.comи особенно на этот ответ .

Примечание: Не забудьте, что nvprof может работать, но не профилировать ваш процесс.

...