получить время выполнения в nvprof - PullRequest
0 голосов
/ 24 сентября 2018

Есть ли способ получить время выполнения ядра в nvprof как для метрики?

Например, чтобы получить транзакции чтения драм, я набираю:

nvprof --metrics dram_read_transactions ./myprogram

Мой вопрос: есть ли что-то вроде

nvprof --metrics execution_time ./myprogram

Я бы хотел собрать небольшой набор метрик в одной командной строке вместо того, чтобы использовать

nvprof ./myprogram

в качестве отдельной команды.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вам следует прочитать этот пост в блоге nVIDIA "CUDA Pro Tip":

CUDA Pro Совет: nvprof - ваш удобный универсальный профилировщик графических процессоров

Он проведет вас черезнекоторые основы того, как использовать nvprof для профилирования и определения времени вашего приложения.В частности, если вы напишите что-то вроде:

nvprof --print-gpu-trace ./nbody --benchmark -numdevices=2 -i=1

(пример для симулятора задачи физики n-тела), ваш вывод будет содержать что-то вроде следующего:

...
==4125== Profiling application: ./nbody --benchmark -numdevices=2 -i=1
==4125== Profiling result:
   Start  Duration            Grid Size      Block Size     Regs*    SSMem*    DSMem*      Size  Throughput           Device   Context    Stream  Name
260.78ms     864ns                    -               -         -         -         -        4B  4.6296MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]
260.79ms     960ns                    -               -         -         -         -        4B  4.1667MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]
260.93ms     896ns                    -               -         -         -         -        4B  4.4643MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]
260.94ms     672ns                    -               -         -         -         -        4B  5.9524MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]
268.03ms  1.3120us                    -               -         -         -         -        8B  6.0976MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]
268.04ms     928ns                    -               -         -         -         -        8B  8.6207MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]
268.19ms     864ns                    -               -         -         -         -        8B  9.2593MB/s   Tesla K20c (0)         2         2  [CUDA memcpy HtoD]
268.19ms     800ns                    -               -         -         -         -        8B  10.000MB/s  GeForce GTX 680         1         2  [CUDA memcpy HtoD]
274.59ms  2.2887ms             (52 1 1)       (256 1 1)        36        0B  4.0960KB         -           -   Tesla K20c (0)         2         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [242]
274.67ms  981.47us             (32 1 1)       (256 1 1)        36        0B  4.0960KB         -           -  GeForce GTX 680         1         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [257]
276.94ms  2.3146ms             (52 1 1)       (256 1 1)        36        0B  4.0960KB         -           -   Tesla K20c (0)         2         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [275]
276.99ms  979.36us             (32 1 1)       (256 1 1)        36        0B  4.0960KB         -           -  GeForce GTX 680         1         2  void integrateBodies(vec4::Type*, vec4::Type*, vec4::Type*, unsigned int, unsigned int, float, float, int) [290]

, которыйэто время всех ваших ядер.

Также полезно запустить nvprof --help и потратить 5-10 минут на чтение параметров;например, вы найдете переключатель для печати вашей трассировки в формате CSV, если вы хотите обработать ее в сценарии.

0 голосов
/ 05 октября 2018

Я полагаю, вы ищете: nvprof --print-gpu-trace ./myprogram

...