Трассировка nvprof gpu в метрическом режиме не дает подробностей для каждого вызова

Я реализовал SVD с помощью функции PyTorch SVD GPU, и я использую nvprof для профилирования.

--print-gpu-trace дает мне отдельные вызовы ядра, отсортированные в хронологическом порядке, которые я использую для определения сетки и размера блока. Это дает мне полный список вызовов.

nvprof --print-gpu-summary svd.py

--print-gpu trace в режиме метрики для конкретного ядра дает мне метрику для вызова ядра. Например (ядро slaset_full_kernel)

nvprof --print-gpu-summary --kernels slaset_full_kernel --metrics warp_execution_efficiency svd.py

Для ядра "slaset_full_kernel" в общем списке вызовов я вижу около 12 вызовов с разными размерами сетки для "slaset_full_kernel".

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

Device           Context   Stream   Kernel   warp_execution_efficiency %`                                                                                                
  Tesla K80 (0)     1        16  slaset_full_kernel(i      100.00
  Tesla K80 (0)     1        16  slaset_full_kernel(i      100.00
  Tesla K80 (0)     1        16  slaset_full_kernel(i       99.85
  Tesla K80 (0)     1        16  slaset_full_kernel(i      100.00
  Tesla K80 (0)     1        16  slaset_full_kernel(i       99.86
  Tesla K80 (0)     1        16  slaset_full_kernel(i       99.86

Это одинаково для всех ядер при профилировании в метрическом режиме. Существует только сводка метрик для половины вызовов. Почему это происходит? Как создать сопоставление между вызовом ядра и сводкой метрик, если я не получаю метрики для всех вызовов ядра? Правильно ли я понял это?

0 ответов

Другие вопросы по тегам